summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@uclibc-ng.org>2015-10-07 17:55:17 +0200
committerWaldemar Brodkorb <wbx@uclibc-ng.org>2015-10-07 17:55:17 +0200
commit1f713cadaed5a48d8539e6376a0b59627086c43e (patch)
tree746f9339341f873d802ba354efacbc2e3ca3ccfc
parent6d99c6b253a1816d3efc12578deb05222ff3f9f8 (diff)
update to latest github version
-rw-r--r--target/arm/bcm28xx/patches/4.1.10/0001-raspberry-pi-github.patch27711
1 files changed, 15542 insertions, 12169 deletions
diff --git a/target/arm/bcm28xx/patches/4.1.10/0001-raspberry-pi-github.patch b/target/arm/bcm28xx/patches/4.1.10/0001-raspberry-pi-github.patch
index ce089a8cd..b65e38285 100644
--- a/target/arm/bcm28xx/patches/4.1.10/0001-raspberry-pi-github.patch
+++ b/target/arm/bcm28xx/patches/4.1.10/0001-raspberry-pi-github.patch
@@ -1,276 +1,368 @@
-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 @@
+diff -Nur linux-4.1.10/arch/arm/boot/dts/bcm2708_common.dtsi linux-rpi/arch/arm/boot/dts/bcm2708_common.dtsi
+--- linux-4.1.10/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-10-07 16:40:31.000000000 +0200
+@@ -0,0 +1,321 @@
++/include/ "skeleton.dtsi"
+
-+BCM2835 (aka Raspberry Pi) V4L2 driver
-+======================================
++/ {
++ interrupt-parent = <&intc>;
+
-+1. Copyright
-+============
++ 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;
++ };
+
-+Copyright © 2013 Raspberry Pi (Trading) Ltd.
++ /* Onboard audio */
++ audio: audio {
++ compatible = "brcm,bcm2835-audio";
++ brcm,pwm-channels = <8>;
++ status = "disabled";
++ };
+
-+2. License
-+==========
++ /* External sound card */
++ sound: sound {
++ };
+
-+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.
++ soc: soc {
++ compatible = "simple-bus";
++ #address-cells = <1>;
++ #size-cells = <1>;
+
-+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.
++ 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>;
+
-+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.
++ #dma-cells = <1>;
++ brcm,dma-channel-mask = <0x0f35>;
++ };
+
-+3. Quick Start
-+==============
++ intc: interrupt-controller {
++ compatible = "brcm,bcm2708-armctrl-ic";
++ reg = <0x7e00b200 0x200>;
++ interrupt-controller;
++ #interrupt-cells = <2>;
++ };
+
-+You need a version 1.0 or later of v4l2-ctl, available from:
-+ git://git.linuxtv.org/v4l-utils.git
++ mailbox: mailbox@7e00b800 {
++ compatible = "brcm,bcm2835-mbox";
++ reg = <0x7e00b880 0x40>;
++ interrupts = <0 1>;
++ #mbox-cells = <0>;
++ };
+
-+$ sudo modprobe bcm2835-v4l2
++ watchdog: watchdog@7e100000 {
++ compatible = "brcm,bcm2835-pm-wdt";
++ reg = <0x7e100000 0x28>;
++ status = "disabled";
++ };
+
-+Turn on the overlay:
++ random: rng@7e104000 {
++ compatible = "brcm,bcm2835-rng";
++ reg = <0x7e104000 0x10>;
++ status = "disabled";
++ };
+
-+$ v4l2-ctl --overlay=1
++ gpio: gpio@7e200000 {
++ compatible = "brcm,bcm2835-gpio";
++ reg = <0x7e200000 0xb4>;
++ interrupts = <2 17>, <2 18>;
+
-+Turn off the overlay:
++ gpio-controller;
++ #gpio-cells = <2>;
+
-+$ v4l2-ctl --overlay=0
++ interrupt-controller;
++ #interrupt-cells = <2>;
++ };
+
-+Set the capture format for video:
++ 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";
++ };
+
-+$ v4l2-ctl --set-fmt-video=width=1920,height=1088,pixelformat=4
++ i2s: i2s@7e203000 {
++ compatible = "brcm,bcm2708-i2s";
++ reg = <0x7e203000 0x24>,
++ <0x7e101098 0x08>;
+
-+(Note: 1088 not 1080).
++ //dmas = <&dma 2>,
++ // <&dma 3>;
++ dma-names = "tx", "rx";
++ status = "disabled";
++ };
+
-+Capture:
++ 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 --stream-mmap=3 --stream-count=100 --stream-to=somefile.h264
++ i2c0: i2c@7e205000 {
++ compatible = "brcm,bcm2708-i2c";
++ reg = <0x7e205000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clk_i2c>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
+
-+Stills capture:
++ pwm: pwm@7e20c000 {
++ compatible = "brcm,bcm2835-pwm";
++ reg = <0x7e20c000 0x28>;
++ clocks = <&clk_pwm>;
++ #pwm-cells = <2>;
++ 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
++ uart1: uart@7e215040 {
++ compatible = "brcm,bcm2835-aux-uart", "ns16550";
++ reg = <0x7e215040 0x40>;
++ interrupts = <1 29>;
++ clocks = <&clk_uart1>;
++ reg-shift = <2>;
++ no-loopback-test;
++ status = "disabled";
++ };
+
-+List of available formats:
++ 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";
++ };
+
-+$ 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.
++ i2c1: i2c@7e804000 {
++ compatible = "brcm,bcm2708-i2c";
++ reg = <0x7e804000 0x1000>;
++ interrupts = <2 21>;
++ clocks = <&clk_i2c>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
+
-+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.
++ 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";
++ };
+
-+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.
++ smi: smi@7e600000 {
++ compatible = "brcm,bcm2835-smi";
++ reg = <0x7e600000 0x44>, <0x7e1010b0 0x8>;
++ interrupts = <2 16>;
++ brcm,smi-clock-source = <6>;
++ brcm,smi-clock-divisor = <4>;
++ dmas = <&dma 4>;
++ dma-names = "rx-tx";
++ status = "disabled";
++ };
+
- 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"
++ usb: usb@7e980000 {
++ compatible = "brcm,bcm2708-usb";
++ reg = <0x7e980000 0x10000>,
++ <0x7e006000 0x1000>;
++ interrupts = <2 0>,
++ <1 9>;
++ };
+
- 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.
++ firmware: firmware {
++ compatible = "raspberrypi,bcm2835-firmware";
++ mboxes = <&mailbox>;
++ };
+
- 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
++ leds: leds {
++ compatible = "gpio-leds";
++ };
+
-+# 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
++ fb: fb {
++ compatible = "brcm,bcm2708-fb";
++ firmware = <&firmware>;
++ status = "disabled";
++ };
+
- dtb-$(CONFIG_ARCH_ALPINE) += \
- alpine-db.dtb
- dtb-$(CONFIG_MACH_ASM9260) += \
-@@ -660,7 +676,18 @@
- mt6592-evb.dtb \
- mt8127-moose.dtb \
- mt8135-evbp1.dtb
++ vchiq: vchiq {
++ compatible = "brcm,bcm2835-vchiq";
++ reg = <0x7e00b840 0xf>;
++ interrupts = <0 2>;
++ cache-line-size = <32>;
++ firmware = <&firmware>;
++ };
+
-+targets += dtbs dtbs_install
-+targets += $(dtb-y)
++ thermal: thermal {
++ compatible = "brcm,bcm2835-thermal";
++ firmware = <&firmware>;
++ };
++ };
+
- endif
-
- always := $(dtb-y)
- clean-files := *.dtb
++ clocks: clocks {
++ compatible = "simple-bus";
++ #address-cells = <1>;
++ #size-cells = <0>;
+
-+# Enable fixups to support overlays on BCM2708 platforms
-+ifeq ($(RPI_DT_OVERLAYS),y)
-+ DTC_FLAGS ?= -@
-+endif
++ clk_mmc: clock@0 {
++ compatible = "fixed-clock";
++ reg = <0>;
++ #clock-cells = <0>;
++ clock-output-names = "mmc";
++ clock-frequency = <250000000>;
++ };
+
-+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 @@
++ clk_i2c: clock@1 {
++ compatible = "fixed-clock";
++ reg = <1>;
++ #clock-cells = <0>;
++ clock-output-names = "i2c";
++ clock-frequency = <250000000>;
++ };
++
++ clk_core: clock@2 {
++ compatible = "fixed-clock";
++ reg = <2>;
++ #clock-cells = <0>;
++ clock-output-names = "core";
++ clock-frequency = <250000000>;
++ };
++
++ 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>;
++ };
++
++ clk_uart1: clock@6 {
++ compatible = "fixed-factor-clock";
++ clocks = <&clk_core>;
++ #clock-cells = <0>;
++ clock-div = <1>;
++ clock-mult = <2>;
++ };
++ };
++
++ __overrides__ {
++ cache_line_size = <&vchiq>, "cache-line-size:0";
++ };
++};
+diff -Nur linux-4.1.10/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dts/bcm2708.dtsi
+--- linux-4.1.10/arch/arm/boot/dts/bcm2708.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2708.dtsi 2015-10-07 16:40:31.000000000 +0200
+@@ -0,0 +1,25 @@
++/include/ "bcm2708_common.dtsi"
++
++/ {
++ compatible = "brcm,bcm2708";
++ model = "BCM2708";
++
++ chosen {
++ /* No padding required - the boot loader can do that. */
++ bootargs = "";
++ };
++
++ soc {
++ ranges = <0x7e000000 0x20000000 0x01000000>;
++
++ arm-pmu {
++ compatible = "arm,arm1176-pmu";
++ };
++
++ gpiomem {
++ compatible = "brcm,bcm2835-gpiomem";
++ reg = <0x7e200000 0x1000>;
++ status = "okay";
++ };
++ };
++};
+diff -Nur linux-4.1.10/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts
+--- linux-4.1.10/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-10-07 16:40:31.000000000 +0200
+@@ -0,0 +1,118 @@
+/dts-v1/;
+
+/include/ "bcm2708.dtsi"
+
+/ {
+ compatible = "brcm,bcm2708";
-+ model = "Raspberry Pi Model B+";
++ model = "Raspberry Pi Model B";
+};
+
+&gpio {
@@ -290,8 +382,8 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/ar
+ };
+
+ i2s_pins: i2s {
-+ brcm,pins = <18 19 20 21>;
-+ brcm,function = <4>; /* alt0 */
++ brcm,pins = <28 29 30 31>;
++ brcm,function = <6>; /* alt2 */
+ };
+};
+
@@ -355,13 +447,7 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/ar
+ 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>;
+ };
+};
+
@@ -369,7 +455,6 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/ar
+ __overrides__ {
+ uart0 = <&uart0>,"status";
+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
-+ uart1_clkrate = <&uart1>,"clock-frequency:0";
+ i2s = <&i2s>,"status";
+ spi = <&spi0>,"status";
+ i2c0 = <&i2c0>,"status";
@@ -384,26 +469,22 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/ar
+ 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.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 @@
+diff -Nur linux-4.1.10/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
+--- linux-4.1.10/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-10-07 16:40:31.000000000 +0200
+@@ -0,0 +1,128 @@
+/dts-v1/;
+
+/include/ "bcm2708.dtsi"
+
+/ {
+ compatible = "brcm,bcm2708";
-+ model = "Raspberry Pi Model B";
++ model = "Raspberry Pi Model B+";
+};
+
+&gpio {
@@ -423,8 +504,8 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boo
+ };
+
+ i2s_pins: i2s {
-+ brcm,pins = <28 29 30 31>;
-+ brcm,function = <6>; /* alt2 */
++ brcm,pins = <18 19 20 21>;
++ brcm,function = <4>; /* alt0 */
+ };
+};
+
@@ -488,7 +569,13 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boo
+ 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>;
+ };
+};
+
@@ -496,7 +583,6 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boo
+ __overrides__ {
+ uart0 = <&uart0>,"status";
+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
-+ uart1_clkrate = <&uart1>,"clock-frequency:0";
+ i2s = <&i2s>,"status";
+ spi = <&spi0>,"status";
+ i2c0 = <&i2c0>,"status";
@@ -511,15 +597,19 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boo
+ 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.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 @@
+diff -Nur linux-4.1.10/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dts
+--- linux-4.1.10/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-10-07 16:40:31.000000000 +0200
+@@ -0,0 +1,92 @@
+/dts-v1/;
+
+/include/ "bcm2708-rpi-cm.dtsi"
@@ -601,7 +691,6 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-rpi/arch/arm/bo
+ __overrides__ {
+ uart0 = <&uart0>,"status";
+ uart0_clkrate = <&clk_uart0>,"clock-frequency:0";
-+ uart1_clkrate = <&uart1>,"clock-frequency:0";
+ i2s = <&i2s>,"status";
+ spi = <&spi0>,"status";
+ i2c0 = <&i2c0>,"status";
@@ -613,9 +702,9 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-cm.dts linux-rpi/arch/arm/bo
+ core_freq = <&clk_core>,"clock-frequency:0";
+ };
+};
-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
+diff -Nur linux-4.1.10/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-rpi/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi
+--- linux-4.1.10/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-10-07 16:40:31.000000000 +0200
@@ -0,0 +1,30 @@
+/include/ "bcm2708.dtsi"
+
@@ -647,15 +736,15 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708-rpi-cm.dtsi linux-rpi/arch/arm/b
+ random = <&random>,"status";
+ };
+};
-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 @@
+diff -Nur linux-4.1.10/arch/arm/boot/dts/bcm2709.dtsi linux-rpi/arch/arm/boot/dts/bcm2709.dtsi
+--- linux-4.1.10/arch/arm/boot/dts/bcm2709.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/boot/dts/bcm2709.dtsi 2015-10-07 16:40:31.000000000 +0200
+@@ -0,0 +1,76 @@
+/include/ "bcm2708_common.dtsi"
+
+/ {
-+ compatible = "brcm,bcm2708";
-+ model = "BCM2708";
++ compatible = "brcm,bcm2709";
++ model = "BCM2709";
+
+ chosen {
+ /* No padding required - the boot loader can do that. */
@@ -663,10 +752,11 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dts
+ };
+
+ soc {
-+ ranges = <0x7e000000 0x20000000 0x01000000>;
++ ranges = <0x7e000000 0x3f000000 0x01000000>;
+
+ arm-pmu {
-+ compatible = "arm,arm1176-pmu";
++ compatible = "arm,cortex-a7-pmu";
++ interrupts = <3 9>;
+ };
+
+ gpiomem {
@@ -675,317 +765,61 @@ diff -Nur linux-4.1.6/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dts
+ 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"
-+
-+/ {
-+ 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>;
-+
-+ #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>;
-+ };
++ 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;
+ };
+
-+ clocks: clocks {
-+ compatible = "simple-bus";
++ cpus: cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
-+ clk_mmc: clock@0 {
-+ compatible = "fixed-clock";
-+ reg = <0>;
-+ #clock-cells = <0>;
-+ clock-output-names = "mmc";
-+ clock-frequency = <250000000>;
-+ };
-+
-+ clk_i2c: clock@1 {
-+ compatible = "fixed-clock";
-+ reg = <1>;
-+ #clock-cells = <0>;
-+ clock-output-names = "i2c";
-+ clock-frequency = <250000000>;
-+ };
-+
-+ clk_core: clock@2 {
-+ compatible = "fixed-clock";
-+ reg = <2>;
-+ #clock-cells = <0>;
-+ clock-output-names = "core";
-+ clock-frequency = <250000000>;
++ v7_cpu0: cpu@0 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ reg = <0xf00>;
++ clock-frequency = <800000000>;
+ };
+
-+ clk_uart0: clock@3 {
-+ compatible = "fixed-clock";
-+ reg = <3>;
-+ #clock-cells = <0>;
-+ clock-output-names = "uart0_pclk";
-+ clock-frequency = <3000000>;
++ v7_cpu1: cpu@1 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ reg = <0xf01>;
++ clock-frequency = <800000000>;
+ };
+
-+ clk_apb_p: clock@4 {
-+ compatible = "fixed-clock";
-+ reg = <4>;
-+ #clock-cells = <0>;
-+ clock-output-names = "apb_pclk";
-+ clock-frequency = <126000000>;
++ v7_cpu2: cpu@2 {
++ device_type = "cpu";
++ compatible = "arm,cortex-a7";
++ reg = <0xf0