xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/arm-realview-pb11mp.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright 2015 Linaro Ltd
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Permission is hereby granted, free of charge, to any person obtaining a copy
5*4882a593Smuzhiyun * of this software and associated documentation files (the "Software"), to deal
6*4882a593Smuzhiyun * in the Software without restriction, including without limitation the rights
7*4882a593Smuzhiyun * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8*4882a593Smuzhiyun * copies of the Software, and to permit persons to whom the Software is
9*4882a593Smuzhiyun * furnished to do so, subject to the following conditions:
10*4882a593Smuzhiyun *
11*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be included in
12*4882a593Smuzhiyun * all copies or substantial portions of the Software.
13*4882a593Smuzhiyun *
14*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*4882a593Smuzhiyun * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17*4882a593Smuzhiyun * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18*4882a593Smuzhiyun * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19*4882a593Smuzhiyun * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20*4882a593Smuzhiyun * THE SOFTWARE.
21*4882a593Smuzhiyun */
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun/dts-v1/;
24*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
25*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun/ {
28*4882a593Smuzhiyun	#address-cells = <1>;
29*4882a593Smuzhiyun	#size-cells = <1>;
30*4882a593Smuzhiyun	model = "ARM RealView PB11MPcore";
31*4882a593Smuzhiyun	compatible = "arm,realview-pb11mp";
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	chosen { };
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun	aliases {
36*4882a593Smuzhiyun		serial0 = &pb11mp_serial0;
37*4882a593Smuzhiyun		serial1 = &pb11mp_serial1;
38*4882a593Smuzhiyun		serial2 = &pb11mp_serial2;
39*4882a593Smuzhiyun		serial3 = &pb11mp_serial3;
40*4882a593Smuzhiyun	};
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun	memory {
43*4882a593Smuzhiyun		device_type = "memory";
44*4882a593Smuzhiyun		/*
45*4882a593Smuzhiyun		 * The PB11MPCore has 512 MiB memory @ 0x70000000
46*4882a593Smuzhiyun		 * and the first 256 are also remapped @ 0x00000000
47*4882a593Smuzhiyun		 */
48*4882a593Smuzhiyun		reg = <0x70000000 0x20000000>;
49*4882a593Smuzhiyun	};
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun	cpus {
52*4882a593Smuzhiyun		#address-cells = <1>;
53*4882a593Smuzhiyun		#size-cells = <0>;
54*4882a593Smuzhiyun		enable-method = "arm,realview-smp";
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun		MP11_0: cpu@0 {
57*4882a593Smuzhiyun			device_type = "cpu";
58*4882a593Smuzhiyun			compatible = "arm,arm11mpcore";
59*4882a593Smuzhiyun			reg = <0>;
60*4882a593Smuzhiyun			next-level-cache = <&L2>;
61*4882a593Smuzhiyun		};
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun		MP11_1: cpu@1 {
64*4882a593Smuzhiyun			device_type = "cpu";
65*4882a593Smuzhiyun			compatible = "arm,arm11mpcore";
66*4882a593Smuzhiyun			reg = <1>;
67*4882a593Smuzhiyun			next-level-cache = <&L2>;
68*4882a593Smuzhiyun		};
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun		MP11_2: cpu@2 {
71*4882a593Smuzhiyun			device_type = "cpu";
72*4882a593Smuzhiyun			compatible = "arm,arm11mpcore";
73*4882a593Smuzhiyun			reg = <2>;
74*4882a593Smuzhiyun			next-level-cache = <&L2>;
75*4882a593Smuzhiyun		};
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun		MP11_3: cpu@3 {
78*4882a593Smuzhiyun			device_type = "cpu";
79*4882a593Smuzhiyun			compatible = "arm,arm11mpcore";
80*4882a593Smuzhiyun			reg = <3>;
81*4882a593Smuzhiyun			next-level-cache = <&L2>;
82*4882a593Smuzhiyun		};
83*4882a593Smuzhiyun	};
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun	/* Primary TestChip GIC synthesized with the CPU */
86*4882a593Smuzhiyun	intc_tc11mp: interrupt-controller@1f000100 {
87*4882a593Smuzhiyun		compatible = "arm,tc11mp-gic";
88*4882a593Smuzhiyun		#interrupt-cells = <3>;
89*4882a593Smuzhiyun		#address-cells = <1>;
90*4882a593Smuzhiyun		interrupt-controller;
91*4882a593Smuzhiyun		reg = <0x1f001000 0x1000>,
92*4882a593Smuzhiyun		      <0x1f000100 0x100>;
93*4882a593Smuzhiyun	};
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun	L2: cache-controller {
96*4882a593Smuzhiyun		compatible = "arm,l220-cache";
97*4882a593Smuzhiyun		reg = <0x1f002000 0x1000>;
98*4882a593Smuzhiyun		interrupt-parent = <&intc_tc11mp>;
99*4882a593Smuzhiyun		interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>,
100*4882a593Smuzhiyun			     <0 30 IRQ_TYPE_LEVEL_HIGH>,
101*4882a593Smuzhiyun			     <0 31 IRQ_TYPE_LEVEL_HIGH>;
102*4882a593Smuzhiyun		cache-unified;
103*4882a593Smuzhiyun		cache-level = <2>;
104*4882a593Smuzhiyun		/*
105*4882a593Smuzhiyun		 * Override default cache size, sets and
106*4882a593Smuzhiyun		 * associativity as these may be erroneously set
107*4882a593Smuzhiyun		 * up by boot loader(s), probably for safety
108*4882a593Smuzhiyun		 * since th outer sync operation can cause the
109*4882a593Smuzhiyun		 * cache to hang unless disabled.
110*4882a593Smuzhiyun		 */
111*4882a593Smuzhiyun		cache-size = <1048576>; // 1MB
112*4882a593Smuzhiyun		cache-sets = <4096>;
113*4882a593Smuzhiyun		cache-line-size = <32>;
114*4882a593Smuzhiyun		arm,shared-override;
115*4882a593Smuzhiyun		arm,parity-enable;
116*4882a593Smuzhiyun		arm,outer-sync-disable;
117*4882a593Smuzhiyun	};
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun	scu@1f000000 {
120*4882a593Smuzhiyun		compatible = "arm,arm11mp-scu";
121*4882a593Smuzhiyun		reg = <0x1f000000 0x100>;
122*4882a593Smuzhiyun	};
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun	timer@1f000600 {
125*4882a593Smuzhiyun		compatible = "arm,arm11mp-twd-timer";
126*4882a593Smuzhiyun		reg = <0x1f000600 0x20>;
127*4882a593Smuzhiyun		interrupt-parent = <&intc_tc11mp>;
128*4882a593Smuzhiyun		interrupts = <1 13 0xf04>;
129*4882a593Smuzhiyun	};
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun	watchdog@1f000620 {
132*4882a593Smuzhiyun		compatible = "arm,arm11mp-twd-wdt";
133*4882a593Smuzhiyun		reg = <0x1f000620 0x20>;
134*4882a593Smuzhiyun		interrupt-parent = <&intc_tc11mp>;
135*4882a593Smuzhiyun		interrupts = <1 14 0xf04>;
136*4882a593Smuzhiyun	};
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun	/* PMU with one IRQ line per core */
139*4882a593Smuzhiyun	pmu {
140*4882a593Smuzhiyun		compatible = "arm,arm11mpcore-pmu";
141*4882a593Smuzhiyun		interrupt-parent = <&intc_tc11mp>;
142*4882a593Smuzhiyun		interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH>,
143*4882a593Smuzhiyun			     <0 18 IRQ_TYPE_LEVEL_HIGH>,
144*4882a593Smuzhiyun			     <0 19 IRQ_TYPE_LEVEL_HIGH>,
145*4882a593Smuzhiyun			     <0 20 IRQ_TYPE_LEVEL_HIGH>;
146*4882a593Smuzhiyun		interrupt-affinity = <&MP11_0>, <&MP11_1>, <&MP11_2>, <&MP11_3>;
147*4882a593Smuzhiyun	};
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun	/* The voltage to the MMC card is hardwired at 3.3V */
150*4882a593Smuzhiyun	vmmc: regulator-vmmc {
151*4882a593Smuzhiyun		compatible = "regulator-fixed";
152*4882a593Smuzhiyun		regulator-name = "vmmc";
153*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
154*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
155*4882a593Smuzhiyun		regulator-boot-on;
156*4882a593Smuzhiyun        };
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun	veth: regulator-veth {
159*4882a593Smuzhiyun		compatible = "regulator-fixed";
160*4882a593Smuzhiyun		regulator-name = "veth";
161*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
162*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
163*4882a593Smuzhiyun		regulator-boot-on;
164*4882a593Smuzhiyun	};
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun	xtal24mhz: xtal24mhz@24M {
167*4882a593Smuzhiyun		#clock-cells = <0>;
168*4882a593Smuzhiyun		compatible = "fixed-clock";
169*4882a593Smuzhiyun		clock-frequency = <24000000>;
170*4882a593Smuzhiyun	};
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun	refclk32khz: refclk32khz {
173*4882a593Smuzhiyun		compatible = "fixed-clock";
174*4882a593Smuzhiyun		#clock-cells = <0>;
175*4882a593Smuzhiyun		clock-frequency = <32768>;
176*4882a593Smuzhiyun	};
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun	timclk: timclk@1M {
179*4882a593Smuzhiyun		#clock-cells = <0>;
180*4882a593Smuzhiyun		compatible = "fixed-factor-clock";
181*4882a593Smuzhiyun		clock-div = <24>;
182*4882a593Smuzhiyun		clock-mult = <1>;
183*4882a593Smuzhiyun		clocks = <&xtal24mhz>;
184*4882a593Smuzhiyun	};
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun	mclk: mclk@24M {
187*4882a593Smuzhiyun		#clock-cells = <0>;
188*4882a593Smuzhiyun		compatible = "fixed-factor-clock";
189*4882a593Smuzhiyun		clock-div = <1>;
190*4882a593Smuzhiyun		clock-mult = <1>;
191*4882a593Smuzhiyun		clocks = <&xtal24mhz>;
192*4882a593Smuzhiyun	};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun	kmiclk: kmiclk@24M {
195*4882a593Smuzhiyun		#clock-cells = <0>;
196*4882a593Smuzhiyun		compatible = "fixed-factor-clock";
197*4882a593Smuzhiyun		clock-div = <1>;
198*4882a593Smuzhiyun		clock-mult = <1>;
199*4882a593Smuzhiyun		clocks = <&xtal24mhz>;
200*4882a593Smuzhiyun	};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun	sspclk: sspclk@24M {
203*4882a593Smuzhiyun		#clock-cells = <0>;
204*4882a593Smuzhiyun		compatible = "fixed-factor-clock";
205*4882a593Smuzhiyun		clock-div = <1>;
206*4882a593Smuzhiyun		clock-mult = <1>;
207*4882a593Smuzhiyun		clocks = <&xtal24mhz>;
208*4882a593Smuzhiyun	};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun	uartclk: uartclk@24M {
211*4882a593Smuzhiyun		#clock-cells = <0>;
212*4882a593Smuzhiyun		compatible = "fixed-factor-clock";
213*4882a593Smuzhiyun		clock-div = <1>;
214*4882a593Smuzhiyun		clock-mult = <1>;
215*4882a593Smuzhiyun		clocks = <&xtal24mhz>;
216*4882a593Smuzhiyun	};
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun	wdogclk: wdogclk@24M {
219*4882a593Smuzhiyun		#clock-cells = <0>;
220*4882a593Smuzhiyun		compatible = "fixed-factor-clock";
221*4882a593Smuzhiyun		clock-div = <1>;
222*4882a593Smuzhiyun		clock-mult = <1>;
223*4882a593Smuzhiyun		clocks = <&xtal24mhz>;
224*4882a593Smuzhiyun	};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun	/* FIXME: this actually hangs off the PLL clocks */
227*4882a593Smuzhiyun	pclk: pclk@0 {
228*4882a593Smuzhiyun		#clock-cells = <0>;
229*4882a593Smuzhiyun		compatible = "fixed-clock";
230*4882a593Smuzhiyun		clock-frequency = <0>;
231*4882a593Smuzhiyun	};
232*4882a593Smuzhiyun
233*4882a593Smuzhiyun	flash0@40000000 {
234*4882a593Smuzhiyun		/* 2 * 32MiB NOR Flash memory */
235*4882a593Smuzhiyun		compatible = "arm,versatile-flash", "cfi-flash";
236*4882a593Smuzhiyun		reg = <0x40000000 0x04000000>;
237*4882a593Smuzhiyun		bank-width = <4>;
238*4882a593Smuzhiyun		partitions {
239*4882a593Smuzhiyun			compatible = "arm,arm-firmware-suite";
240*4882a593Smuzhiyun		};
241*4882a593Smuzhiyun	};
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun	flash1@44000000 {
244*4882a593Smuzhiyun		// 2 * 32MiB NOR Flash memory
245*4882a593Smuzhiyun		compatible = "arm,versatile-flash", "cfi-flash";
246*4882a593Smuzhiyun		reg = <0x44000000 0x04000000>;
247*4882a593Smuzhiyun		bank-width = <4>;
248*4882a593Smuzhiyun		partitions {
249*4882a593Smuzhiyun			compatible = "arm,arm-firmware-suite";
250*4882a593Smuzhiyun		};
251*4882a593Smuzhiyun	};
252*4882a593Smuzhiyun
253*4882a593Smuzhiyun	bridge {
254*4882a593Smuzhiyun		compatible = "ti,ths8134a", "ti,ths8134";
255*4882a593Smuzhiyun		#address-cells = <1>;
256*4882a593Smuzhiyun		#size-cells = <0>;
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun		ports {
259*4882a593Smuzhiyun			#address-cells = <1>;
260*4882a593Smuzhiyun			#size-cells = <0>;
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun			port@0 {
263*4882a593Smuzhiyun				reg = <0>;
264*4882a593Smuzhiyun
265*4882a593Smuzhiyun				vga_bridge_in: endpoint {
266*4882a593Smuzhiyun					remote-endpoint = <&clcd_pads>;
267*4882a593Smuzhiyun				};
268*4882a593Smuzhiyun			};
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun			port@1 {
271*4882a593Smuzhiyun				reg = <1>;
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun				vga_bridge_out: endpoint {
274*4882a593Smuzhiyun					remote-endpoint = <&vga_con_in>;
275*4882a593Smuzhiyun				};
276*4882a593Smuzhiyun			};
277*4882a593Smuzhiyun		};
278*4882a593Smuzhiyun	};
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun	vga {
281*4882a593Smuzhiyun		/*
282*4882a593Smuzhiyun		 * This DDC I2C is connected directly to the DVI portions
283*4882a593Smuzhiyun		 * of the connector, so it's not really working when the
284*4882a593Smuzhiyun		 * monitor is connected to the VGA connector.
285*4882a593Smuzhiyun		 */
286*4882a593Smuzhiyun		compatible = "vga-connector";
287*4882a593Smuzhiyun		ddc-i2c-bus = <&i2c1>;
288*4882a593Smuzhiyun
289*4882a593Smuzhiyun		port {
290*4882a593Smuzhiyun			vga_con_in: endpoint {
291*4882a593Smuzhiyun				remote-endpoint = <&vga_bridge_out>;
292*4882a593Smuzhiyun			};
293*4882a593Smuzhiyun		};
294*4882a593Smuzhiyun	};
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun	soc {
297*4882a593Smuzhiyun		#address-cells = <1>;
298*4882a593Smuzhiyun		#size-cells = <1>;
299*4882a593Smuzhiyun		compatible = "arm,realview-pb11mp-soc", "simple-bus";
300*4882a593Smuzhiyun		regmap = <&pb11mp_syscon>;
301*4882a593Smuzhiyun		ranges;
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun		pb11mp_syscon: syscon@10000000 {
304*4882a593Smuzhiyun			compatible = "arm,realview-pb11mp-syscon", "syscon", "simple-mfd";
305*4882a593Smuzhiyun			reg = <0x10000000 0x1000>;
306*4882a593Smuzhiyun
307*4882a593Smuzhiyun			led@08.0 {
308*4882a593Smuzhiyun				compatible = "register-bit-led";
309*4882a593Smuzhiyun				offset = <0x08>;
310*4882a593Smuzhiyun				mask = <0x01>;
311*4882a593Smuzhiyun				label = "versatile:0";
312*4882a593Smuzhiyun				linux,default-trigger = "heartbeat";
313*4882a593Smuzhiyun				default-state = "on";
314*4882a593Smuzhiyun			};
315*4882a593Smuzhiyun			led@08.1 {
316*4882a593Smuzhiyun				compatible = "register-bit-led";
317*4882a593Smuzhiyun				offset = <0x08>;
318*4882a593Smuzhiyun				mask = <0x02>;
319*4882a593Smuzhiyun				label = "versatile:1";
320*4882a593Smuzhiyun				linux,default-trigger = "mmc0";
321*4882a593Smuzhiyun				default-state = "off";
322*4882a593Smuzhiyun			};
323*4882a593Smuzhiyun			led@08.2 {
324*4882a593Smuzhiyun				compatible = "register-bit-led";
325*4882a593Smuzhiyun				offset = <0x08>;
326*4882a593Smuzhiyun				mask = <0x04>;
327*4882a593Smuzhiyun				label = "versatile:2";
328*4882a593Smuzhiyun				linux,default-trigger = "cpu0";
329*4882a593Smuzhiyun				default-state = "off";
330*4882a593Smuzhiyun			};
331*4882a593Smuzhiyun			led@08.3 {
332*4882a593Smuzhiyun				compatible = "register-bit-led";
333*4882a593Smuzhiyun				offset = <0x08>;
334*4882a593Smuzhiyun				mask = <0x08>;
335*4882a593Smuzhiyun				label = "versatile:3";
336*4882a593Smuzhiyun				linux,default-trigger = "cpu1";
337*4882a593Smuzhiyun				default-state = "off";
338*4882a593Smuzhiyun			};
339*4882a593Smuzhiyun			led@08.4 {
340*4882a593Smuzhiyun				compatible = "register-bit-led";
341*4882a593Smuzhiyun				offset = <0x08>;
342*4882a593Smuzhiyun				mask = <0x10>;
343*4882a593Smuzhiyun				label = "versatile:4";
344*4882a593Smuzhiyun				linux,default-trigger = "cpu2";
345*4882a593Smuzhiyun				default-state = "off";
346*4882a593Smuzhiyun			};
347*4882a593Smuzhiyun			led@08.5 {
348*4882a593Smuzhiyun				compatible = "register-bit-led";
349*4882a593Smuzhiyun				offset = <0x08>;
350*4882a593Smuzhiyun				mask = <0x20>;
351*4882a593Smuzhiyun				label = "versatile:5";
352*4882a593Smuzhiyun				linux,default-trigger = "cpu3";
353*4882a593Smuzhiyun				default-state = "off";
354*4882a593Smuzhiyun			};
355*4882a593Smuzhiyun			led@08.6 {
356*4882a593Smuzhiyun				compatible = "register-bit-led";
357*4882a593Smuzhiyun				offset = <0x08>;
358*4882a593Smuzhiyun				mask = <0x40>;
359*4882a593Smuzhiyun				label = "versatile:6";
360*4882a593Smuzhiyun				default-state = "off";
361*4882a593Smuzhiyun			};
362*4882a593Smuzhiyun			led@08.7 {
363*4882a593Smuzhiyun				compatible = "register-bit-led";
364*4882a593Smuzhiyun				offset = <0x08>;
365*4882a593Smuzhiyun				mask = <0x80>;
366*4882a593Smuzhiyun				label = "versatile:7";
367*4882a593Smuzhiyun				default-state = "off";
368*4882a593Smuzhiyun			};
369*4882a593Smuzhiyun
370*4882a593Smuzhiyun			oscclk0: osc0@0c {
371*4882a593Smuzhiyun				compatible = "arm,syscon-icst307";
372*4882a593Smuzhiyun				#clock-cells = <0>;
373*4882a593Smuzhiyun				lock-offset = <0x20>;
374*4882a593Smuzhiyun				vco-offset = <0x0C>;
375*4882a593Smuzhiyun				clocks = <&xtal24mhz>;
376*4882a593Smuzhiyun			};
377*4882a593Smuzhiyun			oscclk1: osc1@10 {
378*4882a593Smuzhiyun				compatible = "arm,syscon-icst307";
379*4882a593Smuzhiyun				#clock-cells = <0>;
380*4882a593Smuzhiyun				lock-offset = <0x20>;
381*4882a593Smuzhiyun				vco-offset = <0x10>;
382*4882a593Smuzhiyun				clocks = <&xtal24mhz>;
383*4882a593Smuzhiyun			};
384*4882a593Smuzhiyun			oscclk2: osc2@14 {
385*4882a593Smuzhiyun				compatible = "arm,syscon-icst307";
386*4882a593Smuzhiyun				#clock-cells = <0>;
387*4882a593Smuzhiyun				lock-offset = <0x20>;
388*4882a593Smuzhiyun				vco-offset = <0x14>;
389*4882a593Smuzhiyun				clocks = <&xtal24mhz>;
390*4882a593Smuzhiyun			};
391*4882a593Smuzhiyun			oscclk3: osc3@18 {
392*4882a593Smuzhiyun				compatible = "arm,syscon-icst307";
393*4882a593Smuzhiyun				#clock-cells = <0>;
394*4882a593Smuzhiyun				lock-offset = <0x20>;
395*4882a593Smuzhiyun				vco-offset = <0x18>;
396*4882a593Smuzhiyun				clocks = <&xtal24mhz>;
397*4882a593Smuzhiyun			};
398*4882a593Smuzhiyun			oscclk4: osc4@1c {
399*4882a593Smuzhiyun				compatible = "arm,syscon-icst307";
400*4882a593Smuzhiyun				#clock-cells = <0>;
401*4882a593Smuzhiyun				lock-offset = <0x20>;
402*4882a593Smuzhiyun				vco-offset = <0x1c>;
403*4882a593Smuzhiyun				clocks = <&xtal24mhz>;
404*4882a593Smuzhiyun			};
405*4882a593Smuzhiyun			oscclk5: osc5@d4 {
406*4882a593Smuzhiyun				compatible = "arm,syscon-icst307";
407*4882a593Smuzhiyun				#clock-cells = <0>;
408*4882a593Smuzhiyun				lock-offset = <0x20>;
409*4882a593Smuzhiyun				vco-offset = <0xd4>;
410*4882a593Smuzhiyun				clocks = <&xtal24mhz>;
411*4882a593Smuzhiyun			};
412*4882a593Smuzhiyun			oscclk6: osc6@d8 {
413*4882a593Smuzhiyun				compatible = "arm,syscon-icst307";
414*4882a593Smuzhiyun				#clock-cells = <0>;
415*4882a593Smuzhiyun				lock-offset = <0x20>;
416*4882a593Smuzhiyun				vco-offset = <0xd8>;
417*4882a593Smuzhiyun				clocks = <&xtal24mhz>;
418*4882a593Smuzhiyun			};
419*4882a593Smuzhiyun		};
420*4882a593Smuzhiyun
421*4882a593Smuzhiyun		sp810_syscon: sysctl@10001000 {
422*4882a593Smuzhiyun			compatible = "arm,sp810", "arm,primecell";
423*4882a593Smuzhiyun			reg = <0x10001000 0x1000>;
424*4882a593Smuzhiyun			clocks = <&refclk32khz>, <&timclk>, <&xtal24mhz>;
425*4882a593Smuzhiyun			clock-names = "refclk", "timclk", "apb_pclk";
426*4882a593Smuzhiyun			#clock-cells = <1>;
427*4882a593Smuzhiyun			clock-output-names = "timerclk0",
428*4882a593Smuzhiyun					     "timerclk1",
429*4882a593Smuzhiyun					     "timerclk2",
430*4882a593Smuzhiyun					     "timerclk3";
431*4882a593Smuzhiyun			assigned-clocks = <&sp810_syscon 0>,
432*4882a593Smuzhiyun					  <&sp810_syscon 1>,
433*4882a593Smuzhiyun					  <&sp810_syscon 2>,
434*4882a593Smuzhiyun					  <&sp810_syscon 3>;
435*4882a593Smuzhiyun			assigned-clock-parents = <&timclk>,
436*4882a593Smuzhiyun					       <&timclk>,
437*4882a593Smuzhiyun					       <&timclk>,
438*4882a593Smuzhiyun					       <&timclk>;
439*4882a593Smuzhiyun		};
440*4882a593Smuzhiyun
441*4882a593Smuzhiyun		i2c0: i2c@10002000 {
442*4882a593Smuzhiyun			#address-cells = <1>;
443*4882a593Smuzhiyun			#size-cells = <0>;
444*4882a593Smuzhiyun			compatible = "arm,versatile-i2c";
445*4882a593Smuzhiyun			reg = <0x10002000 0x1000>;
446*4882a593Smuzhiyun
447*4882a593Smuzhiyun			rtc@68 {
448*4882a593Smuzhiyun				compatible = "dallas,ds1338";
449*4882a593Smuzhiyun				reg = <0x68>;
450*4882a593Smuzhiyun			};
451*4882a593Smuzhiyun		};
452*4882a593Smuzhiyun
453*4882a593Smuzhiyun		aaci: aaci@10004000 {
454*4882a593Smuzhiyun			compatible = "arm,pl041", "arm,primecell";
455*4882a593Smuzhiyun			reg = <0x10004000 0x1000>;
456*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
457*4882a593Smuzhiyun			interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>;
458*4882a593Smuzhiyun			clocks = <&pclk>;
459*4882a593Smuzhiyun			clock-names = "apb_pclk";
460*4882a593Smuzhiyun		};
461*4882a593Smuzhiyun
462*4882a593Smuzhiyun		mci: mmcsd@10005000 {
463*4882a593Smuzhiyun			compatible = "arm,pl18x", "arm,primecell";
464*4882a593Smuzhiyun			reg = <0x10005000 0x1000>;
465*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
466*4882a593Smuzhiyun			interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>,
467*4882a593Smuzhiyun					<0 15 IRQ_TYPE_LEVEL_HIGH>;
468*4882a593Smuzhiyun			/* Due to frequent FIFO overruns, use just 500 kHz */
469*4882a593Smuzhiyun			max-frequency = <500000>;
470*4882a593Smuzhiyun			bus-width = <4>;
471*4882a593Smuzhiyun			cap-sd-highspeed;
472*4882a593Smuzhiyun			cap-mmc-highspeed;
473*4882a593Smuzhiyun			clocks = <&mclk>, <&pclk>;
474*4882a593Smuzhiyun			clock-names = "mclk", "apb_pclk";
475*4882a593Smuzhiyun			vmmc-supply = <&vmmc>;
476*4882a593Smuzhiyun			cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
477*4882a593Smuzhiyun			wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
478*4882a593Smuzhiyun		};
479*4882a593Smuzhiyun
480*4882a593Smuzhiyun		kmi0: kmi@10006000 {
481*4882a593Smuzhiyun			compatible = "arm,pl050", "arm,primecell";
482*4882a593Smuzhiyun			reg = <0x10006000 0x1000>;
483*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
484*4882a593Smuzhiyun			interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
485*4882a593Smuzhiyun			clocks = <&kmiclk>, <&pclk>;
486*4882a593Smuzhiyun			clock-names = "KMIREFCLK", "apb_pclk";
487*4882a593Smuzhiyun		};
488*4882a593Smuzhiyun
489*4882a593Smuzhiyun		kmi1: kmi@10007000 {
490*4882a593Smuzhiyun			compatible = "arm,pl050", "arm,primecell";
491*4882a593Smuzhiyun			reg = <0x10007000 0x1000>;
492*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
493*4882a593Smuzhiyun			interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
494*4882a593Smuzhiyun			clocks = <&kmiclk>, <&pclk>;
495*4882a593Smuzhiyun			clock-names = "KMIREFCLK", "apb_pclk";
496*4882a593Smuzhiyun		};
497*4882a593Smuzhiyun
498*4882a593Smuzhiyun		pb11mp_serial0: serial@10009000 {
499*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
500*4882a593Smuzhiyun			reg = <0x10009000 0x1000>;
501*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
502*4882a593Smuzhiyun			interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
503*4882a593Smuzhiyun			clocks = <&uartclk>, <&pclk>;
504*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
505*4882a593Smuzhiyun		};
506*4882a593Smuzhiyun
507*4882a593Smuzhiyun		pb11mp_serial1: serial@1000a000 {
508*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
509*4882a593Smuzhiyun			reg = <0x1000a000 0x1000>;
510*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
511*4882a593Smuzhiyun			interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>;
512*4882a593Smuzhiyun			clocks = <&uartclk>, <&pclk>;
513*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
514*4882a593Smuzhiyun		};
515*4882a593Smuzhiyun
516*4882a593Smuzhiyun		pb11mp_serial2: serial@1000b000 {
517*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
518*4882a593Smuzhiyun			reg = <0x1000b000 0x1000>;
519*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
520*4882a593Smuzhiyun			interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>;
521*4882a593Smuzhiyun			clocks = <&uartclk>, <&pclk>;
522*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
523*4882a593Smuzhiyun		};
524*4882a593Smuzhiyun
525*4882a593Smuzhiyun		pb11mp_serial3: serial@1000c000 {
526*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
527*4882a593Smuzhiyun			reg = <0x1000c000 0x1000>;
528*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
529*4882a593Smuzhiyun			interrupts = <0 15 IRQ_TYPE_LEVEL_HIGH>;
530*4882a593Smuzhiyun			clocks = <&uartclk>, <&pclk>;
531*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
532*4882a593Smuzhiyun		};
533*4882a593Smuzhiyun
534*4882a593Smuzhiyun		spi@1000d000 {
535*4882a593Smuzhiyun			compatible = "arm,pl022", "arm,primecell";
536*4882a593Smuzhiyun			reg = <0x1000d000 0x1000>;
537*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
538*4882a593Smuzhiyun			interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
539*4882a593Smuzhiyun			clocks = <&sspclk>, <&pclk>;
540*4882a593Smuzhiyun			clock-names = "SSPCLK", "apb_pclk";
541*4882a593Smuzhiyun		};
542*4882a593Smuzhiyun
543*4882a593Smuzhiyun		watchdog@1000f000 {
544*4882a593Smuzhiyun			compatible = "arm,sp805", "arm,primecell";
545*4882a593Smuzhiyun			reg = <0x1000f000 0x1000>;
546*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
547*4882a593Smuzhiyun			interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>;
548*4882a593Smuzhiyun			clocks = <&wdogclk>, <&pclk>;
549*4882a593Smuzhiyun			clock-names = "wdog_clk", "apb_pclk";
550*4882a593Smuzhiyun			status = "disabled";
551*4882a593Smuzhiyun		};
552*4882a593Smuzhiyun
553*4882a593Smuzhiyun		watchdog@10010000 {
554*4882a593Smuzhiyun			compatible = "arm,sp805", "arm,primecell";
555*4882a593Smuzhiyun			reg = <0x10010000 0x1000>;
556*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
557*4882a593Smuzhiyun			interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>;
558*4882a593Smuzhiyun			clocks = <&wdogclk>, <&pclk>;
559*4882a593Smuzhiyun			clock-names = "wdog_clk", "apb_pclk";
560*4882a593Smuzhiyun		};
561*4882a593Smuzhiyun
562*4882a593Smuzhiyun		timer01: timer@10011000 {
563*4882a593Smuzhiyun			compatible = "arm,sp804", "arm,primecell";
564*4882a593Smuzhiyun			reg = <0x10011000 0x1000>;
565*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
566*4882a593Smuzhiyun			interrupts = <0 1 IRQ_TYPE_LEVEL_HIGH>;
567*4882a593Smuzhiyun			arm,sp804-has-irq = <1>;
568*4882a593Smuzhiyun			clocks = <&sp810_syscon 0>,
569*4882a593Smuzhiyun			         <&sp810_syscon 1>,
570*4882a593Smuzhiyun				 <&pclk>;
571*4882a593Smuzhiyun			clock-names = "timer0clk",
572*4882a593Smuzhiyun				    "timer1clk",
573*4882a593Smuzhiyun				    "apb_pclk";
574*4882a593Smuzhiyun		};
575*4882a593Smuzhiyun
576*4882a593Smuzhiyun		timer23: timer@10012000 {
577*4882a593Smuzhiyun			compatible = "arm,sp804", "arm,primecell";
578*4882a593Smuzhiyun			reg = <0x10012000 0x1000>;
579*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
580*4882a593Smuzhiyun			interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;
581*4882a593Smuzhiyun			arm,sp804-has-irq = <1>;
582*4882a593Smuzhiyun			clocks = <&sp810_syscon 2>,
583*4882a593Smuzhiyun			         <&sp810_syscon 3>,
584*4882a593Smuzhiyun				 <&pclk>;
585*4882a593Smuzhiyun			clock-names = "timer0clk",
586*4882a593Smuzhiyun				    "timer1clk",
587*4882a593Smuzhiyun				    "apb_pclk";
588*4882a593Smuzhiyun		};
589*4882a593Smuzhiyun
590*4882a593Smuzhiyun		gpio0: gpio@10013000 {
591*4882a593Smuzhiyun			compatible = "arm,pl061", "arm,primecell";
592*4882a593Smuzhiyun			reg = <0x10013000 0x1000>;
593*4882a593Smuzhiyun			gpio-controller;
594*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
595*4882a593Smuzhiyun			interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
596*4882a593Smuzhiyun			#gpio-cells = <2>;
597*4882a593Smuzhiyun			interrupt-controller;
598*4882a593Smuzhiyun			#interrupt-cells = <2>;
599*4882a593Smuzhiyun			clocks = <&pclk>;
600*4882a593Smuzhiyun			clock-names = "apb_pclk";
601*4882a593Smuzhiyun		};
602*4882a593Smuzhiyun
603*4882a593Smuzhiyun		gpio1: gpio@10014000 {
604*4882a593Smuzhiyun			compatible = "arm,pl061", "arm,primecell";
605*4882a593Smuzhiyun			reg = <0x10014000 0x1000>;
606*4882a593Smuzhiyun			gpio-controller;
607*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
608*4882a593Smuzhiyun			interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
609*4882a593Smuzhiyun			#gpio-cells = <2>;
610*4882a593Smuzhiyun			interrupt-controller;
611*4882a593Smuzhiyun			#interrupt-cells = <2>;
612*4882a593Smuzhiyun			clocks = <&pclk>;
613*4882a593Smuzhiyun			clock-names = "apb_pclk";
614*4882a593Smuzhiyun		};
615*4882a593Smuzhiyun
616*4882a593Smuzhiyun		gpio2: gpio@10015000 {
617*4882a593Smuzhiyun			compatible = "arm,pl061", "arm,primecell";
618*4882a593Smuzhiyun			reg = <0x10015000 0x1000>;
619*4882a593Smuzhiyun			gpio-controller;
620*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
621*4882a593Smuzhiyun			interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
622*4882a593Smuzhiyun			#gpio-cells = <2>;
623*4882a593Smuzhiyun			interrupt-controller;
624*4882a593Smuzhiyun			#interrupt-cells = <2>;
625*4882a593Smuzhiyun			clocks = <&pclk>;
626*4882a593Smuzhiyun			clock-names = "apb_pclk";
627*4882a593Smuzhiyun		};
628*4882a593Smuzhiyun
629*4882a593Smuzhiyun		i2c1: i2c@10016000 {
630*4882a593Smuzhiyun			#address-cells = <1>;
631*4882a593Smuzhiyun			#size-cells = <0>;
632*4882a593Smuzhiyun			compatible = "arm,versatile-i2c";
633*4882a593Smuzhiyun			reg = <0x10016000 0x1000>;
634*4882a593Smuzhiyun		};
635*4882a593Smuzhiyun
636*4882a593Smuzhiyun		rtc: rtc@10017000 {
637*4882a593Smuzhiyun			compatible = "arm,pl031", "arm,primecell";
638*4882a593Smuzhiyun			reg = <0x10017000 0x1000>;
639*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
640*4882a593Smuzhiyun			interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
641*4882a593Smuzhiyun			clocks = <&pclk>;
642*4882a593Smuzhiyun			clock-names = "apb_pclk";
643*4882a593Smuzhiyun		};
644*4882a593Smuzhiyun
645*4882a593Smuzhiyun		timer45: timer@10018000 {
646*4882a593Smuzhiyun			compatible = "arm,sp804", "arm,primecell";
647*4882a593Smuzhiyun			reg = <0x10018000 0x1000>;
648*4882a593Smuzhiyun			clocks = <&timclk>, <&timclk>, <&pclk>;
649*4882a593Smuzhiyun			clock-names = "timer0clk", "timer1clk", "apb_pclk";
650*4882a593Smuzhiyun			status = "disabled";
651*4882a593Smuzhiyun		};
652*4882a593Smuzhiyun
653*4882a593Smuzhiyun		timer67: timer@10019000 {
654*4882a593Smuzhiyun			compatible = "arm,sp804", "arm,primecell";
655*4882a593Smuzhiyun			reg = <0x10019000 0x1000>;
656*4882a593Smuzhiyun			clocks = <&timclk>, <&timclk>, <&pclk>;
657*4882a593Smuzhiyun			clock-names = "timer0clk", "timer1clk", "apb_pclk";
658*4882a593Smuzhiyun			status = "disabled";
659*4882a593Smuzhiyun		};
660*4882a593Smuzhiyun
661*4882a593Smuzhiyun
662*4882a593Smuzhiyun		clcd@10020000 {
663*4882a593Smuzhiyun			compatible = "arm,pl111", "arm,primecell";
664*4882a593Smuzhiyun			reg = <0x10020000 0x1000>;
665*4882a593Smuzhiyun			interrupt-parent = <&intc_pb11mp>;
666*4882a593Smuzhiyun			interrupt-names = "combined";
667*4882a593Smuzhiyun			interrupts = <0 23 IRQ_TYPE_LEVEL_HIGH>;
668*4882a593Smuzhiyun			clocks = <&oscclk4>, <&pclk>;
669*4882a593Smuzhiyun			clock-names = "clcdclk", "apb_pclk";
670*4882a593Smuzhiyun			/* 1024x768 16bpp @65MHz works fine */
671*4882a593Smuzhiyun			max-memory-bandwidth = <95000000>;
672*4882a593Smuzhiyun
673*4882a593Smuzhiyun			port {
674*4882a593Smuzhiyun				clcd_pads: endpoint {
675*4882a593Smuzhiyun					remote-endpoint = <&vga_bridge_in>;
676*4882a593Smuzhiyun					arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
677*4882a593Smuzhiyun				};
678*4882a593Smuzhiyun			};
679*4882a593Smuzhiyun		};
680*4882a593Smuzhiyun
681*4882a593Smuzhiyun		/*
682*4882a593Smuzhiyun		 * This GIC on the Platform Baseboard is cascaded off the
683*4882a593Smuzhiyun		 * TestChip GIC
684*4882a593Smuzhiyun		 */
685*4882a593Smuzhiyun		intc_pb11mp: interrupt-controller@1e000000 {
686*4882a593Smuzhiyun			compatible = "arm,arm11mp-gic";
687*4882a593Smuzhiyun			#interrupt-cells = <3>;
688*4882a593Smuzhiyun			#address-cells = <1>;
689*4882a593Smuzhiyun			interrupt-controller;
690*4882a593Smuzhiyun			reg = <0x1e001000 0x1000>,
691*4882a593Smuzhiyun			      <0x1e000000 0x100>;
692*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
693*4882a593Smuzhiyun			interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>;
694*4882a593Smuzhiyun		};
695*4882a593Smuzhiyun
696*4882a593Smuzhiyun		/* SMSC 9118 ethernet with PHY and EEPROM */
697*4882a593Smuzhiyun		ethernet@4e000000 {
698*4882a593Smuzhiyun			compatible = "smsc,lan9118", "smsc,lan9115";
699*4882a593Smuzhiyun			reg = <0x4e000000 0x10000>;
700*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
701*4882a593Smuzhiyun			interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
702*4882a593Smuzhiyun			phy-mode = "mii";
703*4882a593Smuzhiyun			reg-io-width = <4>;
704*4882a593Smuzhiyun			smsc,irq-active-high;
705*4882a593Smuzhiyun			smsc,irq-push-pull;
706*4882a593Smuzhiyun			vdd33a-supply = <&veth>;
707*4882a593Smuzhiyun			vddvario-supply = <&veth>;
708*4882a593Smuzhiyun		};
709*4882a593Smuzhiyun
710*4882a593Smuzhiyun		usb@4f000000 {
711*4882a593Smuzhiyun			compatible = "nxp,usb-isp1761";
712*4882a593Smuzhiyun			reg = <0x4f000000 0x20000>;
713*4882a593Smuzhiyun			interrupt-parent = <&intc_tc11mp>;
714*4882a593Smuzhiyun			interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>;
715*4882a593Smuzhiyun			port1-otg;
716*4882a593Smuzhiyun		};
717*4882a593Smuzhiyun	};
718*4882a593Smuzhiyun};
719