These are taken from Eric Anholt's April series here:

https://patchwork.kernel.org/patch/6252531/

I doubt they final. We can update then here or bring in the kernel version
when it lands.

Signed-off-by: Simon Glass <s...@chromium.org>
---

Changes in v3: None
Changes in v2:
- Add support for Raspberry Pi 2

 arch/arm/dts/Makefile                              |   3 +-
 arch/arm/dts/bcm2835-rpi-b.dts                     |   3 +-
 arch/arm/dts/bcm2835.dtsi                          | 161 +--------------------
 arch/arm/dts/bcm2836-rpi-2-b.dts                   |  30 ++++
 arch/arm/dts/bcm2836.dtsi                          |  42 ++++++
 arch/arm/dts/bcm283x-common.dtsi                   | 157 ++++++++++++++++++++
 .../arm/dts/{bcm2835-rpi.dtsi => bcm283x-rpi.dtsi} |   2 -
 doc/device-tree-bindings/arm/bcm/brcm,bcm2835.txt  |   8 +
 doc/device-tree-bindings/arm/bcm/brcm,bcm2836.txt  |  10 ++
 9 files changed, 252 insertions(+), 164 deletions(-)
 create mode 100644 arch/arm/dts/bcm2836-rpi-2-b.dts
 create mode 100644 arch/arm/dts/bcm2836.dtsi
 create mode 100644 arch/arm/dts/bcm283x-common.dtsi
 rename arch/arm/dts/{bcm2835-rpi.dtsi => bcm283x-rpi.dtsi} (96%)
 create mode 100644 doc/device-tree-bindings/arm/bcm/brcm,bcm2835.txt
 create mode 100644 doc/device-tree-bindings/arm/bcm/brcm,bcm2836.txt

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 949048c..8d25596 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -52,7 +52,8 @@ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \
        zynq-zc770-xm013.dtb
 dtb-$(CONFIG_AM33XX) += am335x-boneblack.dtb
 
-dtb-$(CONFIG_ARCH_BCM283X) += bcm2835-rpi-b.dtb
+dtb-$(CONFIG_ARCH_BCM283X) += bcm2835-rpi-b.dtb \
+       bcm2836-rpi-2-b.dtb
 
 dtb-$(CONFIG_ARCH_SOCFPGA) +=                          \
        socfpga_arria5_socdk.dtb                        \
diff --git a/arch/arm/dts/bcm2835-rpi-b.dts b/arch/arm/dts/bcm2835-rpi-b.dts
index ee89b79..58d3520 100644
--- a/arch/arm/dts/bcm2835-rpi-b.dts
+++ b/arch/arm/dts/bcm2835-rpi-b.dts
@@ -1,5 +1,6 @@
 /dts-v1/;
