diff options
author | Arnd Bergmann <arnd@arndb.de> | 2014-07-28 11:05:17 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2014-07-28 11:05:59 -0400 |
commit | 8cfb4e3d302680baa9d425a8175bb86d3d0443e3 (patch) | |
tree | 04f8baa3031ff31d58753658ecfa763755e5ff15 | |
parent | 565f46dc4d0c12dda1353dbd76314614c7069c20 (diff) | |
parent | 79187a8e242046a0525a296509e80c5ee24fbaf1 (diff) |
Merge tag 'for-3.17/bcm-dt' of git://github.com/broadcom/mach-bcm into next/dt
Merge "ARM: mach-bcm: dt updatees for 3.17" from Matt Porter:
- BCM Mobile SMP support
- BRCM STB platform support
* tag 'for-3.17/bcm-dt' of git://github.com/broadcom/mach-bcm:
ARM: brcmstb: dts: add a reference DTS for Broadcom 7445
ARM: brcmstb: gic: add compatible string for Broadcom Brahma15
ARM: brcmstb: add misc. DT bindings for brcmstb
ARM: brcmstb: add CPU binding for Broadcom Brahma15
ARM: dts: enable SMP support for bcm21664
ARM: dts: enable SMP support for bcm28155
devicetree: bindings: document Broadcom CPU enable method
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r-- | Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method | 36 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/brcm-brcmstb.txt | 95 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/cpus.txt | 2 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/gic.txt | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/bcm11351.dtsi | 19 | ||||
-rw-r--r-- | arch/arm/boot/dts/bcm21664.dtsi | 19 | ||||
-rw-r--r-- | arch/arm/boot/dts/bcm7445-bcm97445svmb.dts | 14 | ||||
-rw-r--r-- | arch/arm/boot/dts/bcm7445.dtsi | 111 |
9 files changed, 299 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method new file mode 100644 index 000000000000..8240c023e202 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/bcm/brcm,bcm11351-cpu-method | |||
@@ -0,0 +1,36 @@ | |||
1 | Broadcom Kona Family CPU Enable Method | ||
2 | -------------------------------------- | ||
3 | This binding defines the enable method used for starting secondary | ||
4 | CPUs in the following Broadcom SoCs: | ||
5 | BCM11130, BCM11140, BCM11351, BCM28145, BCM28155, BCM21664 | ||
6 | |||
7 | The enable method is specified by defining the following required | ||
8 | properties in the "cpus" device tree node: | ||
9 | - enable-method = "brcm,bcm11351-cpu-method"; | ||
10 | - secondary-boot-reg = <...>; | ||
11 | |||
12 | The secondary-boot-reg property is a u32 value that specifies the | ||
13 | physical address of the register used to request the ROM holding pen | ||
14 | code release a secondary CPU. The value written to the register is | ||
15 | formed by encoding the target CPU id into the low bits of the | ||
16 | physical start address it should jump to. | ||
17 | |||
18 | Example: | ||
19 | cpus { | ||
20 | #address-cells = <1>; | ||
21 | #size-cells = <0>; | ||
22 | enable-method = "brcm,bcm11351-cpu-method"; | ||
23 | secondary-boot-reg = <0x3500417c>; | ||
24 | |||
25 | cpu0: cpu@0 { | ||
26 | device_type = "cpu"; | ||
27 | compatible = "arm,cortex-a9"; | ||
28 | reg = <0>; | ||
29 | }; | ||
30 | |||
31 | cpu1: cpu@1 { | ||
32 | device_type = "cpu"; | ||
33 | compatible = "arm,cortex-a9"; | ||
34 | reg = <1>; | ||
35 | }; | ||
36 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt new file mode 100644 index 000000000000..3c436cc4f35d --- /dev/null +++ b/Documentation/devicetree/bindings/arm/brcm-brcmstb.txt | |||
@@ -0,0 +1,95 @@ | |||
1 | ARM Broadcom STB platforms Device Tree Bindings | ||
2 | ----------------------------------------------- | ||
3 | Boards with Broadcom Brahma15 ARM-based BCMxxxx (generally BCM7xxx variants) | ||
4 | SoC shall have the following DT organization: | ||
5 | |||
6 | Required root node properties: | ||
7 | - compatible: "brcm,bcm<chip_id>", "brcm,brcmstb" | ||
8 | |||
9 | example: | ||
10 | / { | ||
11 | #address-cells = <2>; | ||
12 | #size-cells = <2>; | ||
13 | model = "Broadcom STB (bcm7445)"; | ||
14 | compatible = "brcm,bcm7445", "brcm,brcmstb"; | ||
15 | |||
16 | Further, syscon nodes that map platform-specific registers used for general | ||
17 | system control is required: | ||
18 | |||
19 | - compatible: "brcm,bcm<chip_id>-sun-top-ctrl", "syscon" | ||
20 | - compatible: "brcm,bcm<chip_id>-hif-cpubiuctrl", "syscon" | ||
21 | - compatible: "brcm,bcm<chip_id>-hif-continuation", "syscon" | ||
22 | |||
23 | example: | ||
24 | rdb { | ||
25 | #address-cells = <1>; | ||
26 | #size-cells = <1>; | ||
27 | compatible = "simple-bus"; | ||
28 | ranges = <0 0x00 0xf0000000 0x1000000>; | ||
29 | |||
30 | sun_top_ctrl: syscon@404000 { | ||
31 | compatible = "brcm,bcm7445-sun-top-ctrl", "syscon"; | ||
32 | reg = <0x404000 0x51c>; | ||
33 | }; | ||
34 | |||
35 | hif_cpubiuctrl: syscon@3e2400 { | ||
36 | compatible = "brcm,bcm7445-hif-cpubiuctrl", "syscon"; | ||
37 | reg = <0x3e2400 0x5b4>; | ||
38 | }; | ||
39 | |||
40 | hif_continuation: syscon@452000 { | ||
41 | compatible = "brcm,bcm7445-hif-continuation", "syscon"; | ||
42 | reg = <0x452000 0x100>; | ||
43 | }; | ||
44 | }; | ||
45 | |||
46 | Lastly, nodes that allow for support of SMP initialization and reboot are | ||
47 | required: | ||
48 | |||
49 | smpboot | ||
50 | ------- | ||
51 | Required properties: | ||
52 | |||
53 | - compatible | ||
54 | The string "brcm,brcmstb-smpboot". | ||
55 | |||
56 | - syscon-cpu | ||
57 | A phandle / integer array property which lets the BSP know the location | ||
58 | of certain CPU power-on registers. | ||
59 | |||
60 | The layout of the property is as follows: | ||
61 | o a phandle to the "hif_cpubiuctrl" syscon node | ||
62 | o offset to the base CPU power zone register | ||
63 | o offset to the base CPU reset register | ||
64 | |||
65 | - syscon-cont | ||
66 | A phandle pointing to the syscon node which describes the CPU boot | ||
67 | continuation registers. | ||
68 | o a phandle to the "hif_continuation" syscon node | ||
69 | |||
70 | example: | ||
71 | smpboot { | ||
72 | compatible = "brcm,brcmstb-smpboot"; | ||
73 | syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>; | ||
74 | syscon-cont = <&hif_continuation>; | ||
75 | }; | ||
76 | |||
77 | reboot | ||
78 | ------- | ||
79 | Required properties | ||
80 | |||
81 | - compatible | ||
82 | The string property "brcm,brcmstb-reboot". | ||
83 | |||
84 | - syscon | ||
85 | A phandle / integer array that points to the syscon node which describes | ||
86 | the general system reset registers. | ||
87 | o a phandle to "sun_top_ctrl" | ||
88 | o offset to the "reset source enable" register | ||
89 | o offset to the "software master reset" register | ||
90 | |||
91 | example: | ||
92 | reboot { | ||
93 | compatible = "brcm,brcmstb-reboot"; | ||
94 | syscon = <&sun_top_ctrl 0x304 0x308>; | ||
95 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index bc6dc176c9fa..298e2f6b33c6 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt | |||
@@ -165,6 +165,7 @@ nodes to be present and contain the properties described below. | |||
165 | "arm,cortex-r4" | 165 | "arm,cortex-r4" |
166 | "arm,cortex-r5" | 166 | "arm,cortex-r5" |
167 | "arm,cortex-r7" | 167 | "arm,cortex-r7" |
168 | "brcm,brahma-b15" | ||
168 | "faraday,fa526" | 169 | "faraday,fa526" |
169 | "intel,sa110" | 170 | "intel,sa110" |
170 | "intel,sa1100" | 171 | "intel,sa1100" |
@@ -186,6 +187,7 @@ nodes to be present and contain the properties described below. | |||
186 | can be one of: | 187 | can be one of: |
187 | "allwinner,sun6i-a31" | 188 | "allwinner,sun6i-a31" |
188 | "arm,psci" | 189 | "arm,psci" |
190 | "brcm,brahma-b15" | ||
189 | "marvell,armada-375-smp" | 191 | "marvell,armada-375-smp" |
190 | "marvell,armada-380-smp" | 192 | "marvell,armada-380-smp" |
191 | "marvell,armada-xp-smp" | 193 | "marvell,armada-xp-smp" |
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index 5573c08d3180..c7d2fa156678 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
@@ -16,6 +16,7 @@ Main node required properties: | |||
16 | "arm,cortex-a9-gic" | 16 | "arm,cortex-a9-gic" |
17 | "arm,cortex-a7-gic" | 17 | "arm,cortex-a7-gic" |
18 | "arm,arm11mp-gic" | 18 | "arm,arm11mp-gic" |
19 | "brcm,brahma-b15-gic" | ||
19 | - interrupt-controller : Identifies the node as an interrupt controller | 20 | - interrupt-controller : Identifies the node as an interrupt controller |
20 | - #interrupt-cells : Specifies the number of cells needed to encode an | 21 | - #interrupt-cells : Specifies the number of cells needed to encode an |
21 | interrupt source. The type shall be a <u32> and the value shall be 3. | 22 | interrupt source. The type shall be a <u32> and the value shall be 3. |
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index f79088e7daa3..56751bf0c8ed 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
@@ -59,6 +59,8 @@ dtb-$(CONFIG_ARCH_BERLIN) += \ | |||
59 | berlin2-sony-nsz-gs7.dtb \ | 59 | berlin2-sony-nsz-gs7.dtb \ |
60 | berlin2cd-google-chromecast.dtb \ | 60 | berlin2cd-google-chromecast.dtb \ |
61 | berlin2q-marvell-dmp.dtb | 61 | berlin2q-marvell-dmp.dtb |
62 | dtb-$(CONFIG_ARCH_BRCMSTB) += \ | ||
63 | bcm7445-bcm97445svmb.dtb | ||
62 | dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \ | 64 | dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \ |
63 | da850-evm.dtb | 65 | da850-evm.dtb |
64 | dtb-$(CONFIG_ARCH_EFM32) += efm32gg-dk3750.dtb | 66 | dtb-$(CONFIG_ARCH_EFM32) += efm32gg-dk3750.dtb |
diff --git a/arch/arm/boot/dts/bcm11351.dtsi b/arch/arm/boot/dts/bcm11351.dtsi index 6b05ae6d476f..2ddaa5136611 100644 --- a/arch/arm/boot/dts/bcm11351.dtsi +++ b/arch/arm/boot/dts/bcm11351.dtsi | |||
@@ -27,6 +27,25 @@ | |||
27 | bootargs = "console=ttyS0,115200n8"; | 27 | bootargs = "console=ttyS0,115200n8"; |
28 | }; | 28 | }; |
29 | 29 | ||
30 | cpus { | ||
31 | #address-cells = <1>; | ||
32 | #size-cells = <0>; | ||
33 | enable-method = "brcm,bcm11351-cpu-method"; | ||
34 | secondary-boot-reg = <0x3500417c>; | ||
35 | |||
36 | cpu0: cpu@0 { | ||
37 | device_type = "cpu"; | ||
38 | compatible = "arm,cortex-a9"; | ||
39 | reg = <0>; | ||
40 | }; | ||
41 | |||
42 | cpu1: cpu@1 { | ||
43 | device_type = "cpu"; | ||
44 | compatible = "arm,cortex-a9"; | ||
45 | reg = <1>; | ||
46 | }; | ||
47 | }; | ||
48 | |||
30 | gic: interrupt-controller@3ff00100 { | 49 | gic: interrupt-controller@3ff00100 { |
31 | compatible = "arm,cortex-a9-gic"; | 50 | compatible = "arm,cortex-a9-gic"; |
32 | #interrupt-cells = <3>; | 51 | #interrupt-cells = <3>; |
diff --git a/arch/arm/boot/dts/bcm21664.dtsi b/arch/arm/boot/dts/bcm21664.dtsi index 8b366822bb43..2016b72a8fb7 100644 --- a/arch/arm/boot/dts/bcm21664.dtsi +++ b/arch/arm/boot/dts/bcm21664.dtsi | |||
@@ -27,6 +27,25 @@ | |||
27 | bootargs = "console=ttyS0,115200n8"; | 27 | bootargs = "console=ttyS0,115200n8"; |
28 | }; | 28 | }; |
29 | 29 | ||
30 | cpus { | ||
31 | #address-cells = <1>; | ||
32 | #size-cells = <0>; | ||
33 | enable-method = "brcm,bcm11351-cpu-method"; | ||
34 | secondary-boot-reg = <0x35004178>; | ||
35 | |||
36 | cpu0: cpu@0 { | ||
37 | device_type = "cpu"; | ||
38 | compatible = "arm,cortex-a9"; | ||
39 | reg = <0>; | ||
40 | }; | ||
41 | |||
42 | cpu1: cpu@1 { | ||
43 | device_type = "cpu"; | ||
44 | compatible = "arm,cortex-a9"; | ||
45 | reg = <1>; | ||
46 | }; | ||
47 | }; | ||
48 | |||
30 | gic: interrupt-controller@3ff00100 { | 49 | gic: interrupt-controller@3ff00100 { |
31 | compatible = "arm,cortex-a9-gic"; | 50 | compatible = "arm,cortex-a9-gic"; |
32 | #interrupt-cells = <3>; | 51 | #interrupt-cells = <3>; |
diff --git a/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts new file mode 100644 index 000000000000..9eec2ac1112f --- /dev/null +++ b/arch/arm/boot/dts/bcm7445-bcm97445svmb.dts | |||
@@ -0,0 +1,14 @@ | |||
1 | /dts-v1/; | ||
2 | #include "bcm7445.dtsi" | ||
3 | |||
4 | / { | ||
5 | model = "Broadcom STB (bcm7445), SVMB reference board"; | ||
6 | compatible = "brcm,bcm7445", "brcm,brcmstb"; | ||
7 | |||
8 | memory { | ||
9 | device_type = "memory"; | ||
10 | reg = <0x00 0x00000000 0x00 0x40000000>, | ||
11 | <0x00 0x40000000 0x00 0x40000000>, | ||
12 | <0x00 0x80000000 0x00 0x40000000>; | ||
13 | }; | ||
14 | }; | ||
diff --git a/arch/arm/boot/dts/bcm7445.dtsi b/arch/arm/boot/dts/bcm7445.dtsi new file mode 100644 index 000000000000..0ca0f4e523d0 --- /dev/null +++ b/arch/arm/boot/dts/bcm7445.dtsi | |||
@@ -0,0 +1,111 @@ | |||
1 | #include <dt-bindings/interrupt-controller/arm-gic.h> | ||
2 | |||
3 | #include "skeleton.dtsi" | ||
4 | |||
5 | / { | ||
6 | #address-cells = <2>; | ||
7 | #size-cells = <2>; | ||
8 | model = "Broadcom STB (bcm7445)"; | ||
9 | compatible = "brcm,bcm7445", "brcm,brcmstb"; | ||
10 | interrupt-parent = <&gic>; | ||
11 | |||
12 | chosen { | ||
13 | bootargs = "console=ttyS0,115200 earlyprintk"; | ||
14 | }; | ||
15 | |||
16 | cpus { | ||
17 | #address-cells = <1>; | ||
18 | #size-cells = <0>; | ||
19 | |||
20 | cpu@0 { | ||
21 | compatible = "brcm,brahma-b15"; | ||
22 | device_type = "cpu"; | ||
23 | enable-method = "brcm,brahma-b15"; | ||
24 | reg = <0>; | ||
25 | }; | ||
26 | |||
27 | cpu@1 { | ||
28 | compatible = "brcm,brahma-b15"; | ||
29 | device_type = "cpu"; | ||
30 | enable-method = "brcm,brahma-b15"; | ||
31 | reg = <1>; | ||
32 | }; | ||
33 | |||
34 | cpu@2 { | ||
35 | compatible = "brcm,brahma-b15"; | ||
36 | device_type = "cpu"; | ||
37 | enable-method = "brcm,brahma-b15"; | ||
38 | reg = <2>; | ||
39 | }; | ||
40 | |||
41 | cpu@3 { | ||
42 | compatible = "brcm,brahma-b15"; | ||
43 | device_type = "cpu"; | ||
44 | enable-method = "brcm,brahma-b15"; | ||
45 | reg = <3>; | ||
46 | }; | ||
47 | }; | ||
48 | |||
49 | gic: interrupt-controller@ffd00000 { | ||
50 | compatible = "brcm,brahma-b15-gic", "arm,cortex-a15-gic"; | ||
51 | reg = <0x00 0xffd01000 0x00 0x1000>, | ||
52 | <0x00 0xffd02000 0x00 0x2000>, | ||
53 | <0x00 0xffd04000 0x00 0x2000>, | ||
54 | <0x00 0xffd06000 0x00 0x2000>; | ||
55 | interrupt-controller; | ||
56 | #interrupt-cells = <3>; | ||
57 | }; | ||
58 | |||
59 | timer { | ||
60 | compatible = "arm,armv7-timer"; | ||
61 | interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>, | ||
62 | <GIC_PPI 14 (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>, | ||
63 | <GIC_PPI 11 (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>, | ||
64 | <GIC_PPI 10 (GIC_CPU_MASK_RAW(15) | IRQ_TYPE_LEVEL_LOW)>; | ||
65 | }; | ||
66 | |||
67 | rdb { | ||
68 | #address-cells = <1>; | ||
69 | #size-cells = <1>; | ||
70 | compatible = "simple-bus"; | ||
71 | ranges = <0 0x00 0xf0000000 0x1000000>; | ||
72 | |||
73 | serial@40ab00 { | ||
74 | compatible = "ns16550a"; | ||
75 | reg = <0x40ab00 0x20>; | ||
76 | reg-shift = <2>; | ||
77 | reg-io-width = <4>; | ||
78 | interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; | ||
79 | clock-frequency = <0x4d3f640>; | ||
80 | }; | ||
81 | |||
82 | sun_top_ctrl: syscon@404000 { | ||
83 | compatible = "brcm,bcm7445-sun-top-ctrl", | ||
84 | "syscon"; | ||
85 | reg = <0x404000 0x51c>; | ||
86 | }; | ||
87 | |||
88 | hif_cpubiuctrl: syscon@3e2400 { | ||
89 | compatible = "brcm,bcm7445-hif-cpubiuctrl", | ||
90 | "syscon"; | ||
91 | reg = <0x3e2400 0x5b4>; | ||
92 | }; | ||
93 | |||
94 | hif_continuation: syscon@452000 { | ||
95 | compatible = "brcm,bcm7445-hif-continuation", | ||
96 | "syscon"; | ||
97 | reg = <0x452000 0x100>; | ||
98 | }; | ||
99 | }; | ||
100 | |||
101 | smpboot { | ||
102 | compatible = "brcm,brcmstb-smpboot"; | ||
103 | syscon-cpu = <&hif_cpubiuctrl 0x88 0x178>; | ||
104 | syscon-cont = <&hif_continuation>; | ||
105 | }; | ||
106 | |||
107 | reboot { | ||
108 | compatible = "brcm,brcmstb-reboot"; | ||
109 | syscon = <&sun_top_ctrl 0x304 0x308>; | ||
110 | }; | ||
111 | }; | ||