diff options
author | Olof Johansson <olof@lixom.net> | 2014-11-04 01:22:40 -0500 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2014-11-04 01:23:34 -0500 |
commit | a3206509f634fd5838e50330c72eee0ce318332f (patch) | |
tree | 85c911754e06a0fd1594362a9ebdea4767344d1a | |
parent | b2b2490a991b208e36cd701977d6f5f68edb3aef (diff) | |
parent | 10d8ddee10b886e4aec0d3e44a73cfa7c35e72e0 (diff) |
Merge tag 'arm-realview-dt-for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator into next/dt
Merge "RealView DeviceTree support for v3.19" from Linus Walleij:
- Device Tree implementation for the ARM RealView boards
- DTS file for the ARM RealView PB1176
- Updates on top of the same DTS file
* tag 'arm-realview-dt-for-arm-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-integrator:
ARM: realview: add MMCI to the PB1176 DTS
ARM: realview: add KMIs to the PB1176 DTS
ARM: realview: add FPGA UART4 to PB1176 DTS
ARM: realview: add PL022 SSP/SPI block to PB1176 DTS
ARM: realview: add RTC clocks to device tree
ARM: realview: add charlcd to PB1176 device tree
ARM: realview: add PL061 GPIO to the PB1176 DTS
ARM: realview: move DT GIC to FPGA node
ARM: realview: add device tree and bindings for PB1176
ARM: realview: basic device tree implementation
Signed-off-by: Olof Johansson <olof@lixom.net>
-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 | 412 | ||||
-rw-r--r-- | arch/arm/mach-realview/Kconfig | 13 | ||||
-rw-r--r-- | arch/arm/mach-realview/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview-dt.c | 32 | ||||
-rw-r--r-- | drivers/irqchip/irq-gic.c | 2 |
8 files changed, 527 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 4a75e293cd40..818c63e90ee3 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
@@ -364,6 +364,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \ | |||
364 | qcom-msm8660-surf.dtb \ | 364 | qcom-msm8660-surf.dtb \ |
365 | qcom-msm8960-cdp.dtb \ | 365 | qcom-msm8960-cdp.dtb \ |
366 | qcom-msm8974-sony-xperia-honami.dtb | 366 | qcom-msm8974-sony-xperia-honami.dtb |
367 | dtb-$(CONFIG_ARCH_REALVIEW) += arm-realview-pb1176.dtb | ||
367 | dtb-$(CONFIG_ARCH_ROCKCHIP) += \ | 368 | dtb-$(CONFIG_ARCH_ROCKCHIP) += \ |
368 | rk3066a-bqcurie2.dtb \ | 369 | rk3066a-bqcurie2.dtb \ |
369 | rk3188-radxarock.dtb \ | 370 | 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..ff26c7ed8c41 --- /dev/null +++ b/arch/arm/boot/dts/arm-realview-pb1176.dts | |||
@@ -0,0 +1,412 @@ | |||
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 <dt-bindings/gpio/gpio.h> | ||
26 | #include "skeleton.dtsi" | ||
27 | |||
28 | / { | ||
29 | model = "ARM RealView PB1176"; | ||
30 | compatible = "arm,realview-pb1176"; | ||
31 | |||
32 | chosen { }; | ||
33 | |||
34 | aliases { | ||
35 | serial0 = &pb1176_serial0; | ||
36 | serial1 = &pb1176_serial1; | ||
37 | serial2 = &pb1176_serial2; | ||
38 | serial3 = &pb1176_serial3; | ||
39 | serial4 = &fpga_serial; | ||
40 | }; | ||
41 | |||
42 | memory { | ||
43 | /* 128 MiB memory @ 0x0 */ | ||
44 | reg = <0x00000000 0x08000000>; | ||
45 | }; | ||
46 | |||
47 | /* The voltage to the MMC card is hardwired at 3.3V */ | ||
48 | vmmc: fixedregulator@0 { | ||
49 | compatible = "regulator-fixed"; | ||
50 | regulator-name = "vmmc"; | ||
51 | regulator-min-microvolt = <3300000>; | ||
52 | regulator-max-microvolt = <3300000>; | ||
53 | regulator-boot-on; | ||
54 | }; | ||
55 | |||
56 | xtal24mhz: xtal24mhz@24M { | ||
57 | #clock-cells = <0>; | ||
58 | compatible = "fixed-clock"; | ||
59 | clock-frequency = <24000000>; | ||
60 | }; | ||
61 | |||
62 | timclk: timclk@1M { | ||
63 | #clock-cells = <0>; | ||
64 | compatible = "fixed-factor-clock"; | ||
65 | clock-div = <24>; | ||
66 | clock-mult = <1>; | ||
67 | clocks = <&xtal24mhz>; | ||
68 | }; | ||
69 | |||
70 | mclk: mclk@24M { | ||
71 | #clock-cells = <0>; | ||
72 | compatible = "fixed-factor-clock"; | ||
73 | clock-div = <1>; | ||
74 | clock-mult = <1>; | ||
75 | clocks = <&xtal24mhz>; | ||
76 | }; | ||
77 | |||
78 | kmiclk: kmiclk@24M { | ||
79 | #clock-cells = <0>; | ||
80 | compatible = "fixed-factor-clock"; | ||
81 | clock-div = <1>; | ||
82 | clock-mult = <1>; | ||
83 | clocks = <&xtal24mhz>; | ||
84 | }; | ||
85 | |||
86 | sspclk: sspclk@24M { | ||
87 | #clock-cells = <0>; | ||
88 | compatible = "fixed-factor-clock"; | ||
89 | clock-div = <1>; | ||
90 | clock-mult = <1>; | ||
91 | clocks = <&xtal24mhz>; | ||
92 | }; | ||
93 | |||
94 | uartclk: uartclk@24M { | ||
95 | #clock-cells = <0>; | ||
96 | compatible = "fixed-factor-clock"; | ||
97 | clock-div = <1>; | ||
98 | clock-mult = <1>; | ||
99 | clocks = <&xtal24mhz>; | ||
100 | }; | ||
101 | |||
102 | /* FIXME: this actually hangs off the PLL clocks */ | ||
103 | pclk: pclk@0 { | ||
104 | #clock-cells = <0>; | ||
105 | compatible = "fixed-clock"; | ||
106 | clock-frequency = <0>; | ||
107 | }; | ||
108 | |||
109 | soc { | ||
110 | #address-cells = <1>; | ||
111 | #size-cells = <1>; | ||
112 | compatible = "arm,realview-pb1176-soc", "simple-bus"; | ||
113 | regmap = <&syscon>; | ||
114 | ranges; | ||
115 | |||
116 | syscon: syscon@10000000 { | ||
117 | compatible = "arm,realview-pb1176-syscon", "syscon"; | ||
118 | reg = <0x10000000 0x1000>; | ||
119 | |||
120 | led@08.0 { | ||
121 | compatible = "register-bit-led"; | ||
122 | offset = <0x08>; | ||
123 | mask = <0x01>; | ||
124 | label = "versatile:0"; | ||
125 | linux,default-trigger = "heartbeat"; | ||
126 | default-state = "on"; | ||
127 | }; | ||
128 | led@08.1 { | ||
129 | compatible = "register-bit-led"; | ||
130 | offset = <0x08>; | ||
131 | mask = <0x02>; | ||
132 | label = "versatile:1"; | ||
133 | linux,default-trigger = "mmc0"; | ||
134 | default-state = "off"; | ||
135 | }; | ||
136 | led@08.2 { | ||
137 | compatible = "register-bit-led"; | ||
138 | offset = <0x08>; | ||
139 | mask = <0x04>; | ||
140 | label = "versatile:2"; | ||
141 | linux,default-trigger = "cpu0"; | ||
142 | default-state = "off"; | ||
143 | }; | ||
144 | led@08.3 { | ||
145 | compatible = "register-bit-led"; | ||
146 | offset = <0x08>; | ||
147 | mask = <0x08>; | ||
148 | label = "versatile:3"; | ||
149 | default-state = "off"; | ||
150 | }; | ||
151 | led@08.4 { | ||
152 | compatible = "register-bit-led"; | ||
153 | offset = <0x08>; | ||
154 | mask = <0x10>; | ||
155 | label = "versatile:4"; | ||
156 | default-state = "off"; | ||
157 | }; | ||
158 | led@08.5 { | ||
159 | compatible = "register-bit-led"; | ||
160 | offset = <0x08>; | ||
161 | mask = <0x20>; | ||
162 | label = "versatile:5"; | ||
163 | default-state = "off"; | ||
164 | }; | ||
165 | led@08.6 { | ||
166 | compatible = "register-bit-led"; | ||
167 | offset = <0x08>; | ||
168 | mask = <0x40>; | ||
169 | label = "versatile:6"; | ||
170 | default-state = "off"; | ||
171 | }; | ||
172 | led@08.7 { | ||
173 | compatible = "register-bit-led"; | ||
174 | offset = <0x08>; | ||
175 | mask = <0x80>; | ||
176 | label = "versatile:7"; | ||
177 | default-state = "off"; | ||
178 | }; | ||
179 | }; | ||
180 | |||
181 | /* Primary DevChip GIC synthesized with the CPU */ | ||
182 | intc_dc1176: interrupt-controller@10120000 { | ||
183 | compatible = "arm,arm1176jzf-devchip-gic", "arm,arm11mp-gic"; | ||
184 | #interrupt-cells = <3>; | ||
185 | #address-cells = <1>; | ||
186 | interrupt-controller; | ||
187 | reg = <0x10121000 0x1000>, | ||
188 | <0x10120000 0x100>; | ||
189 | }; | ||
190 | |||
191 | L2: l2-cache { | ||
192 | compatible = "arm,l220-cache"; | ||
193 | reg = <0x10110000 0x1000>; | ||
194 | interrupt-parent = <&intc_dc1176>; | ||
195 | interrupts = <0 13 IRQ_TYPE_LEVEL_HIGH>; | ||
196 | cache-unified; | ||
197 | cache-level = <2>; | ||
198 | /* | ||
199 | * Override default cache size, sets and | ||
200 | * associativity as these may be erroneously set | ||
201 | * up by boot loader(s). | ||
202 | */ | ||
203 | arm,override-auxreg; | ||
204 | cache-size = <131072>; // 128kB | ||
205 | cache-sets = <512>; | ||
206 | cache-line-size = <32>; | ||
207 | }; | ||
208 | |||
209 | pmu { | ||
210 | compatible = "arm,arm1176-pmu"; | ||
211 | interrupt-parent = <&intc_dc1176>; | ||
212 | interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>; | ||
213 | }; | ||
214 | |||
215 | timer01: timer@10104000 { | ||
216 | compatible = "arm,sp804", "arm,primecell"; | ||
217 | reg = <0x10104000 0x1000>; | ||
218 | interrupt-parent = <&intc_dc1176>; | ||
219 | interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>, <0 9 IRQ_TYPE_LEVEL_HIGH>; | ||
220 | clocks = <&timclk>, <&timclk>, <&pclk>; | ||
221 | clock-names = "timer1", "timer2", "apb_pclk"; | ||
222 | }; | ||
223 | |||
224 | timer23: timer@10105000 { | ||
225 | compatible = "arm,sp804", "arm,primecell"; | ||
226 | reg = <0x10105000 0x1000>; | ||
227 | interrupt-parent = <&intc_dc1176>; | ||
228 | interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>; | ||
229 | arm,sp804-has-irq = <1>; | ||
230 | clocks = <&timclk>, <&timclk>, <&pclk>; | ||
231 | clock-names = "timer1", "timer2", "apb_pclk"; | ||
232 | }; | ||
233 | |||
234 | pb1176_rtc: rtc@10108000 { | ||
235 | compatible = "arm,pl031", "arm,primecell"; | ||
236 | reg = <0x10108000 0x1000>; | ||
237 | interrupt-parent = <&intc_dc1176>; | ||
238 | interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>; | ||
239 | clocks = <&pclk>; | ||
240 | clock-names = "apb_pclk"; | ||
241 | }; | ||
242 | |||
243 | pb1176_gpio0: gpio@1010a000 { | ||
244 | compatible = "arm,pl061", "arm,primecell"; | ||
245 | reg = <0x1010a000 0x1000>; | ||
246 | gpio-controller; | ||
247 | interrupt-parent = <&intc_dc1176>; | ||
248 | interrupts = <0 16 IRQ_TYPE_LEVEL_HIGH>; | ||
249 | #gpio-cells = <2>; | ||
250 | interrupt-controller; | ||
251 | #interrupt-cells = <2>; | ||
252 | clocks = <&pclk>; | ||
253 | clock-names = "apb_pclk"; | ||
254 | }; | ||
255 | |||
256 | pb1176_ssp: ssp@1010b000 { | ||
257 | compatible = "arm,pl022", "arm,primecell"; | ||
258 | reg = <0x1010b000 0x1000>; | ||
259 | interrupt-parent = <&intc_dc1176>; | ||
260 | interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>; | ||
261 | clocks = <&sspclk>, <&pclk>; | ||
262 | clock-names = "SSPCLK", "apb_pclk"; | ||
263 | }; | ||
264 | |||
265 | pb1176_serial0: serial@1010c000 { | ||
266 | compatible = "arm,pl011", "arm,primecell"; | ||
267 | reg = <0x1010c000 0x1000>; | ||
268 | interrupt-parent = <&intc_dc1176>; | ||
269 | interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>; | ||
270 | clocks = <&uartclk>, <&pclk>; | ||
271 | clock-names = "uartclk", "apb_pclk"; | ||
272 | }; | ||
273 | |||
274 | pb1176_serial1: serial@1010d000 { | ||
275 | compatible = "arm,pl011", "arm,primecell"; | ||
276 | reg = <0x1010d000 0x1000>; | ||
277 | interrupt-parent = <&intc_dc1176>; | ||
278 | interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>; | ||
279 | clocks = <&uartclk>, <&pclk>; | ||
280 | clock-names = "uartclk", "apb_pclk"; | ||
281 | }; | ||
282 | |||
283 | pb1176_serial2: serial@1010e000 { | ||
284 | compatible = "arm,pl011", "arm,primecell"; | ||
285 | reg = <0x1010e000 0x1000>; | ||
286 | interrupt-parent = <&intc_dc1176>; | ||
287 | interrupts = <0 20 IRQ_TYPE_LEVEL_HIGH>; | ||
288 | clocks = <&uartclk>, <&pclk>; | ||
289 | clock-names = "uartclk", "apb_pclk"; | ||
290 | }; | ||
291 | |||
292 | pb1176_serial3: serial@1010f000 { | ||
293 | compatible = "arm,pl011", "arm,primecell"; | ||
294 | reg = <0x1010f000 0x1000>; | ||
295 | interrupt-parent = <&intc_dc1176>; | ||
296 | interrupts = <0 21 IRQ_TYPE_LEVEL_HIGH>; | ||
297 | clocks = <&uartclk>, <&pclk>; | ||
298 | clock-names = "uartclk", "apb_pclk"; | ||
299 | }; | ||
300 | }; | ||
301 | |||
302 | /* These peripherals are inside the FPGA rather than the DevChip */ | ||
303 | fpga { | ||
304 | #address-cells = <1>; | ||
305 | #size-cells = <1>; | ||
306 | compatible = "simple-bus"; | ||
307 | ranges; | ||
308 | |||
309 | fpga_mci: mmcsd@10005000 { | ||
310 | compatible = "arm,pl18x", "arm,primecell"; | ||
311 | reg = <0x10005000 0x1000>; | ||
312 | interrupt-parent = <&intc_fpga1176>; | ||
313 | interrupts = <0 1 IRQ_TYPE_LEVEL_HIGH>, | ||
314 | <0 2 IRQ_TYPE_LEVEL_HIGH>; | ||
315 | /* Due to frequent FIFO overruns, use just 500 kHz */ | ||
316 | max-frequency = <500000>; | ||
317 | bus-width = <4>; | ||
318 | cap-sd-highspeed; | ||
319 | cap-mmc-highspeed; | ||
320 | clocks = <&mclk>, <&pclk>; | ||
321 | clock-names = "mclk", "apb_pclk"; | ||
322 | vmmc-supply = <&vmmc>; | ||
323 | cd-gpios = <&fpga_gpio1 0 GPIO_ACTIVE_LOW>; | ||
324 | wp-gpios = <&fpga_gpio1 1 GPIO_ACTIVE_HIGH>; | ||
325 | }; | ||
326 | |||
327 | fpga_kmi0: kmi@10006000 { | ||
328 | compatible = "arm,pl050", "arm,primecell"; | ||
329 | reg = <0x10006000 0x1000>; | ||
330 | interrupt-parent = <&intc_fpga1176>; | ||
331 | interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>; | ||
332 | clocks = <&kmiclk>, <&pclk>; | ||
333 | clock-names = "KMIREFCLK", "apb_pclk"; | ||
334 | }; | ||
335 | |||
336 | fpga_kmi1: kmi@10007000 { | ||
337 | compatible = "arm,pl050", "arm,primecell"; | ||
338 | reg = <0x10007000 0x1000>; | ||
339 | interrupt-parent = <&intc_fpga1176>; | ||
340 | interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>; | ||
341 | clocks = <&kmiclk>, <&pclk>; | ||
342 | clock-names = "KMIREFCLK", "apb_pclk"; | ||
343 | }; | ||
344 | |||
345 | fpga_charlcd: charlcd@10008000 { | ||
346 | compatible = "arm,versatile-lcd"; | ||
347 | reg = <0x10008000 0x1000>; | ||
348 | interrupt-parent = <&intc_fpga1176>; | ||
349 | interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>; | ||
350 | clocks = <&pclk>; | ||
351 | clock-names = "apb_pclk"; | ||
352 | }; | ||
353 | |||
354 | fpga_serial: serial@10009000 { | ||
355 | compatible = "arm,pl011", "arm,primecell"; | ||
356 | reg = <0x10009000 0x1000>; | ||
357 | interrupt-parent = <&intc_fpga1176>; | ||
358 | interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>; | ||
359 | clocks = <&uartclk>, <&pclk>; | ||
360 | clock-names = "uartclk", "apb_pclk"; | ||
361 | }; | ||
362 | |||
363 | /* This GIC on the board is cascaded off the DevChip GIC */ | ||
364 | intc_fpga1176: interrupt-controller@10040000 { | ||
365 | compatible = "arm,arm1176jzf-devchip-gic", "arm,arm11mp-gic"; | ||
366 | #interrupt-cells = <3>; | ||
367 | #address-cells = <1>; | ||
368 | interrupt-controller; | ||
369 | reg = <0x10041000 0x1000>, | ||
370 | <0x10040000 0x100>; | ||
371 | interrupt-parent = <&intc_dc1176>; | ||
372 | interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>; | ||
373 | }; | ||
374 | |||
375 | fpga_gpio0: gpio@10014000 { | ||
376 | compatible = "arm,pl061", "arm,primecell"; | ||
377 | reg = <0x10014000 0x1000>; | ||
378 | gpio-controller; | ||
379 | interrupt-parent = <&intc_fpga1176>; | ||
380 | interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>; | ||
381 | #gpio-cells = <2>; | ||
382 | interrupt-controller; | ||
383 | #interrupt-cells = <2>; | ||
384 | clocks = <&pclk>; | ||
385 | clock-names = "apb_pclk"; | ||
386 | }; | ||
387 | |||
388 | fpga_gpio1: gpio@10015000 { | ||
389 | compatible = "arm,pl061", "arm,primecell"; | ||
390 | reg = <0x10015000 0x1000>; | ||
391 | gpio-controller; | ||
392 | interrupt-parent = <&intc_fpga1176>; | ||
393 | interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; | ||
394 | #gpio-cells = <2>; | ||
395 | interrupt-controller; | ||
396 | #interrupt-cells = <2>; | ||
397 | clocks = <&pclk>; | ||
398 | clock-names = "apb_pclk"; | ||
399 | }; | ||
400 | |||
401 | fpga_rtc: rtc@10017000 { | ||
402 | compatible = "arm,pl031", "arm,primecell"; | ||
403 | reg = <0x10017000 0x1000>; | ||
404 | interrupt-parent = <&intc_fpga1176>; | ||
405 | interrupts = <0 25 IRQ_TYPE_LEVEL_HIGH>; | ||
406 | clocks = <&pclk>; | ||
407 | clock-names = "apb_pclk"; | ||
408 | }; | ||
409 | |||
410 | |||
411 | }; | ||
412 | }; | ||
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig index 9db2029aa632..565925f37dc5 100644 --- a/arch/arm/mach-realview/Kconfig +++ b/arch/arm/mach-realview/Kconfig | |||
@@ -1,6 +1,19 @@ | |||
1 | menu "RealView platform type" | 1 | menu "RealView platform type" |
2 | depends on ARCH_REALVIEW | 2 | depends on ARCH_REALVIEW |
3 | 3 | ||
4 | config REALVIEW_DT | ||
5 | bool "Support RealView(R) Device Tree based boot" | ||
6 | select ARM_GIC | ||
7 | select MFD_SYSCON | ||
8 | select POWER_RESET | ||
9 | select POWER_RESET_VERSATILE | ||
10 | select POWER_SUPPLY | ||
11 | select SOC_REALVIEW | ||
12 | select USE_OF | ||
13 | help | ||
14 | Include support for booting the ARM(R) RealView(R) evaluation | ||
15 | boards using a device tree machine description. | ||
16 | |||
4 | config MACH_REALVIEW_EB | 17 | config MACH_REALVIEW_EB |
5 | bool "Support RealView(R) Emulation Baseboard" | 18 | bool "Support RealView(R) Emulation Baseboard" |
6 | select ARM_GIC | 19 | select ARM_GIC |
diff --git a/arch/arm/mach-realview/Makefile b/arch/arm/mach-realview/Makefile index 541fa4c109ef..e07fdf7ae8a7 100644 --- a/arch/arm/mach-realview/Makefile +++ b/arch/arm/mach-realview/Makefile | |||
@@ -3,6 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := core.o | 5 | obj-y := core.o |
6 | obj-$(CONFIG_REALVIEW_DT) += realview-dt.o | ||
6 | obj-$(CONFIG_MACH_REALVIEW_EB) += realview_eb.o | 7 | obj-$(CONFIG_MACH_REALVIEW_EB) += realview_eb.o |
7 | obj-$(CONFIG_MACH_REALVIEW_PB11MP) += realview_pb11mp.o | 8 | obj-$(CONFIG_MACH_REALVIEW_PB11MP) += realview_pb11mp.o |
8 | obj-$(CONFIG_MACH_REALVIEW_PB1176) += realview_pb1176.o | 9 | obj-$(CONFIG_MACH_REALVIEW_PB1176) += realview_pb1176.o |
diff --git a/arch/arm/mach-realview/realview-dt.c b/arch/arm/mach-realview/realview-dt.c new file mode 100644 index 000000000000..cc28b89dd48f --- /dev/null +++ b/arch/arm/mach-realview/realview-dt.c | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2014 Linaro Ltd. | ||
3 | * | ||
4 | * Author: Linus Walleij <linus.walleij@linaro.org> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2, as | ||
8 | * published by the Free Software Foundation. | ||
9 | * | ||
10 | */ | ||
11 | #include <linux/of_platform.h> | ||
12 | #include <asm/mach/arch.h> | ||
13 | #include <asm/hardware/cache-l2x0.h> | ||
14 | #include "core.h" | ||
15 | |||
16 | static const char *realview_dt_platform_compat[] __initconst = { | ||
17 | "arm,realview-eb", | ||
18 | "arm,realview-pb1176", | ||
19 | "arm,realview-pb11mp", | ||
20 | "arm,realview-pba8", | ||
21 | "arm,realview-pbx", | ||
22 | NULL, | ||
23 | }; | ||
24 | |||
25 | DT_MACHINE_START(REALVIEW_DT, "ARM RealView Machine (Device Tree Support)") | ||
26 | #ifdef CONFIG_ZONE_DMA | ||
27 | .dma_zone_size = SZ_256M, | ||
28 | #endif | ||
29 | .dt_compat = realview_dt_platform_compat, | ||
30 | .l2c_aux_val = 0x0, | ||
31 | .l2c_aux_mask = ~0x0, | ||
32 | MACHINE_END | ||
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c index 38493ff28fa5..7f9be0785c6a 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c | |||
@@ -1041,6 +1041,8 @@ gic_of_init(struct device_node *node, struct device_node *parent) | |||
1041 | return 0; | 1041 | return 0; |
1042 | } | 1042 | } |
1043 | IRQCHIP_DECLARE(gic_400, "arm,gic-400", gic_of_init); | 1043 | IRQCHIP_DECLARE(gic_400, "arm,gic-400", gic_of_init); |
1044 | IRQCHIP_DECLARE(arm11mp_gic, "arm,arm11mp-gic", gic_of_init); | ||
1045 | IRQCHIP_DECLARE(arm1176jzf_dc_gic, "arm,arm1176jzf-devchip-gic", gic_of_init); | ||
1044 | IRQCHIP_DECLARE(cortex_a15_gic, "arm,cortex-a15-gic", gic_of_init); | 1046 | IRQCHIP_DECLARE(cortex_a15_gic, "arm,cortex-a15-gic", gic_of_init); |
1045 | IRQCHIP_DECLARE(cortex_a9_gic, "arm,cortex-a9-gic", gic_of_init); | 1047 | IRQCHIP_DECLARE(cortex_a9_gic, "arm,cortex-a9-gic", gic_of_init); |
1046 | IRQCHIP_DECLARE(cortex_a7_gic, "arm,cortex-a7-gic", gic_of_init); | 1048 | IRQCHIP_DECLARE(cortex_a7_gic, "arm,cortex-a7-gic", gic_of_init); |