-#include "bcm2835-rpi.dtsi"
+#include "bcm2835.dtsi"
+#include "bcm283x-rpi.dtsi"
 
 / {
        compatible = "raspberrypi,model-b", "brcm,bcm2835";
diff --git a/arch/arm/dts/bcm2835.dtsi b/arch/arm/dts/bcm2835.dtsi
index bd6bff6..dd2ce18 100644
--- a/arch/arm/dts/bcm2835.dtsi
+++ b/arch/arm/dts/bcm2835.dtsi
@@ -1,5 +1,6 @@
 #include <dt-bindings/pinctrl/bcm2835.h>
 #include "skeleton.dtsi"
+#include "bcm283x-common.dtsi"
 
 / {
        compatible = "brcm,bcm2835";
@@ -26,169 +27,9 @@
                        clock-frequency = <1000000>;
                };
 
-               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>;
-
-                       #dma-cells = <1>;
-                       brcm,dma-channel-mask = <0x7f35>;
-               };
-
-               intc: interrupt-controller@7e00b200 {
-                       compatible = "brcm,bcm2835-armctrl-ic";
-                       reg = <0x7e00b200 0x200>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               watchdog@7e100000 {
-                       compatible = "brcm,bcm2835-pm-wdt";
-                       reg = <0x7e100000 0x28>;
-               };
-
-               rng@7e104000 {
-                       compatible = "brcm,bcm2835-rng";
-                       reg = <0x7e104000 0x10>;
-               };
-
-               mailbox: mailbox@7e00b800 {
-                       compatible = "brcm,bcm2835-mbox";
-                       reg = <0x7e00b880 0x40>;
-                       interrupts = <0 1>;
-                       #mbox-cells = <0>;
-               };
-
-               gpio: gpio@7e200000 {
-                       compatible = "brcm,bcm2835-gpio";
-                       reg = <0x7e200000 0xb4>;
-                       /*
-                        * The GPIO IP block is designed for 3 banks of GPIOs.
-                        * Each bank has a GPIO interrupt for itself.
-                        * There is an overall "any bank" interrupt.
-                        * In order, these are GIC interrupts 17, 18, 19, 20.
-                        * Since the BCM2835 only has 2 banks, the 2nd bank
-                        * interrupt output appears to be mirrored onto the
-                        * 3rd bank's interrupt signal.
-                        * So, a bank0 interrupt shows up on 17, 20, and
-                        * a bank1 interrupt shows up on 18, 19, 20!
-                        */
-                       interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
-
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               uart: uart@7e201000 {
-                       compatible = "brcm,bcm2835-pl011", "arm,pl011", 
"arm,primecell";
-                       reg = <0x7e201000 0x1000>;
-                       interrupts = <2 25>;
-                       clock-frequency = <3000000>;
-                       arm,primecell-periphid = <0x00241011>;
-               };
-
-               i2s: i2s@7e203000 {
-                       compatible = "brcm,bcm2835-i2s";
-                       reg = <0x7e203000 0x20>,
-                             <0x7e101098 0x02>;
-
-                       dmas = <&dma 2>,
-                              <&dma 3>;
-                       dma-names = "tx", "rx";
-                       status = "disabled";
-               };
-
-               spi: spi@7e204000 {
-                       compatible = "brcm,bcm2835-spi";
-                       reg = <0x7e204000 0x1000>;
-                       interrupts = <2 22>;
-                       clocks = <&clk_spi>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-               };
-
-               i2c0: i2c@7e205000 {
-                       compatible = "brcm,bcm2835-i2c";
-                       reg = <0x7e205000 0x1000>;
-                       interrupts = <2 21>;
-                       clocks = <&clk_i2c>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-               };
-
-               sdhci: sdhci@7e300000 {
-                       compatible = "brcm,bcm2835-sdhci";
-                       reg = <0x7e300000 0x100>;
-                       interrupts = <2 30>;
-                       clocks = <&clk_mmc>;
-                       status = "disabled";
-               };
-
-               i2c1: i2c@7e804000 {
-                       compatible = "brcm,bcm2835-i2c";
-                       reg = <0x7e804000 0x1000>;
-                       interrupts = <2 21>;
-                       clocks = <&clk_i2c>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       status = "disabled";
-               };
-
-               usb@7e980000 {
-                       compatible = "brcm,bcm2835-usb";
-                       reg = <0x7e980000 0x10000>;
-                       interrupts = <1 9>;
-               };
-
                arm-pmu {
                        compatible = "arm,arm1176-pmu";
                };
        };
 
-       clocks {
-               compatible = "simple-bus";
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               clk_mmc: clock@0 {
-                       compatible = "fixed-clock";
-                       reg = <0>;
-                       #clock-cells = <0>;
-                       clock-output-names = "mmc";
-                       clock-frequency = <100000000>;
-               };
-
-               clk_i2c: clock@1 {
-                       compatible = "fixed-clock";
-                       reg = <1>;
-                       #clock-cells = <0>;
-                       clock-output-names = "i2c";
-                       clock-frequency = <250000000>;
-               };
-
-               clk_spi: clock@2 {
-                       compatible = "fixed-clock";
-                       reg = <2>;
-                       #clock-cells = <0>;
-                       clock-output-names = "spi";
-                       clock-frequency = <250000000>;
-               };
-       };
 };
