diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2014-10-01 03:30:45 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2014-10-22 07:49:04 -0400 |
commit | f123a66cbdc47e31bcb11b59f935bed89343a8ed (patch) | |
tree | afdd7a74529aaef990f9ba70bae2b66a57810be0 | |
parent | fa6e2eec15a58ce6a47ad7e8a3ccf3ef917cca35 (diff) |
ARM: realview: add device tree and bindings for PB1176
As a first example, add device tree and bindings for the
RealView PB1176.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | Documentation/devicetree/bindings/arm/arm-boards | 65 | ||||
-rw-r--r-- | Documentation/devicetree/bindings/arm/gic.txt | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/arm-realview-pb1176.dts | 247 |
4 files changed, 314 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards index c554ed3d44fb..556c8665fdbf 100644 --- a/Documentation/devicetree/bindings/arm/arm-boards +++ b/Documentation/devicetree/bindings/arm/arm-boards | |||
@@ -92,3 +92,68 @@ Required nodes: | |||
92 | - core-module: the root node to the Versatile platforms must have | 92 | - core-module: the root node to the Versatile platforms must have |
93 | a core-module with regs and the compatible strings | 93 | a core-module with regs and the compatible strings |
94 | "arm,core-module-versatile", "syscon" | 94 | "arm,core-module-versatile", "syscon" |
95 | |||
96 | ARM RealView Boards | ||
97 | ------------------- | ||
98 | The RealView boards cover tailored evaluation boards that are used to explore | ||
99 | the ARM11 and Cortex A-8 and Cortex A-9 processors. | ||
100 | |||
101 | Required properties (in root node): | ||
102 | /* RealView Emulation Baseboard */ | ||
103 | compatible = "arm,realview-eb"; | ||
104 | /* RealView Platform Baseboard for ARM1176JZF-S */ | ||
105 | compatible = "arm,realview-pb1176"; | ||
106 | /* RealView Platform Baseboard for ARM11 MPCore */ | ||
107 | compatible = "arm,realview-pb11mp"; | ||
108 | /* RealView Platform Baseboard for Cortex A-8 */ | ||
109 | compatible = "arm,realview-pba8"; | ||
110 | /* RealView Platform Baseboard Explore for Cortex A-9 */ | ||
111 | compatible = "arm,realview-pbx"; | ||
112 | |||
113 | Required nodes: | ||
114 | |||
115 | - soc: some node of the RealView platforms must be the SoC | ||
116 | node that contain the SoC-specific devices, withe the compatible | ||
117 | string set to one of these tuples: | ||
118 | "arm,realview-eb-soc", "simple-bus" | ||
119 | "arm,realview-pb1176-soc", "simple-bus" | ||
120 | "arm,realview-pb11mp-soc", "simple-bus" | ||
121 | "arm,realview-pba8-soc", "simple-bus" | ||
122 | "arm,realview-pbx-soc", "simple-bus" | ||
123 | |||
124 | - syscon: some subnode of the RealView SoC node must be a | ||
125 | system controller node pointing to the control registers, | ||
126 | with the compatible string set to one of these tuples: | ||
127 | "arm,realview-eb-syscon", "syscon" | ||
128 | "arm,realview-pb1176-syscon", "syscon" | ||
129 | "arm,realview-pb11mp-syscon", "syscon" | ||
130 | "arm,realview-pba8-syscon", "syscon" | ||
131 | "arm,realview-pbx-syscon", "syscon" | ||
132 | |||
133 | Required properties for the system controller: | ||
134 | - regs: the location and size of the system controller registers, | ||
135 | one range of 0x1000 bytes. | ||
136 | |||
137 | Example: | ||
138 | |||
139 | /dts-v1/; | ||
140 | #include <dt-bindings/interrupt-controller/irq.h> | ||
141 | #include "skeleton.dtsi" | ||
142 | |||
143 | / { | ||
144 | model = "ARM RealView PB1176 with device tree"; | ||
145 | compatible = "arm,realview-pb1176"; | ||
146 | |||
147 | soc { | ||
148 | #address-cells = <1>; | ||
149 | #size-cells = <1>; | ||
150 | compatible = "arm,realview-pb1176-soc", "simple-bus"; | ||
151 | ranges; | ||
152 | |||
153 | syscon: syscon@10000000 { | ||
154 | compatible = "arm,realview-syscon", "syscon"; | ||
155 | reg = <0x10000000 0x1000>; | ||
156 | }; | ||
157 | |||
158 | }; | ||
159 | }; | ||
diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index c7d2fa156678..b38608af66db 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt | |||
@@ -17,6 +17,7 @@ Main node required properties: | |||
17 | "arm,cortex-a7-gic" | 17 | "arm,cortex-a7-gic" |
18 | "arm,arm11mp-gic" | 18 | "arm,arm11mp-gic" |
19 | "brcm,brahma-b15-gic" | 19 | "brcm,brahma-b15-gic" |
20 | "arm,arm1176jzf-devchip-gic" | ||
20 | - interrupt-controller : Identifies the node as an interrupt controller | 21 | - interrupt-controller : Identifies the node as an interrupt controller |
21 | - #interrupt-cells : Specifies the number of cells needed to encode an | 22 | - #interrupt-cells : Specifies the number of cells needed to encode an |
22 | interrupt source. The type shall be a <u32> and the value shall be 3. | 23 | 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 38c89cafa1ab..ab4435a59cd1 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
@@ -363,6 +363,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \ | |||
363 | qcom-msm8660-surf.dtb \ | 363 | qcom-msm8660-surf.dtb \ |
364 | qcom-msm8960-cdp.dtb \ | 364 | qcom-msm8960-cdp.dtb \ |
365 | qcom-msm8974-sony-xperia-honami.dtb | 365 | qcom-msm8974-sony-xperia-honami.dtb |
366 | dtb-$(CONFIG_ARCH_REALVIEW) += arm-realview-pb1176.dtb | ||
366 | dtb-$(CONFIG_ARCH_ROCKCHIP) += \ | 367 | dtb-$(CONFIG_ARCH_ROCKCHIP) += \ |
367 | rk3066a-bqcurie2.dtb \ | 368 | rk3066a-bqcurie2.dtb \ |
368 | rk3188-radxarock.dtb \ | 369 | rk3188-radxarock.dtb \ |
diff --git a/arch/arm/boot/dts/arm-realview-pb1176.dts b/arch/arm/boot/dts/arm-realview-pb1176.dts new file mode 100644 index 000000000000..3135939cd13f --- /dev/null +++ b/arch/arm/boot/dts/arm-realview-pb1176.dts | |||
@@ -0,0 +1,247 @@ | |||
1 | /* | ||
2 | * Copyright 2014 Linaro Ltd | ||
3 | * | ||
4 | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
5 | * of this software and associated documentation files (the "Software"), to deal | ||
6 | * in the Software without restriction, including without limitation the rights | ||
7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
8 | * copies of the Software, and to permit persons to whom the Software is | ||
9 | * furnished to do so, subject to the following conditions: | ||
10 | * | ||
11 | * The above copyright notice and this permission notice shall be included in | ||
12 | * all copies or substantial portions of the Software. | ||
13 | * | ||
14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
17 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
18 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
19 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
20 | * THE SOFTWARE. | ||
21 | */ | ||
22 | |||
23 | /dts-v1/; | ||
24 | #include <dt-bindings/interrupt-controller/irq.h> | ||
25 | #include "skeleton.dtsi" | ||
26 | |||
27 | / { | ||
28 | model = "ARM RealView PB1176"; | ||
29 | compatible = "arm,realview-pb1176"; | ||
30 | |||
31 | chosen { }; | ||
32 | |||
33 | aliases { | ||
34 | serial0 = &pb1176_serial0; | ||
35 | serial1 = &pb1176_serial1; | ||
36 | serial2 = &pb1176_serial2; | ||
37 | serial3 = &pb1176_serial3; | ||
38 | }; | ||
39 | |||
40 | memory { | ||
41 | /* 128 MiB memory @ 0x0 */ | ||
42 | reg = <0x00000000 0x08000000>; | ||
43 | }; | ||
44 | |||
45 | xtal24mhz: xtal24mhz@24M { | ||
46 | #clock-cells = <0>; | ||
47 | compatible = "fixed-clock"; | ||
48 | clock-frequency = <24000000>; | ||
49 | }; | ||
50 | |||
51 | timclk: timclk@1M { | ||
52 | #clock-cells = <0>; | ||
53 | compatible = "fixed-factor-clock"; | ||
54 | clock-div = <24>; | ||
55 | clock-mult = <1>; | ||
56 | clocks = <&xtal24mhz>; | ||
57 | }; | ||
58 | |||
59 | uartclk: uartclk@24M { | ||
60 | #clock-cells = <0>; | ||
61 | compatible = "fixed-factor-clock"; | ||
62 | clock-div = <1>; | ||
63 | clock-mult = <1>; | ||
64 | clocks = <&xtal24mhz>; | ||
65 | }; | ||
66 | |||
67 | /* FIXME: this actually hangs off the PLL clocks */ | ||
68 | pclk: pclk@0 { | ||
69 | #clock-cells = <0>; | ||
70 | compatible = "fixed-clock"; | ||
71 | clock-frequency = <0>; | ||
72 | }; | ||
73 | |||
74 | soc { | ||
75 | #address-cells = <1>; | ||
76 | #size-cells = <1>; | ||
77 | compatible = "arm,realview-pb1176-soc", "simple-bus"; | ||
78 | regmap = <&syscon>; | ||
79 | ranges; | ||
80 | |||
81 | syscon: syscon@10000000 { | ||
82 | compatible = "arm,realview-pb1176-syscon", "syscon"; | ||
83 | reg = <0x10000000 0x1000>; | ||
84 | |||
85 | led@08.0 { | ||
86 | compatible = "register-bit-led"; | ||
87 | offset = <0x08>; | ||
88 | mask = <0x01>; | ||
89 | label = "versatile:0"; | ||
90 | linux,default-trigger = "heartbeat"; | ||
91 | default-state = "on"; | ||
92 | }; | ||
93 | led@08.1 { | ||
94 | compatible = "register-bit-led"; | ||
95 | offset = <0x08>; | ||
96 | mask = <0x02>; | ||
97 | label = "versatile:1"; | ||
98 | linux,default-trigger = "mmc0"; | ||
99 | default-state = "off"; | ||
100 | }; | ||
101 | led@08.2 { | ||
102 | compatible = "register-bit-led"; | ||
103 | offset = <0x08>; | ||
104 | mask = <0x04>; | ||
105 | label = "versatile:2"; | ||
106 | linux,default-trigger = "cpu0"; | ||
107 | default-state = "off"; | ||
108 | }; | ||
109 | led@08.3 { | ||
110 | compatible = "register-bit-led"; | ||
111 | offset = <0x08>; | ||
112 | mask = <0x08>; | ||
113 | label = "versatile:3"; | ||
114 | default-state = "off"; | ||
115 | }; | ||
116 | led@08.4 { | ||
117 | compatible = "register-bit-led"; | ||
118 | offset = <0x08>; | ||
119 | mask = <0x10>; | ||
120 | label = "versatile:4"; | ||
121 | default-state = "off"; | ||
122 | }; | ||
123 | led@08.5 { | ||
124 | compatible = "register-bit-led"; | ||
125 | offset = <0x08>; | ||
126 | mask = <0x20>; | ||
127 | label = "versatile:5"; | ||
128 | default-state = "off"; | ||
129 | }; | ||
130 | led@08.6 { | ||
131 | compatible = "register-bit-led"; | ||
132 | offset = <0x08>; | ||
133 | mask = <0x40>; | ||
134 | label = "versatile:6"; | ||
135 | default-state = "off"; | ||
136 | }; | ||
137 | led@08.7 { | ||
138 | compatible = "register-bit-led"; | ||
139 | offset = <0x08>; | ||
140 | mask = <0x80>; | ||
141 | label = "versatile:7"; | ||
142 | default-state = "off"; | ||
143 | }; | ||
144 | }; | ||
145 | |||
146 | /* Primary DevChip GIC synthesized with the CPU */ | ||
147 | intc_dc1176: interrupt-controller@10120000 { | ||
148 | compatible = "arm,arm1176jzf-devchip-gic", "arm,arm11mp-gic"; | ||
149 | #interrupt-cells = <3>; | ||
150 | #address-cells = <1>; | ||
151 | interrupt-controller; | ||
152 | reg = <0x10121000 0x1000>, | ||
153 | <0x10120000 0x100>; | ||
154 | }; | ||
155 | |||
156 | /* This GIC on the board is cascaded off the DevChip GIC */ | ||
157 | intc_pb1176: interrupt-controller@10040000 { | ||
158 | compatible = "arm,arm1176jzf-devchip-gic", "arm,arm11mp-gic"; | ||
159 | #interrupt-cells = <3>; | ||
160 | #address-cells = <1>; | ||
161 | interrupt-controller; | ||
162 | reg = <0x10041000 0x1000>, | ||
163 | <0x10040000 0x100>; | ||
164 | interrupt-parent = <&intc_dc1176>; | ||
165 | interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>; | ||
166 | }; | ||
167 | |||
168 | L2: l2-cache { | ||
169 | compatible = "arm,l220-cache"; | ||
170 | reg = <0x10110000 0x1000>; | ||
171 | interrupt-parent = <&intc_dc1176>; | ||
172 | interrupts = <0 13 IRQ_TYPE_LEVEL_HIGH>; | ||
173 | cache-unified; | ||
174 | cache-level = <2>; | ||
175 | /* | ||
176 | * Override default cache size, sets and | ||
177 | * associativity as these may be erroneously set | ||
178 | * up by boot loader(s). | ||
179 | */ | ||
180 | arm,override-auxreg; | ||
181 | cache-size = <131072>; // 128kB | ||
182 | cache-sets = <512>; | ||
183 | cache-line-size = <32>; | ||
184 | }; | ||
185 | |||
186 | pmu { | ||
187 | compatible = "arm,arm1176-pmu"; | ||
188 | interrupt-parent = <&intc_dc1176>; | ||
189 | interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>; | ||
190 | }; | ||
191 | |||
192 | timer01: timer@10104000 { | ||
193 | compatible = "arm,sp804", "arm,primecell"; | ||
194 | reg = <0x10104000 0x1000>; | ||
195 | interrupt-parent = <&intc_dc1176>; | ||
196 | interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>, <0 9 IRQ_TYPE_LEVEL_HIGH>; | ||
197 | clocks = <&timclk>, <&timclk>, <&pclk>; | ||
198 | clock-names = "timer1", "timer2", "apb_pclk"; | ||
199 | }; | ||
200 | |||
201 | timer23: timer@10105000 { | ||
202 | compatible = "arm,sp804", "arm,primecell"; | ||
203 | reg = <0x10105000 0x1000>; | ||
204 | interrupt-parent = <&intc_dc1176>; | ||
205 | interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>; | ||
206 | arm,sp804-has-irq = <1>; | ||
207 | clocks = <&timclk>, <&timclk>, <&pclk>; | ||
208 | clock-names = "timer1", "timer2", "apb_pclk"; | ||
209 | }; | ||
210 | |||
211 | pb1176_serial0: serial@1010c000 { | ||
212 | compatible = "arm,pl011", "arm,primecell"; | ||
213 | reg = <0x1010c000 0x1000>; | ||
214 | interrupt-parent = <&intc_dc1176>; | ||
215 | interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>; | ||
216 | clocks = <&uartclk>, <&pclk>; | ||
217 | clock-names = "uartclk", "apb_pclk"; | ||
218 | }; | ||
219 | |||
220 | pb1176_serial1: serial@1010d000 { | ||
221 | compatible = "arm,pl011", "arm,primecell"; | ||
222 | reg = <0x1010d000 0x1000>; | ||
223 | interrupt-parent = <&intc_dc1176>; | ||
224 | interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>; | ||
225 | clocks = <&uartclk>, <&pclk>; | ||
226 | clock-names = "uartclk", "apb_pclk"; | ||
227 | }; | ||
228 | |||
229 | pb1176_serial2: serial@1010e000 { | ||
230 | compatible = "arm,pl011", "arm,primecell"; | ||
231 | reg = <0x1010e000 0x1000>; | ||
232 | interrupt-parent = <&intc_dc1176>; | ||
233 | interrupts = <0 20 IRQ_TYPE_LEVEL_HIGH>; | ||
234 | clocks = <&uartclk>, <&pclk>; | ||
235 | clock-names = "uartclk", "apb_pclk"; | ||
236 | }; | ||
237 | |||
238 | pb1176_serial3: serial@1010f000 { | ||
239 | compatible = "arm,pl011", "arm,primecell"; | ||
240 | reg = <0x1010f000 0x1000>; | ||
241 | interrupt-parent = <&intc_dc1176>; | ||
242 | interrupts = <0 21 IRQ_TYPE_LEVEL_HIGH>; | ||
243 | clocks = <&uartclk>, <&pclk>; | ||
244 | clock-names = "uartclk", "apb_pclk"; | ||
245 | }; | ||
246 | }; | ||
247 | }; | ||