summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
Diffstat (limited to 'target')
-rw-r--r--target/arm/bcm28xx/patches/4.1.6/0001-raspberry-pi-github.patch (renamed from target/arm/bcm28xx/patches/4.1.6/0001-xbian.patch)35401
1 files changed, 20985 insertions, 14416 deletions
diff --git a/target/arm/bcm28xx/patches/4.1.6/0001-xbian.patch b/target/arm/bcm28xx/patches/4.1.6/0001-raspberry-pi-github.patch
index 318706994..ce089a8cd 100644
--- a/target/arm/bcm28xx/patches/4.1.6/0001-xbian.patch
+++ b/target/arm/bcm28xx/patches/4.1.6/0001-raspberry-pi-github.patch
@@ -1,328 +1,276 @@
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708_common.dtsi linux-xbian-rpi/arch/arm/boot/dts/bcm2708_common.dtsi
---- linux-4.1.3/arch/arm/boot/dts/bcm2708_common.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2708_common.dtsi 2015-07-28 01:20:58.166151930 +0200
-@@ -0,0 +1,287 @@
-+/include/ "skeleton.dtsi"
-+
-+/ {
-+ interrupt-parent = <&intc>;
-+
-+ aliases {
-+ audio = &audio;
-+ sound = &sound;
-+ soc = &soc;
-+ dma = &dma;
-+ intc = &intc;
-+ watchdog = &watchdog;
-+ random = &random;
-+ mailbox = &mailbox;
-+ gpio = &gpio;
-+ uart0 = &uart0;
-+ i2s = &i2s;
-+ spi0 = &spi0;
-+ i2c0 = &i2c0;
-+ uart1 = &uart1;
-+ mmc = &mmc;
-+ i2c1 = &i2c1;
-+ i2c2 = &i2c2;
-+ usb = &usb;
-+ leds = &leds;
-+ fb = &fb;
-+ vchiq = &vchiq;
-+ thermal = &thermal;
-+ clocks = &clocks;
-+ };
-+
-+ /* Onboard audio */
-+ audio: audio {
-+ compatible = "brcm,bcm2835-audio";
-+ brcm,pwm-channels = <8>;
-+ status = "disabled";
-+ };
-+
-+ /* External sound card */
-+ sound: sound {
-+ };
-+
-+ soc: soc {
-+ compatible = "simple-bus";
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+
-+ dma: dma@7e007000 {
-+ compatible = "brcm,bcm2835-dma";
-+ reg = <0x7e007000 0xf00>;
-+ interrupts = <1 16>,
-+ <1 17>,
-+ <1 18>,
-+ <1 19>,
-+ <1 20>,
-+ <1 21>,
-+ <1 22>,
-+ <1 23>,
-+ <1 24>,
-+ <1 25>,
-+ <1 26>,
-+ <1 27>,
-+ <1 28>;
+diff -Nur linux-4.1.6/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 linux-rpi/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00
+--- linux-4.1.6/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/Documentation/ABI/stable/sysfs-driver-w1_ds28ea00 2015-08-26 10:26:04.449256090 +0200
+@@ -0,0 +1,6 @@
++What: /sys/bus/w1/devices/.../w1_seq
++Date: Apr 2015
++Contact: Matt Campbell <mattrcampbell@gmail.com>
++Description: Support for the DS28EA00 chain sequence function
++ see Documentation/w1/slaves/w1_therm for detailed information
++Users: any user space application which wants to communicate with DS28EA00
+diff -Nur linux-4.1.6/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt linux-rpi/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt
+--- linux-4.1.6/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt 2015-08-17 05:52:51.000000000 +0200
++++ linux-rpi/Documentation/devicetree/bindings/dma/brcm,bcm2835-dma.txt 2015-08-26 10:26:04.513256993 +0200
+@@ -48,8 +48,8 @@
+
+ bcm2835_i2s: i2s@7e203000 {
+ compatible = "brcm,bcm2835-i2s";
+- reg = < 0x7e203000 0x20>,
+- < 0x7e101098 0x02>;
++ reg = < 0x7e203000 0x24>,
++ < 0x7e101098 0x08>;
+
+ dmas = <&dma 2>,
+ <&dma 3>;
+diff -Nur linux-4.1.6/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt linux-rpi/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt
+--- linux-4.1.6/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt 2015-08-17 05:52:51.000000000 +0200
++++ linux-rpi/Documentation/devicetree/bindings/sound/brcm,bcm2835-i2s.txt 2015-08-26 10:26:04.549257500 +0200
+@@ -16,8 +16,8 @@
+
+ bcm2835_i2s: i2s@7e203000 {
+ compatible = "brcm,bcm2835-i2s";
+- reg = <0x7e203000 0x20>,
+- <0x7e101098 0x02>;
++ reg = <0x7e203000 0x24>,
++ <0x7e101098 0x08>;
+
+ dmas = <&dma 2>,
+ <&dma 3>;
+diff -Nur linux-4.1.6/Documentation/video4linux/bcm2835-v4l2.txt linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt
+--- linux-4.1.6/Documentation/video4linux/bcm2835-v4l2.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt 2015-08-26 10:26:04.645258854 +0200
+@@ -0,0 +1,60 @@
+
-+ #dma-cells = <1>;
-+ brcm,dma-channel-mask = <0x7f35>;
-+ };
++BCM2835 (aka Raspberry Pi) V4L2 driver
++======================================
+
-+ intc: interrupt-controller {
-+ compatible = "brcm,bcm2708-armctrl-ic";
-+ reg = <0x7e00b200 0x200>;
-+ interrupt-controller;
-+ #interrupt-cells = <2>;
-+ };
++1. Copyright
++============
+
-+ mailbox: mailbox@7e00b800 {
-+ compatible = "brcm,bcm2835-mbox";
-+ reg = <0x7e00b880 0x40>;
-+ interrupts = <0 1>;
-+ #mbox-cells = <0>;
-+ };
++Copyright © 2013 Raspberry Pi (Trading) Ltd.
+
-+ watchdog: watchdog@7e100000 {
-+ compatible = "brcm,bcm2835-pm-wdt";
-+ reg = <0x7e100000 0x28>;
-+ status = "disabled";
-+ };
++2. License
++==========
+
-+ random: rng@7e104000 {
-+ compatible = "brcm,bcm2835-rng";
-+ reg = <0x7e104000 0x10>;
-+ status = "disabled";
-+ };
++This program is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 2 of the License, or
++(at your option) any later version.
+
-+ gpio: gpio@7e200000 {
-+ compatible = "brcm,bcm2835-gpio";
-+ reg = <0x7e200000 0xb4>;
-+ interrupts = <2 17>, <2 18>;
++This program is distributed in the hope that it will be useful,
++but WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++GNU General Public License for more details.
+
-+ gpio-controller;
-+ #gpio-cells = <2>;
++You should have received a copy of the GNU General Public License
++along with this program; if not, write to the Free Software
++Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
-+ interrupt-controller;
-+ #interrupt-cells = <2>;
-+ };
++3. Quick Start
++==============
+
-+ uart0: uart@7e201000 {
-+ compatible = "arm,pl011", "arm,primecell";
-+ reg = <0x7e201000 0x1000>;
-+ interrupts = <2 25>;
-+ clocks = <&clk_uart0 &clk_apb_p>;
-+ clock-names = "uartclk","apb_pclk";
-+ arm,primecell-periphid = <0x00241011>; // For an explanation, see
-+ // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038
-+ status = "disabled";
-+ };
++You need a version 1.0 or later of v4l2-ctl, available from:
++ git://git.linuxtv.org/v4l-utils.git
+
-+ i2s: i2s@7e203000 {
-+ compatible = "brcm,bcm2708-i2s";
-+ reg = <0x7e203000 0x24>,
-+ <0x7e101098 0x08>;
++$ sudo modprobe bcm2835-v4l2
+
-+ //dmas = <&dma 2>,
-+ // <&dma 3>;
-+ dma-names = "tx", "rx";
-+ status = "disabled";
-+ };
++Turn on the overlay:
+
-+ spi0: spi@7e204000 {
-+ compatible = "brcm,bcm2835-spi";
-+ reg = <0x7e204000 0x1000>;
-+ interrupts = <2 22>;
-+ clocks = <&clk_core>;
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+ /* the dma channels */
-+ dmas = <&dma 6>, <&dma 7>;
-+ dma-names = "tx", "rx";
-+ /* the chipselects used - <0> means native GPIO
-+ * add more gpios if necessary as <&gpio 6 1>
-+ * (but do not forget to make them output!)
-+ */
-+ cs-gpios = <0>, <0>;
-+ };
++$ v4l2-ctl --overlay=1
+
-+ i2c0: i2c@7e205000 {
-+ compatible = "brcm,bcm2708-i2c";
-+ reg = <0x7e205000 0x1000>;
-+ interrupts = <2 21>;
-+ clocks = <&clk_i2c>;
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+ };
++Turn off the overlay:
+
-+ uart1: uart@7e215040 {
-+ compatible = "brcm,bcm2835-aux-uart", "ns16550";
-+ reg = <0x7e215040 0x40>;
-+ interrupts = <1 29>;
-+ clock-frequency = <500000000>;
-+ reg-shift = <2>;
-+ no-loopback-test;
-+ status = "disabled";
-+ };
++$ v4l2-ctl --overlay=0
+
-+ mmc: mmc@7e300000 {
-+ compatible = "brcm,bcm2835-mmc";
-+ reg = <0x7e300000 0x100>;
-+ interrupts = <2 30>;
-+ clocks = <&clk_mmc>;
-+ dmas = <&dma 11>,
-+ <&dma 11>;
-+ dma-names = "tx", "rx";
-+ status = "disabled";
-+ };
++Set the capture format for video:
+
-+ i2c1: i2c@7e804000 {
-+ compatible = "brcm,bcm2708-i2c";
-+ reg = <0x7e804000 0x1000>;
-+ interrupts = <2 21>;
-+ clocks = <&clk_i2c>;
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+ };
++$ v4l2-ctl --set-fmt-video=width=1920,height=1088,pixelformat=4
+
-+ i2c2: i2c@7e805000 {
-+ // Beware - this is shared with the HDMI module.
-+ // Careless use may break (really) your display.
-+ // Caveat emptor.
-+ compatible = "brcm,bcm2708-i2c";
-+ reg = <0x7e805000 0x1000>;
-+ interrupts = <2 21>;
-+ clocks = <&clk_i2c>;
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+ };
++(Note: 1088 not 1080).
+
-+ usb: usb@7e980000 {
-+ compatible = "brcm,bcm2708-usb";
-+ reg = <0x7e980000 0x10000>,
-+ <0x7e006000 0x1000>;
-+ interrupts = <2 0>,
-+ <1 9>;
-+ };
++Capture:
+
-+ firmware: firmware {
-+ compatible = "raspberrypi,bcm2835-firmware";
-+ mboxes = <&mailbox>;
-+ };
++$ v4l2-ctl --stream-mmap=3 --stream-count=100 --stream-to=somefile.h264
+
-+ leds: leds {
-+ compatible = "gpio-leds";
-+ };
++Stills capture:
+
-+ fb: fb {
-+ compatible = "brcm,bcm2708-fb";
-+ firmware = <&firmware>;
-+ status = "disabled";
-+ };
++$ v4l2-ctl --set-fmt-video=width=2592,height=1944,pixelformat=3
++$ v4l2-ctl --stream-mmap=3 --stream-count=1 --stream-to=somefile.jpg
+
-+ vchiq: vchiq {
-+ compatible = "brcm,bcm2835-vchiq";
-+ reg = <0x7e00b840 0xf>;
-+ interrupts = <0 2>;
-+ cache-line-size = <32>;
-+ firmware = <&firmware>;
-+ };
++List of available formats:
+
-+ thermal: thermal {
-+ compatible = "brcm,bcm2835-thermal";
-+ firmware = <&firmware>;
-+ };
-+ };
++$ v4l2-ctl --list-formats
+diff -Nur linux-4.1.6/Documentation/w1/slaves/w1_therm linux-rpi/Documentation/w1/slaves/w1_therm
+--- linux-4.1.6/Documentation/w1/slaves/w1_therm 2015-08-17 05:52:51.000000000 +0200
++++ linux-rpi/Documentation/w1/slaves/w1_therm 2015-08-26 10:26:04.653258968 +0200
+@@ -11,12 +11,14 @@
+ Description
+ -----------
+
+-w1_therm provides basic temperature conversion for ds18*20 devices.
++w1_therm provides basic temperature conversion for ds18*20 devices, and the
++ds28ea00 device.
+ supported family codes:
+ W1_THERM_DS18S20 0x10
+ W1_THERM_DS1822 0x22
+ W1_THERM_DS18B20 0x28
+ W1_THERM_DS1825 0x3B
++W1_THERM_DS28EA00 0x42
+
+ Support is provided through the sysfs w1_slave file. Each open and
+ read sequence will initiate a temperature conversion then provide two
+@@ -48,3 +50,10 @@
+ maximum current draw of 1.5mA and that a 5k pullup resistor is not
+ sufficient. The strong pullup is designed to provide the additional
+ current required.
+
-+ clocks: clocks {
-+ compatible = "simple-bus";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
++The DS28EA00 provides an additional two pins for implementing a sequence
++detection algorithm. This feature allows you to determine the physical
++location of the chip in the 1-wire bus without needing pre-existing
++knowledge of the bus ordering. Support is provided through the sysfs
++w1_seq file. The file will contain a single line with an integer value
++representing the device index in the bus starting at 0.
+diff -Nur linux-4.1.6/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig
+--- linux-4.1.6/arch/arm/Kconfig 2015-08-17 05:52:51.000000000 +0200
++++ linux-rpi/arch/arm/Kconfig 2015-08-26 10:26:04.685259419 +0200
+@@ -314,6 +314,42 @@
+ default ARCH_VERSATILE if !MMU
+ default ARCH_MULTIPLATFORM if MMU
+
++config ARCH_BCM2708
++ bool "Broadcom BCM2708 family"
++ select CPU_V6
++ select ARM_AMBA
++ select HAVE_SCHED_CLOCK
++ select NEED_MACH_GPIO_H
++ select NEED_MACH_MEMORY_H
++ select COMMON_CLK
++ select ARCH_HAS_CPUFREQ
++ select GENERIC_CLOCKEVENTS
++ select ARM_ERRATA_411920
++ select MACH_BCM2708
++ select VC4
++ select FIQ
++ help
++ This enables support for Broadcom BCM2708 boards.
+
-+ clk_mmc: clock@0 {
-+ compatible = "fixed-clock";
-+ reg = <0>;
-+ #clock-cells = <0>;
-+ clock-output-names = "mmc";
-+ clock-frequency = <250000000>;
-+ };
++config ARCH_BCM2709
++ bool "Broadcom BCM2709 family"
++ select ARCH_HAS_BARRIERS if SMP
++ select CPU_V7
++ select HAVE_SMP
++ select ARM_AMBA
++ select MIGHT_HAVE_CACHE_L2X0
++ select HAVE_SCHED_CLOCK
++ select NEED_MACH_MEMORY_H
++ select NEED_MACH_IO_H
++ select COMMON_CLK
++ select ARCH_HAS_CPUFREQ
++ select GENERIC_CLOCKEVENTS
++ select MACH_BCM2709
++ select VC4
++ select FIQ
++ help
++ This enables support for Broadcom BCM2709 boards.
+
-+ clk_i2c: clock@1 {
-+ compatible = "fixed-clock";
-+ reg = <1>;
-+ #clock-cells = <0>;
-+ clock-output-names = "i2c";
-+ clock-frequency = <250000000>;
-+ };
+ config ARCH_MULTIPLATFORM
+ bool "Allow multiple platforms to be selected"
+ depends on MMU
+@@ -823,6 +859,9 @@
+ # Kconfigs may be included either alphabetically (according to the
+ # plat- suffix) or along side the corresponding mach-* source.
+ #
++source "arch/arm/mach-bcm2708/Kconfig"
++source "arch/arm/mach-bcm2709/Kconfig"
+
-+ clk_core: clock@2 {
-+ compatible = "fixed-clock";
-+ reg = <2>;
-+ #clock-cells = <0>;
-+ clock-output-names = "core";
-+ clock-frequency = <250000000>;
-+ };
+ source "arch/arm/mach-mvebu/Kconfig"
+
+ source "arch/arm/mach-alpine/Kconfig"
+diff -Nur linux-4.1.6/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug
+--- linux-4.1.6/arch/arm/Kconfig.debug 2015-08-17 05:52:51.000000000 +0200
++++ linux-rpi/arch/arm/Kconfig.debug 2015-08-26 10:26:04.685259419 +0200
+@@ -1197,6 +1197,14 @@
+ options; the platform specific options are deprecated
+ and will be soon removed.
+
++ config DEBUG_BCM2708_UART0
++ bool "Broadcom BCM2708 UART0 (PL011)"
++ depends on MACH_BCM2708
++ help
++ Say Y here if you want the debug print routines to direct
++ their output to UART 0. The port must have been initialised
++ by the boot-loader before use.
+
-+ clk_uart0: clock@3 {
-+ compatible = "fixed-clock";
-+ reg = <3>;
-+ #clock-cells = <0>;
-+ clock-output-names = "uart0_pclk";
-+ clock-frequency = <3000000>;
-+ };
+ endchoice
+
+ config DEBUG_AT91_UART
+diff -Nur linux-4.1.6/arch/arm/Makefile linux-rpi/arch/arm/Makefile
+--- linux-4.1.6/arch/arm/Makefile 2015-08-17 05:52:51.000000000 +0200
++++ linux-rpi/arch/arm/Makefile 2015-08-26 10:26:04.685259419 +0200
+@@ -142,6 +142,8 @@
+
+ # Machine directory name. This list is sorted alphanumerically
+ # by CONFIG_* macro name.
++machine-$(CONFIG_ARCH_BCM2708) += bcm2708
++machine-$(CONFIG_ARCH_BCM2709) += bcm2709
+ machine-$(CONFIG_ARCH_ALPINE) += alpine
+ machine-$(CONFIG_ARCH_AT91) += at91
+ machine-$(CONFIG_ARCH_AXXIA) += axxia
+diff -Nur linux-4.1.6/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/Makefile
+--- linux-4.1.6/arch/arm/boot/dts/Makefile 2015-08-17 05:52:51.000000000 +0200
++++ linux-rpi/arch/arm/boot/dts/Makefile 2015-08-26 10:26:04.685259419 +0200
+@@ -1,5 +1,21 @@
+ ifeq ($(CONFIG_OF),y)
+
++dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b.dtb
++dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-b-plus.dtb
++dtb-$(CONFIG_BCM2708_DT) += bcm2708-rpi-cm.dtb
++dtb-$(CONFIG_BCM2709_DT) += bcm2709-rpi-2-b.dtb
+
-+ clk_apb_p: clock@4 {
-+ compatible = "fixed-clock";
-+ reg = <4>;
-+ #clock-cells = <0>;
-+ clock-output-names = "apb_pclk";
-+ clock-frequency = <126000000>;
-+ };
-+ };
++# Raspberry Pi
++ifeq ($(CONFIG_BCM2708_DT),y)
++ RPI_DT_OVERLAYS=y
++endif
++ifeq ($(CONFIG_BCM2709_DT),y)
++ RPI_DT_OVERLAYS=y
++endif
++ifeq ($(CONFIG_ARCH_BCM2835),y)
++ RPI_DT_OVERLAYS=y
++endif
+
-+ __overrides__ {
-+ cache_line_size = <&vchiq>, "cache-line-size:0";
-+ };
-+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708.dtsi linux-xbian-rpi/arch/arm/boot/dts/bcm2708.dtsi
---- linux-4.1.3/arch/arm/boot/dts/bcm2708.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2708.dtsi 2015-07-28 01:20:58.166151930 +0200
-@@ -0,0 +1,19 @@
-+/include/ "bcm2708_common.dtsi"
+ dtb-$(CONFIG_ARCH_ALPINE) += \
+ alpine-db.dtb
+ dtb-$(CONFIG_MACH_ASM9260) += \
+@@ -660,7 +676,18 @@
+ mt6592-evb.dtb \
+ mt8127-moose.dtb \
+ mt8135-evbp1.dtb
+
-+/ {
-+ compatible = "brcm,bcm2708";
-+ model = "BCM2708";
++targets += dtbs dtbs_install
++targets += $(dtb-y)
+
-+ chosen {
-+ /* No padding required - the boot loader can do that. */
-+ bootargs = "";
-+ };
+ endif
+
+ always := $(dtb-y)
+ clean-files := *.dtb
+
-+ soc {
-+ ranges = <0x7e000000 0x20000000 0x01000000>;
++# Enable fixups to support overlays on BCM2708 platforms
++ifeq ($(RPI_DT_OVERLAYS),y)
++ DTC_FLAGS ?= -@
++endif
+
-+ arm-pmu {
-+ compatible = "arm,arm1176-pmu";
-+ };
-+ };
-+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts
---- linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts 2015-07-28 01:20:58.166151930 +0200
-@@ -0,0 +1,119 @@
++subdir-y += overlays
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
+--- linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2015-08-26 10:26:04.693259532 +0200
+@@ -0,0 +1,129 @@
+/dts-v1/;
+
+/include/ "bcm2708.dtsi"
+
+/ {
+ compatible = "brcm,bcm2708";
-+ model = "Raspberry Pi Model B";
++ model = "Raspberry Pi Model B+";
+};
+
+&gpio {
@@ -342,8 +290,8 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-xbian-rpi/arch/a
+ };
+
+ i2s_pins: i2s {
-+ brcm,pins = <28 29 30 31>;
-+ brcm,function = <6>; /* alt2 */
++ brcm,pins = <18 19 20 21>;
++ brcm,function = <4>; /* alt0 */
+ };
+};
+
@@ -407,7 +355,13 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-xbian-rpi/arch/a
+ act_led: act {
+ label = "led0";
+ linux,default-trigger = "mmc0";
-+ gpios = <&gpio 16 1>;
++ gpios = <&gpio 47 0>;
++ };
++
++ pwr_led: pwr {
++ label = "led1";
++ linux,default-trigger = "input";
++ gpios = <&gpio 35 0>;
+ };
+};
+
@@ -430,22 +384,26 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-xbian-rpi/arch/a
+ act_led_activelow = <&act_led>,"gpios:8";
+ act_led_trigger = <&act_led>,"linux,default-trigger";
+
++ pwr_led_gpio = <&pwr_led>,"gpios:4";
++ pwr_led_activelow = <&pwr_led>,"gpios:8";
++ pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
++
+ audio = <&audio>,"status";
+ watchdog = <&watchdog>,"status";
+ random = <&random>,"status";
+ };
+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
---- linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2015-07-28 01:20:58.166151930 +0200
-@@ -0,0 +1,129 @@
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts
+--- linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts 2015-08-26 10:26:04.693259532 +0200
+@@ -0,0 +1,119 @@
+/dts-v1/;
+
+/include/ "bcm2708.dtsi"
+
+/ {
+ compatible = "brcm,bcm2708";
-+ model = "Raspberry Pi Model B+";
++ model = "Raspberry Pi Model B";
+};
+
+&gpio {
@@ -465,8 +423,8 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-xbian-rpi/a
+ };
+
+ i2s_pins: i2s {
-+ brcm,pins = <18 19 20 21>;
-+ brcm,function = <4>; /* alt0 */
++ brcm,pins = <28 29 30 31>;
++ brcm,function = <6>; /* alt2 */
+ };
+};
+
@@ -530,13 +488,7 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-xbian-rpi/a
+ act_led: act {
+ label = "led0";
+ linux,default-trigger = "mmc0";
-+ gpios = <&gpio 47 0>;
-+ };
-+
-+ pwr_led: pwr {
-+ label = "led1";
-+ linux,default-trigger = "input";
-+ gpios = <&gpio 35 0>;
++ gpios = <&gpio 16 1>;
+ };
+};
+
@@ -559,18 +511,14 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-xbian-rpi/a
+ act_led_activelow = <&act_led>,"gpios:8";
+ act_led_trigger = <&act_led>,"linux,default-trigger";
+
-+ pwr_led_gpio = <&pwr_led>,"gpios:4";
-+ pwr_led_activelow = <&pwr_led>,"gpios:8";
-+ pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
-+
+ audio = <&audio>,"status";
+ watchdog = <&watchdog>,"status";
+ random = <&random>,"status";
+ };
+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dts
---- linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-cm.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dts 2015-07-28 01:20:58.166151930 +0200
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dts
+--- linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-cm.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dts 2015-08-26 10:26:04.693259532 +0200
@@ -0,0 +1,93 @@
+/dts-v1/;
+
@@ -665,9 +613,9 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-xbian-rpi/arch/
+ core_freq = <&clk_core>,"clock-frequency:0";
+ };
+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
---- linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 2015-07-28 01:20:58.166151930 +0200
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
+--- linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi 2015-08-26 10:26:04.693259532 +0200
@@ -0,0 +1,30 @@
+/include/ "bcm2708.dtsi"
+
@@ -699,15 +647,15 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-xbian-rpi/arch
+ random = <&random>,"status";
+ };
+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2709.dtsi linux-xbian-rpi/arch/arm/boot/dts/bcm2709.dtsi
---- linux-4.1.3/arch/arm/boot/dts/bcm2709.dtsi 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2709.dtsi 2015-07-28 01:20:58.166151930 +0200
-@@ -0,0 +1,70 @@
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dts/bcm2708.dtsi
+--- linux-4.1.6/arch/arm/boot/dts/bcm2708.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2708.dtsi 2015-08-26 10:26:04.693259532 +0200
+@@ -0,0 +1,25 @@
+/include/ "bcm2708_common.dtsi"
+
+/ {
-+ compatible = "brcm,bcm2709";
-+ model = "BCM2709";
++ compatible = "brcm,bcm2708";
++ model = "BCM2708";
+
+ chosen {
+ /* No padding required - the boot loader can do that. */
@@ -715,67 +663,328 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2709.dtsi linux-xbian-rpi/arch/arm/bo
+ };
+
+ soc {
-+ ranges = <0x7e000000 0x3f000000 0x01000000>;
++ ranges = <0x7e000000 0x20000000 0x01000000>;
+
+ arm-pmu {
-+ compatible = "arm,cortex-a7-pmu";
-+ interrupts = <3 9>;
++ compatible = "arm,arm1176-pmu";
++ };
++
++ gpiomem {
++ compatible = "brcm,bcm2835-gpiomem";
++ reg = <0x7e200000 0x1000>;
++ status = "okay";
+ };
+ };
++};
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708_common.dtsi linux-rpi/arch/arm/boot/dts/bcm2708_common.dtsi
+--- linux-4.1.6/arch/arm/boot/dts/bcm2708_common.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2708_common.dtsi 2015-08-26 10:26:04.693259532 +0200
+@@ -0,0 +1,302 @@
++/include/ "skeleton.dtsi"
+
-+ timer {
-+ compatible = "arm,armv7-timer";
-+ clock-frequency = <19200000>;
-+ interrupts = <3 0>, // PHYS_SECURE_PPI
-+ <3 1>, // PHYS_NONSECURE_PPI
-+ <3 3>, // VIRT_PPI
-+ <3 2>; // HYP_PPI
-+ always-on;
++/ {
++ interrupt-parent = <&intc>;
++
++ aliases {
++ audio = &audio;
++ sound = &sound;
++ soc = &soc;
++ dma = &dma;
++ intc = &intc;
++ watchdog = &watchdog;
++ random = &random;
++ mailbox = &mailbox;
++ gpio = &gpio;
++ uart0 = &uart0;
++ i2s = &i2s;
++ spi0 = &spi0;
++ i2c0 = &i2c0;
++ uart1 = &uart1;
++ mmc = &mmc;
++ i2c1 = &i2c1;
++ i2c2 = &i2c2;
++ usb = &usb;
++ leds = &leds;
++ fb = &fb;
++ vchiq = &vchiq;
++ thermal = &thermal;
++ clocks = &clocks;
+ };
+
-+ cpus: cpus {
++ /* Onboard audio */
++ audio: audio {
++ compatible = "brcm,bcm2835-audio";
++ brcm,pwm-channels = <8>;
++ status = "disabled";
++ };
++
++ /* External sound card */
++ sound: sound {
++ };
++
++ soc: soc {
++ compatible = "simple-bus";
++ #address-cells = <1>;
++ #size-cells = <1>;
++
++ dma: dma@7e007000 {
++ compatible = "brcm,bcm2835-dma";
++ reg = <0x7e007000 0xf00>;
++ interrupts = <1 16>,
++ <1 17>,
++ <1 18>,
++ <1 19>,
++ <1 20>,
++ <1 21>,
++ <1 22>,
++ <1 23>,
++ <1 24>,
++ <1 25>,
++ <1 26>,
++ <1 27>;
++
++ #dma-cells = <1>;
++ brcm,dma-channel-mask = <0x0f35>;
++ };
++
++ intc: interrupt-controller {
++ compatible = "brcm,bcm2708-armctrl-ic";
++ reg = <0x7e00b200 0x200>;
++ interrupt-controller;
++ #interrupt-cells = <2>;
++ };
++
++ mailbox: mailbox@7e00b800 {
++ compatible = "brcm,bcm2835-mbox";
++ reg = <0x7e00b880 0x40>;
++ interrupts = <0 1>;
++ #mbox-cells = <0>;
++ };
++
++ watchdog: watchdog@7e100000 {
++ compatible = "brcm,bcm2835-pm-wdt";
++ reg = <0x7e100000 0x28>;
++ status = "disabled";
++ };
++
++ random: rng@7e104000 {
++ compatible = "brcm,bcm2835-rng";
++ reg = <0x7e104000 0x10>;
++ status = "disabled";
++ };
++
++ gpio: gpio@7e200000 {
++ compatible = "brcm,bcm2835-gpio";
++ reg = <0x7e200000 0xb4>;
++ interrupts = <2 17>, <2 18>;
++
++ gpio-controller;
++ #gpio-cells = <2>;
++
++ interrupt-controller;
++ #interrupt-cells = <2>;
++ };
++
++ uart0: uart@7e201000 {
++ compatible = "arm,pl011", "arm,primecell";
++ reg = <0x7e201000 0x1000>;
++ interrupts = <2 25>;
++ clocks = <&clk_uart0 &clk_apb_p>;
++ clock-names = "uartclk","apb_pclk";
++ arm,primecell-periphid = <0x00241011>; // For an explanation, see
++ // https://github.com/raspberrypi/linux/commit/13731d862cf5219216533a3b0de052cee4cc5038
++ status = "disabled";
++ };
++
++ i2s: i2s@7e203000 {
++ compatible = "brcm,bcm2708-i2s";
++ reg = <0x7e203000 0x24>,
++ <0x7e101098 0x08>;
++
++ //dmas = <&dma 2>,
++ // <&dma 3>;
++ dma-names = "tx", "rx";
++ status = "disabled";
++ };
++
++ spi0: spi@7e204000 {
++ compatible = "brcm,bcm2835-spi";
++ reg = <0x7e204000 0x1000>;
++ interrupts = <2 22>;
++ clocks = <&clk_core>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ /* the dma channels */
++ dmas = <&dma 6>, <&dma 7>;
++ dma-names = "tx", "rx";
++ /* the chipselects used - <0> means native GPIO
++ * add more gpios if necessary as <&gpio 6 1>
++ * (but do not forget to make them output!)
++ */
++ cs-gpios = <0>, <0>;
++ };
++
++ i2c0: i2c@7e205000 {
++ compatible = "brcm,bcm2708-i2c";
++ reg = <0x7e205000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clk_i2c>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ pwm: pwm@7e20c000 {
++ compatible = "brcm,bcm2835-pwm";
++ reg = <0x7e20c000 0x28>;
++ clocks = <&clk_pwm>;
++ #pwm-cells = <2>;
++ status = "disabled";
++ };
++
++ uart1: uart@7e215040 {
++ compatible = "brcm,bcm2835-aux-uart", "ns16550";
++ reg = <0x7e215040 0x40>;
++ interrupts = <1 29>;
++ clock-frequency = <500000000>;
++ reg-shift = <2>;
++ no-loopback-test;
++ status = "disabled";
++ };
++
++ mmc: mmc@7e300000 {
++ compatible = "brcm,bcm2835-mmc";
++ reg = <0x7e300000 0x100>;
++ interrupts = <2 30>;
++ clocks = <&clk_mmc>;
++ dmas = <&dma 11>,
++ <&dma 11>;
++ dma-names = "tx", "rx";
++ status = "disabled";
++ };
++
++ i2c1: i2c@7e804000 {
++ compatible = "brcm,bcm2708-i2c";
++ reg = <0x7e804000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clk_i2c>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ i2c2: i2c@7e805000 {
++ // Beware - this is shared with the HDMI module.
++ // Careless use may break (really) your display.
++ // Caveat emptor.
++ compatible = "brcm,bcm2708-i2c";
++ reg = <0x7e805000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clk_i2c>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
++ usb: usb@7e980000 {
++ compatible = "brcm,bcm2708-usb";
++ reg = <0x7e980000 0x10000>,
++ <0x7e006000 0x1000>;
++ interrupts = <2 0>,
++ <1 9>;
++ };
++
++ firmware: firmware {
++ compatible = "raspberrypi,bcm2835-firmware";
++ mboxes = <&mailbox>;
++ };
++
++ leds: leds {
++ compatible = "gpio-leds";
++ };
++
++ fb: fb {
++ compatible = "brcm,bcm2708-fb";
++ firmware = <&firmware>;
++ status = "disabled";
++ };
++
++ vchiq: vchiq {
++ compatible = "brcm,bcm2835-vchiq";
++ reg = <0x7e00b840 0xf>;
++ interrupts = <0 2>;
++ cache-line-size = <32>;
++ firmware = <&firmware>;
++ };
++
++ thermal: thermal {
++ compatible = "brcm,bcm2835-thermal";
++ firmware = <&firmware>;
++ };
++ };
++
++ clocks: clocks {
++ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
-+ v7_cpu0: cpu@0 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a7";
-+ reg = <0xf00>;
-+ clock-frequency = <800000000>;
++ clk_mmc: clock@0 {
++ compatible = "fixed-clock";
++ reg = <0>;
++ #clock-cells = <0>;
++ clock-output-names = "mmc";
++ clock-frequency = <250000000>;
+ };
+
-+ v7_cpu1: cpu@1 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a7";
-+ reg = <0xf01>;
-+ clock-frequency = <800000000>;
++ clk_i2c: clock@1 {
++ compatible = "fixed-clock";
++ reg = <1>;
++ #clock-cells = <0>;
++ clock-output-names = "i2c";
++ clock-frequency = <250000000>;
+ };
+
-+ v7_cpu2: cpu@2 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a7";
-+ reg = <0xf02>;
-+ clock-frequency = <800000000>;
++ clk_core: clock@2 {
++ compatible = "fixed-clock";
++ reg = <2>;
++ #clock-cells = <0>;
++ clock-output-names = "core";
++ clock-frequency = <250000000>;
+ };
+
-+ v7_cpu3: cpu@3 {
-+ device_type = "cpu";
-+ compatible = "arm,cortex-a7";
-+ reg = <0xf03>;
-+ clock-frequency = <800000000>;
++ clk_uart0: clock@3 {
++ compatible = "fixed-clock";
++ reg = <3>;
++ #clock-cells = <0>;
++ clock-output-names = "uart0_pclk";
++ clock-frequency = <3000000>;
++ };
++
++ clk_apb_p: clock@4 {
++ compatible = "fixed-clock";
++ reg = <4>;
++ #clock-cells = <0>;
++ clock-output-names = "apb_pclk";
++ clock-frequency = <126000000>;
++ };
++
++ clk_pwm: clock@5 {
++ compatible = "fixed-clock";
++ reg = <3>;
++ #clock-cells = <0>;
++ clock-output-names = "pwm";
++ clock-frequency = <100000000>;
+ };
+ };
+
+ __overrides__ {
-+ arm_freq = <&v7_cpu0>, "clock-frequency:0",
-+ <&v7_cpu1>, "clock-frequency:0",
-+ <&v7_cpu2>, "clock-frequency:0",
-+ <&v7_cpu3>, "clock-frequency:0";
++ cache_line_size = <&vchiq>, "cache-line-size:0";
+ };
+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-xbian-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
---- linux-4.1.3/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 1970-01-01 01:00:00.000000000 +0100
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 2015-07-28 01:20:58.166151930 +0200
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
+--- linux-4.1.6/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dts 2015-08-26 10:26:04.693259532 +0200
@@ -0,0 +1,129 @@
+/dts-v1/;
+
@@ -906,170 +1115,89 @@ diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2709-rpi-2-b.dts linux-xbian-rpi/arch
+ random = <&random>,"status";
+ };
+};
-diff -Nur linux-4.1.3/arch/arm/boot/dts/bcm2835.dtsi linux-xbian-rpi/arch/arm/boot/dts/bcm2835.dtsi
---- linux-4.1.3/arch/arm/boot/dts/bcm2835.dtsi 2015-07-21 19:10:33.000000000 +0200
-+++ linux-xbian-rpi/arch/arm/boot/dts/bcm2835.dtsi 2015-07-28 01:20:58.166151930 +0200
-@@ -6,14 +6,15 @@
- interrupt-parent = <&intc>;
-
- chosen {
-- bootargs = "earlyprintk console=ttyAMA0";
+diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2709.dtsi linux-rpi/arch/arm/boot/dts/bcm2709.dtsi
+--- linux-4.1.6/arch/arm/boot/dts/bcm2709.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2709.dtsi 2015-08-26 10:26:04.693259532 +0200
+@@ -0,0 +1,76 @@
++/include/ "bcm2708_common.dtsi"
++
++/ {
++ compatible = "brcm,bcm2709";
++ model = "BCM2709";
++
++ chosen {
++ /* No padding required - the boot loader can do that. */
+ bootargs = "";
- };
-
-- soc {
-+ soc: soc {
- compatible = "simple-bus";
- #address-cells = <1>;
- #size-cells = <1>;
- ranges = <0x7e000000 0x20000000 0x02000000>;
-+ dma-ranges = <0x40000000 0x00000000 0x20000000>;
-
- timer@7e003000 {
- compatible = "brcm,bcm2835-system-timer";
-@@ -50,16 +51,23 @@
- #interrupt-cells = <2>;
- };
-
-- watchdog@7e100000 {
-+ watchdog: watchdog@7e100000 {
- compatible = "brcm,bcm2835-pm-wd