diff --git a/arch/arm/dts/bcm2836-rpi-2-b.dts b/arch/arm/dts/bcm2836-rpi-2-b.dts
new file mode 100644
index 0000000..fe1c1bf
--- /dev/null
+++ b/arch/arm/dts/bcm2836-rpi-2-b.dts
@@ -0,0 +1,30 @@
+/dts-v1/;
+#include "bcm2836.dtsi"
+#include "bcm283x-rpi.dtsi"
+
+/ {
+       compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
+       model = "Raspberry Pi 2 Model B";
+       leds {
+               act {
+                       gpios = <&gpio 47 0>;
+               };
+
+               pwr {
+                       label = "PWR";
+                       gpios = <&gpio 35 0>;
+                       default-state = "keep";
+                       linux,default-trigger = "default-on";
+               };
+       };
+};
+
+&gpio {
+       pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+
+       /* I2S interface */
+       i2s_alt0: i2s_alt0 {
+               brcm,pins = <18 19 20 21>;
+               brcm,function = <BCM2835_FSEL_ALT0>;
+       };
+};
\ No newline at end of file
diff --git a/arch/arm/dts/bcm2836.dtsi b/arch/arm/dts/bcm2836.dtsi
new file mode 100644
index 0000000..a3d7b67
--- /dev/null
+++ b/arch/arm/dts/bcm2836.dtsi
@@ -0,0 +1,42 @@
+#include <dt-bindings/pinctrl/bcm2835.h>
+#include "skeleton.dtsi"
+#include "bcm283x-common.dtsi"
+
+/ {
+       compatible = "brcm,bcm2836";
+       model = "BCM2836";
+       interrupt-parent = <&intc>;
+
+       chosen {
+               bootargs = "earlyprintk console=ttyAMA0";
+               stdout-path = &uart;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x7e000000 0x3f000000 0x01000000>;
+               dma-ranges = <0x40000000 0x00000000 0x20000000>;
+               u-boot,dm-pre-reloc;
+
+               timer@7e003000 {
+                       compatible = "brcm,bcm2835-system-timer";
+                       reg = <0x7e003000 0x1000>;
+                       interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
+                       clock-frequency = <1000000>;
+               };
+       };
+
+       cpus: cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               v7_cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0xf00>;
+                       clock-frequency = <800000000>;
+               };
+       };
+};
diff --git a/arch/arm/dts/bcm283x-common.dtsi b/arch/arm/dts/bcm283x-common.dtsi
new file mode 100644
index 0000000..b868ff5
--- /dev/null
+++ b/arch/arm/dts/bcm283x-common.dtsi
@@ -0,0 +1,157 @@
+/ {
+       soc {
+               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>;
+
+                       #dma-cells = <1>;
+                       brcm,dma-channel-mask = <0x7f35>;
+               };
+
+               intc: interrupt-controller@7e00b200 {
+                       compatible = "brcm,bcm2835-armctrl-ic";
+                       reg = <0x7e00b200 0x200>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               watchdog@7e100000 {
+                       compatible = "brcm,bcm2835-pm-wdt";
+                       reg = <0x7e100000 0x28>;
+               };
+
+               rng@7e104000 {
+                       compatible = "brcm,bcm2835-rng";
+                       reg = <0x7e104000 0x10>;
+               };
+
+               gpio: gpio@7e200000 {
+                       compatible = "brcm,bcm2835-gpio";
+                       reg = <0x7e200000 0xb4>;
+                       /*
+                        * The GPIO IP block is designed for 3 banks of GPIOs.
+                        * Each bank has a GPIO interrupt for itself.
+                        * There is an overall "any bank" interrupt.
+                        * In order, these are GIC interrupts 17, 18, 19, 20.
+                        * Since the BCM2835 only has 2 banks, the 2nd bank
+                        * interrupt output appears to be mirrored onto the
+                        * 3rd bank's interrupt signal.
+                        * So, a bank0 interrupt shows up on 17, 20, and
+                        * a bank1 interrupt shows up on 18, 19, 20!
+                        */
+                       interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               uart: uart@7e201000 {
+                       compatible = "brcm,bcm2835-pl011", "arm,pl011", 
"arm,primecell";
+                       reg = <0x7e201000 0x1000>;
+                       interrupts = <2 25>;
+                       clock-frequency = <3000000>;
+                       arm,primecell-periphid = <0x00241011>;
+               };
+
+               i2s: i2s@7e203000 {
+                       compatible = "brcm,bcm2835-i2s";
+                       reg = <0x7e203000 0x20>,
+                             <0x7e101098 0x02>;
+
+                       dmas = <&dma 2>,
+                              <&dma 3>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               spi: spi@7e204000 {
+                       compatible = "brcm,bcm2835-spi";
+                       reg = <0x7e204000 0x1000>;
+                       interrupts = <2 22>;
+                       clocks = <&clk_spi>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c0: i2c@7e205000 {
+                       compatible = "brcm,bcm2835-i2c";
+                       reg = <0x7e205000 0x1000>;
+                       interrupts = <2 21>;
+                       clocks = <&clk_i2c>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               sdhci: sdhci@7e300000 {
+                       compatible = "brcm,bcm2835-sdhci";
+                       reg = <0x7e300000 0x100>;
+                       interrupts = <2 30>;
+                       clocks = <&clk_mmc>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@7e804000 {
+                       compatible = "brcm,bcm2835-i2c";
+                       reg = <0x7e804000 0x1000>;
+                       interrupts = <2 21>;
+                       clocks = <&clk_i2c>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               usb@7e980000 {
+                       compatible = "brcm,bcm2835-usb";
+                       reg = <0x7e980000 0x10000>;
+                       interrupts = <1 9>;
+               };
+       };
+
+       clocks {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               clk_mmc: clock@0 {
+                       compatible = "fixed-clock";
+                       reg = <0>;
+                       #clock-cells = <0>;
+                       clock-output-names = "mmc";
+                       clock-frequency = <100000000>;
+               };
+
+               clk_i2c: clock@1 {
+                       compatible = "fixed-clock";
+                       reg = <1>;
+                       #clock-cells = <0>;
+                       clock-output-names = "i2c";
+                       clock-frequency = <250000000>;
+               };
+
+               clk_spi: clock@2 {
+                       compatible = "fixed-clock";
+                       reg = <2>;
+                       #clock-cells = <0>;
+                       clock-output-names = "spi";
+                       clock-frequency = <250000000>;
+               };
+       };
+};
diff --git a/arch/arm/dts/bcm2835-rpi.dtsi b/arch/arm/dts/bcm283x-rpi.dtsi
similarity index 96%
rename from arch/arm/dts/bcm2835-rpi.dtsi
rename to arch/arm/dts/bcm283x-rpi.dtsi
index 46780bb..e68cb6e 100644
--- a/arch/arm/dts/bcm2835-rpi.dtsi
+++ b/arch/arm/dts/bcm283x-rpi.dtsi
@@ -1,5 +1,3 @@
-#include "bcm2835.dtsi"
-
 / {
        memory {
                reg = <0 0x10000000>;
diff --git a/doc/device-tree-bindings/arm/bcm/brcm,bcm2835.txt 
b/doc/device-tree-bindings/arm/bcm/brcm,bcm2835.txt
new file mode 100644
index 0000000..ac68348
--- /dev/null
+++ b/doc/device-tree-bindings/arm/bcm/brcm,bcm2835.txt
@@ -0,0 +1,8 @@
+Broadcom BCM2835 device tree bindings
+-------------------------------------------
+
+Boards with the BCM2835 SoC shall have the following properties:
+
+Required root node property:
+
+compatible = "brcm,bcm2835";
diff --git a/doc/device-tree-bindings/arm/bcm/brcm,bcm2836.txt 
b/doc/device-tree-bindings/arm/bcm/brcm,bcm2836.txt
new file mode 100644
index 0000000..5e255ec
--- /dev/null
+++ b/doc/device-tree-bindings/arm/bcm/brcm,bcm2836.txt
@@ -0,0 +1,10 @@
+Broadcom BCM2836 device tree bindings
+-------------------------------------------
+
+Raspberry Pi 2 Model B
+Required root node properties:
+compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
+
+Generic BCM2836 board
+Required root node properties:
+compatible = "brcm,bcm2836";
-- 
2.5.0.rc2.392.g76e840b

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to