xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/bcm283x.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#include <dt-bindings/pinctrl/bcm2835.h>
2*4882a593Smuzhiyun#include <dt-bindings/clock/bcm2835.h>
3*4882a593Smuzhiyun#include <dt-bindings/clock/bcm2835-aux.h>
4*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
5*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
6*4882a593Smuzhiyun#include <dt-bindings/soc/bcm2835-pm.h>
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun/* firmware-provided startup stubs live here, where the secondary CPUs are
9*4882a593Smuzhiyun * spinning.
10*4882a593Smuzhiyun */
11*4882a593Smuzhiyun/memreserve/ 0x00000000 0x00001000;
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun/* This include file covers the common peripherals and configuration between
14*4882a593Smuzhiyun * bcm2835 and bcm2836 implementations, leaving the CPU configuration to
15*4882a593Smuzhiyun * bcm2835.dtsi and bcm2836.dtsi.
16*4882a593Smuzhiyun */
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun/ {
19*4882a593Smuzhiyun	compatible = "brcm,bcm2835";
20*4882a593Smuzhiyun	model = "BCM2835";
21*4882a593Smuzhiyun	#address-cells = <1>;
22*4882a593Smuzhiyun	#size-cells = <1>;
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun	aliases {
25*4882a593Smuzhiyun		serial0 = &uart0;
26*4882a593Smuzhiyun		serial1 = &uart1;
27*4882a593Smuzhiyun	};
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun	chosen {
30*4882a593Smuzhiyun		stdout-path = "serial0:115200n8";
31*4882a593Smuzhiyun	};
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun	rmem: reserved-memory {
34*4882a593Smuzhiyun		#address-cells = <1>;
35*4882a593Smuzhiyun		#size-cells = <1>;
36*4882a593Smuzhiyun		ranges;
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun		cma: linux,cma {
39*4882a593Smuzhiyun			compatible = "shared-dma-pool";
40*4882a593Smuzhiyun			size = <0x4000000>; /* 64MB */
41*4882a593Smuzhiyun			reusable;
42*4882a593Smuzhiyun			linux,cma-default;
43*4882a593Smuzhiyun		};
44*4882a593Smuzhiyun	};
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun	thermal-zones {
47*4882a593Smuzhiyun		cpu_thermal: cpu-thermal {
48*4882a593Smuzhiyun			polling-delay-passive = <0>;
49*4882a593Smuzhiyun			polling-delay = <1000>;
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun			trips {
52*4882a593Smuzhiyun				cpu-crit {
53*4882a593Smuzhiyun					temperature	= <90000>;
54*4882a593Smuzhiyun					hysteresis	= <0>;
55*4882a593Smuzhiyun					type		= "critical";
56*4882a593Smuzhiyun				};
57*4882a593Smuzhiyun			};
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun			cooling-maps {
60*4882a593Smuzhiyun			};
61*4882a593Smuzhiyun		};
62*4882a593Smuzhiyun	};
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun	soc {
65*4882a593Smuzhiyun		compatible = "simple-bus";
66*4882a593Smuzhiyun		#address-cells = <1>;
67*4882a593Smuzhiyun		#size-cells = <1>;
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun		system_timer: timer@7e003000 {
70*4882a593Smuzhiyun			compatible = "brcm,bcm2835-system-timer";
71*4882a593Smuzhiyun			reg = <0x7e003000 0x1000>;
72*4882a593Smuzhiyun			interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
73*4882a593Smuzhiyun			/* This could be a reference to BCM2835_CLOCK_TIMER,
74*4882a593Smuzhiyun			 * but we don't have the driver using the common clock
75*4882a593Smuzhiyun			 * support yet.
76*4882a593Smuzhiyun			 */
77*4882a593Smuzhiyun			clock-frequency = <1000000>;
78*4882a593Smuzhiyun		};
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun		txp: txp@7e004000 {
81*4882a593Smuzhiyun			compatible = "brcm,bcm2835-txp";
82*4882a593Smuzhiyun			reg = <0x7e004000 0x20>;
83*4882a593Smuzhiyun			interrupts = <1 11>;
84*4882a593Smuzhiyun		};
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun		clocks: cprman@7e101000 {
87*4882a593Smuzhiyun			compatible = "brcm,bcm2835-cprman";
88*4882a593Smuzhiyun			#clock-cells = <1>;
89*4882a593Smuzhiyun			reg = <0x7e101000 0x2000>;
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun			/* CPRMAN derives almost everything from the
92*4882a593Smuzhiyun			 * platform's oscillator.  However, the DSI
93*4882a593Smuzhiyun			 * pixel clocks come from the DSI analog PHY.
94*4882a593Smuzhiyun			 */
95*4882a593Smuzhiyun			clocks = <&clk_osc>,
96*4882a593Smuzhiyun				<&dsi0 0>, <&dsi0 1>, <&dsi0 2>,
97*4882a593Smuzhiyun				<&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
98*4882a593Smuzhiyun		};
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun		mailbox: mailbox@7e00b880 {
101*4882a593Smuzhiyun			compatible = "brcm,bcm2835-mbox";
102*4882a593Smuzhiyun			reg = <0x7e00b880 0x40>;
103*4882a593Smuzhiyun			interrupts = <0 1>;
104*4882a593Smuzhiyun			#mbox-cells = <0>;
105*4882a593Smuzhiyun		};
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun		gpio: gpio@7e200000 {
108*4882a593Smuzhiyun			compatible = "brcm,bcm2835-gpio";
109*4882a593Smuzhiyun			reg = <0x7e200000 0xb4>;
110*4882a593Smuzhiyun			/*
111*4882a593Smuzhiyun			 * The GPIO IP block is designed for 3 banks of GPIOs.
112*4882a593Smuzhiyun			 * Each bank has a GPIO interrupt for itself.
113*4882a593Smuzhiyun			 * There is an overall "any bank" interrupt.
114*4882a593Smuzhiyun			 * In order, these are GIC interrupts 17, 18, 19, 20.
115*4882a593Smuzhiyun			 * Since the BCM2835 only has 2 banks, the 2nd bank
116*4882a593Smuzhiyun			 * interrupt output appears to be mirrored onto the
117*4882a593Smuzhiyun			 * 3rd bank's interrupt signal.
118*4882a593Smuzhiyun			 * So, a bank0 interrupt shows up on 17, 20, and
119*4882a593Smuzhiyun			 * a bank1 interrupt shows up on 18, 19, 20!
120*4882a593Smuzhiyun			 */
121*4882a593Smuzhiyun			interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun			gpio-controller;
124*4882a593Smuzhiyun			#gpio-cells = <2>;
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun			interrupt-controller;
127*4882a593Smuzhiyun			#interrupt-cells = <2>;
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun			gpio-ranges = <&gpio 0 0 54>;
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun			/* Defines common pin muxing groups
132*4882a593Smuzhiyun			 *
133*4882a593Smuzhiyun			 * While each pin can have its mux selected
134*4882a593Smuzhiyun			 * for various functions individually, some
135*4882a593Smuzhiyun			 * groups only make sense to switch to a
136*4882a593Smuzhiyun			 * particular function together.
137*4882a593Smuzhiyun			 */
138*4882a593Smuzhiyun			dpi_gpio0: dpi_gpio0 {
139*4882a593Smuzhiyun				brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
140*4882a593Smuzhiyun					     12 13 14 15 16 17 18 19
141*4882a593Smuzhiyun					     20 21 22 23 24 25 26 27>;
142*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT2>;
143*4882a593Smuzhiyun			};
144*4882a593Smuzhiyun			emmc_gpio22: emmc_gpio22 {
145*4882a593Smuzhiyun				brcm,pins = <22 23 24 25 26 27>;
146*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT3>;
147*4882a593Smuzhiyun			};
148*4882a593Smuzhiyun			emmc_gpio34: emmc_gpio34 {
149*4882a593Smuzhiyun				brcm,pins = <34 35 36 37 38 39>;
150*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT3>;
151*4882a593Smuzhiyun				brcm,pull = <BCM2835_PUD_OFF
152*4882a593Smuzhiyun					     BCM2835_PUD_UP
153*4882a593Smuzhiyun					     BCM2835_PUD_UP
154*4882a593Smuzhiyun					     BCM2835_PUD_UP
155*4882a593Smuzhiyun					     BCM2835_PUD_UP
156*4882a593Smuzhiyun					     BCM2835_PUD_UP>;
157*4882a593Smuzhiyun			};
158*4882a593Smuzhiyun			emmc_gpio48: emmc_gpio48 {
159*4882a593Smuzhiyun				brcm,pins = <48 49 50 51 52 53>;
160*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT3>;
161*4882a593Smuzhiyun			};
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun			gpclk0_gpio4: gpclk0_gpio4 {
164*4882a593Smuzhiyun				brcm,pins = <4>;
165*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
166*4882a593Smuzhiyun			};
167*4882a593Smuzhiyun			gpclk1_gpio5: gpclk1_gpio5 {
168*4882a593Smuzhiyun				brcm,pins = <5>;
169*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
170*4882a593Smuzhiyun			};
171*4882a593Smuzhiyun			gpclk1_gpio42: gpclk1_gpio42 {
172*4882a593Smuzhiyun				brcm,pins = <42>;
173*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
174*4882a593Smuzhiyun			};
175*4882a593Smuzhiyun			gpclk1_gpio44: gpclk1_gpio44 {
176*4882a593Smuzhiyun				brcm,pins = <44>;
177*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
178*4882a593Smuzhiyun			};
179*4882a593Smuzhiyun			gpclk2_gpio6: gpclk2_gpio6 {
180*4882a593Smuzhiyun				brcm,pins = <6>;
181*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
182*4882a593Smuzhiyun			};
183*4882a593Smuzhiyun			gpclk2_gpio43: gpclk2_gpio43 {
184*4882a593Smuzhiyun				brcm,pins = <43>;
185*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
186*4882a593Smuzhiyun				brcm,pull = <BCM2835_PUD_OFF>;
187*4882a593Smuzhiyun			};
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun			i2c0_gpio0: i2c0_gpio0 {
190*4882a593Smuzhiyun				brcm,pins = <0 1>;
191*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
192*4882a593Smuzhiyun			};
193*4882a593Smuzhiyun			i2c0_gpio28: i2c0_gpio28 {
194*4882a593Smuzhiyun				brcm,pins = <28 29>;
195*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
196*4882a593Smuzhiyun			};
197*4882a593Smuzhiyun			i2c0_gpio44: i2c0_gpio44 {
198*4882a593Smuzhiyun				brcm,pins = <44 45>;
199*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT1>;
200*4882a593Smuzhiyun			};
201*4882a593Smuzhiyun			i2c1_gpio2: i2c1_gpio2 {
202*4882a593Smuzhiyun				brcm,pins = <2 3>;
203*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
204*4882a593Smuzhiyun			};
205*4882a593Smuzhiyun			i2c1_gpio44: i2c1_gpio44 {
206*4882a593Smuzhiyun				brcm,pins = <44 45>;
207*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT2>;
208*4882a593Smuzhiyun			};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun			jtag_gpio22: jtag_gpio22 {
211*4882a593Smuzhiyun				brcm,pins = <22 23 24 25 26 27>;
212*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT4>;
213*4882a593Smuzhiyun			};
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun			pcm_gpio18: pcm_gpio18 {
216*4882a593Smuzhiyun				brcm,pins = <18 19 20 21>;
217*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
218*4882a593Smuzhiyun			};
219*4882a593Smuzhiyun			pcm_gpio28: pcm_gpio28 {
220*4882a593Smuzhiyun				brcm,pins = <28 29 30 31>;
221*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT2>;
222*4882a593Smuzhiyun			};
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun			sdhost_gpio48: sdhost_gpio48 {
225*4882a593Smuzhiyun				brcm,pins = <48 49 50 51 52 53>;
226*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
227*4882a593Smuzhiyun			};
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun			spi0_gpio7: spi0_gpio7 {
230*4882a593Smuzhiyun				brcm,pins = <7 8 9 10 11>;
231*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
232*4882a593Smuzhiyun			};
233*4882a593Smuzhiyun			spi0_gpio35: spi0_gpio35 {
234*4882a593Smuzhiyun				brcm,pins = <35 36 37 38 39>;
235*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
236*4882a593Smuzhiyun			};
237*4882a593Smuzhiyun			spi1_gpio16: spi1_gpio16 {
238*4882a593Smuzhiyun				brcm,pins = <16 17 18 19 20 21>;
239*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT4>;
240*4882a593Smuzhiyun			};
241*4882a593Smuzhiyun			spi2_gpio40: spi2_gpio40 {
242*4882a593Smuzhiyun				brcm,pins = <40 41 42 43 44 45>;
243*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT4>;
244*4882a593Smuzhiyun			};
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun			uart0_gpio14: uart0_gpio14 {
247*4882a593Smuzhiyun				brcm,pins = <14 15>;
248*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT0>;
249*4882a593Smuzhiyun			};
250*4882a593Smuzhiyun			/* Separate from the uart0_gpio14 group
251*4882a593Smuzhiyun			 * because it conflicts with spi1_gpio16, and
252*4882a593Smuzhiyun			 * people often run uart0 on the two pins
253*4882a593Smuzhiyun			 * without flow control.
254*4882a593Smuzhiyun			 */
255*4882a593Smuzhiyun			uart0_ctsrts_gpio16: uart0_ctsrts_gpio16 {
256*4882a593Smuzhiyun				brcm,pins = <16 17>;
257*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT3>;
258*4882a593Smuzhiyun			};
259*4882a593Smuzhiyun			uart0_ctsrts_gpio30: uart0_ctsrts_gpio30 {
260*4882a593Smuzhiyun				brcm,pins = <30 31>;
261*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT3>;
262*4882a593Smuzhiyun				brcm,pull = <BCM2835_PUD_UP BCM2835_PUD_OFF>;
263*4882a593Smuzhiyun			};
264*4882a593Smuzhiyun			uart0_gpio32: uart0_gpio32 {
265*4882a593Smuzhiyun				brcm,pins = <32 33>;
266*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT3>;
267*4882a593Smuzhiyun				brcm,pull = <BCM2835_PUD_OFF BCM2835_PUD_UP>;
268*4882a593Smuzhiyun			};
269*4882a593Smuzhiyun			uart0_gpio36: uart0_gpio36 {
270*4882a593Smuzhiyun				brcm,pins = <36 37>;
271*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT2>;
272*4882a593Smuzhiyun			};
273*4882a593Smuzhiyun			uart0_ctsrts_gpio38: uart0_ctsrts_gpio38 {
274*4882a593Smuzhiyun				brcm,pins = <38 39>;
275*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT2>;
276*4882a593Smuzhiyun			};
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun			uart1_gpio14: uart1_gpio14 {
279*4882a593Smuzhiyun				brcm,pins = <14 15>;
280*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT5>;
281*4882a593Smuzhiyun			};
282*4882a593Smuzhiyun			uart1_ctsrts_gpio16: uart1_ctsrts_gpio16 {
283*4882a593Smuzhiyun				brcm,pins = <16 17>;
284*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT5>;
285*4882a593Smuzhiyun			};
286*4882a593Smuzhiyun			uart1_gpio32: uart1_gpio32 {
287*4882a593Smuzhiyun				brcm,pins = <32 33>;
288*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT5>;
289*4882a593Smuzhiyun			};
290*4882a593Smuzhiyun			uart1_ctsrts_gpio30: uart1_ctsrts_gpio30 {
291*4882a593Smuzhiyun				brcm,pins = <30 31>;
292*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT5>;
293*4882a593Smuzhiyun			};
294*4882a593Smuzhiyun			uart1_gpio40: uart1_gpio40 {
295*4882a593Smuzhiyun				brcm,pins = <40 41>;
296*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT5>;
297*4882a593Smuzhiyun			};
298*4882a593Smuzhiyun			uart1_ctsrts_gpio42: uart1_ctsrts_gpio42 {
299*4882a593Smuzhiyun				brcm,pins = <42 43>;
300*4882a593Smuzhiyun				brcm,function = <BCM2835_FSEL_ALT5>;
301*4882a593Smuzhiyun			};
302*4882a593Smuzhiyun		};
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun		uart0: serial@7e201000 {
305*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
306*4882a593Smuzhiyun			reg = <0x7e201000 0x200>;
307*4882a593Smuzhiyun			interrupts = <2 25>;
308*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_UART>,
309*4882a593Smuzhiyun				 <&clocks BCM2835_CLOCK_VPU>;
310*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
311*4882a593Smuzhiyun			arm,primecell-periphid = <0x00241011>;
312*4882a593Smuzhiyun		};
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun		sdhost: mmc@7e202000 {
315*4882a593Smuzhiyun			compatible = "brcm,bcm2835-sdhost";
316*4882a593Smuzhiyun			reg = <0x7e202000 0x100>;
317*4882a593Smuzhiyun			interrupts = <2 24>;
318*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_VPU>;
319*4882a593Smuzhiyun			status = "disabled";
320*4882a593Smuzhiyun		};
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun		i2s: i2s@7e203000 {
323*4882a593Smuzhiyun			compatible = "brcm,bcm2835-i2s";
324*4882a593Smuzhiyun			reg = <0x7e203000 0x24>;
325*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_PCM>;
326*4882a593Smuzhiyun			status = "disabled";
327*4882a593Smuzhiyun		};
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun		spi: spi@7e204000 {
330*4882a593Smuzhiyun			compatible = "brcm,bcm2835-spi";
331*4882a593Smuzhiyun			reg = <0x7e204000 0x200>;
332*4882a593Smuzhiyun			interrupts = <2 22>;
333*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_VPU>;
334*4882a593Smuzhiyun			#address-cells = <1>;
335*4882a593Smuzhiyun			#size-cells = <0>;
336*4882a593Smuzhiyun			status = "disabled";
337*4882a593Smuzhiyun		};
338*4882a593Smuzhiyun
339*4882a593Smuzhiyun		i2c0: i2c@7e205000 {
340*4882a593Smuzhiyun			compatible = "brcm,bcm2835-i2c";
341*4882a593Smuzhiyun			reg = <0x7e205000 0x200>;
342*4882a593Smuzhiyun			interrupts = <2 21>;
343*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_VPU>;
344*4882a593Smuzhiyun			#address-cells = <1>;
345*4882a593Smuzhiyun			#size-cells = <0>;
346*4882a593Smuzhiyun			status = "disabled";
347*4882a593Smuzhiyun		};
348*4882a593Smuzhiyun
349*4882a593Smuzhiyun		dpi: dpi@7e208000 {
350*4882a593Smuzhiyun			compatible = "brcm,bcm2835-dpi";
351*4882a593Smuzhiyun			reg = <0x7e208000 0x8c>;
352*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_VPU>,
353*4882a593Smuzhiyun				 <&clocks BCM2835_CLOCK_DPI>;
354*4882a593Smuzhiyun			clock-names = "core", "pixel";
355*4882a593Smuzhiyun			#address-cells = <1>;
356*4882a593Smuzhiyun			#size-cells = <0>;
357*4882a593Smuzhiyun			status = "disabled";
358*4882a593Smuzhiyun		};
359*4882a593Smuzhiyun
360*4882a593Smuzhiyun		dsi0: dsi@7e209000 {
361*4882a593Smuzhiyun			compatible = "brcm,bcm2835-dsi0";
362*4882a593Smuzhiyun			reg = <0x7e209000 0x78>;
363*4882a593Smuzhiyun			interrupts = <2 4>;
364*4882a593Smuzhiyun			#address-cells = <1>;
365*4882a593Smuzhiyun			#size-cells = <0>;
366*4882a593Smuzhiyun			#clock-cells = <1>;
367*4882a593Smuzhiyun
368*4882a593Smuzhiyun			clocks = <&clocks BCM2835_PLLA_DSI0>,
369*4882a593Smuzhiyun				 <&clocks BCM2835_CLOCK_DSI0E>,
370*4882a593Smuzhiyun				 <&clocks BCM2835_CLOCK_DSI0P>;
371*4882a593Smuzhiyun			clock-names = "phy", "escape", "pixel";
372*4882a593Smuzhiyun
373*4882a593Smuzhiyun			clock-output-names = "dsi0_byte",
374*4882a593Smuzhiyun					     "dsi0_ddr2",
375*4882a593Smuzhiyun					     "dsi0_ddr";
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun			status = "disabled";
378*4882a593Smuzhiyun		};
379*4882a593Smuzhiyun
380*4882a593Smuzhiyun		aux: aux@7e215000 {
381*4882a593Smuzhiyun			compatible = "brcm,bcm2835-aux";
382*4882a593Smuzhiyun			#clock-cells = <1>;
383*4882a593Smuzhiyun			reg = <0x7e215000 0x8>;
384*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_VPU>;
385*4882a593Smuzhiyun		};
386*4882a593Smuzhiyun
387*4882a593Smuzhiyun		uart1: serial@7e215040 {
388*4882a593Smuzhiyun			compatible = "brcm,bcm2835-aux-uart";
389*4882a593Smuzhiyun			reg = <0x7e215040 0x40>;
390*4882a593Smuzhiyun			interrupts = <1 29>;
391*4882a593Smuzhiyun			clocks = <&aux BCM2835_AUX_CLOCK_UART>;
392*4882a593Smuzhiyun			status = "disabled";
393*4882a593Smuzhiyun		};
394*4882a593Smuzhiyun
395*4882a593Smuzhiyun		spi1: spi@7e215080 {
396*4882a593Smuzhiyun			compatible = "brcm,bcm2835-aux-spi";
397*4882a593Smuzhiyun			reg = <0x7e215080 0x40>;
398*4882a593Smuzhiyun			interrupts = <1 29>;
399*4882a593Smuzhiyun			clocks = <&aux BCM2835_AUX_CLOCK_SPI1>;
400*4882a593Smuzhiyun			#address-cells = <1>;
401*4882a593Smuzhiyun			#size-cells = <0>;
402*4882a593Smuzhiyun			status = "disabled";
403*4882a593Smuzhiyun		};
404*4882a593Smuzhiyun
405*4882a593Smuzhiyun		spi2: spi@7e2150c0 {
406*4882a593Smuzhiyun			compatible = "brcm,bcm2835-aux-spi";
407*4882a593Smuzhiyun			reg = <0x7e2150c0 0x40>;
408*4882a593Smuzhiyun			interrupts = <1 29>;
409*4882a593Smuzhiyun			clocks = <&aux BCM2835_AUX_CLOCK_SPI2>;
410*4882a593Smuzhiyun			#address-cells = <1>;
411*4882a593Smuzhiyun			#size-cells = <0>;
412*4882a593Smuzhiyun			status = "disabled";
413*4882a593Smuzhiyun		};
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun		pwm: pwm@7e20c000 {
416*4882a593Smuzhiyun			compatible = "brcm,bcm2835-pwm";
417*4882a593Smuzhiyun			reg = <0x7e20c000 0x28>;
418*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_PWM>;
419*4882a593Smuzhiyun			assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
420*4882a593Smuzhiyun			assigned-clock-rates = <10000000>;
421*4882a593Smuzhiyun			#pwm-cells = <2>;
422*4882a593Smuzhiyun			status = "disabled";
423*4882a593Smuzhiyun		};
424*4882a593Smuzhiyun
425*4882a593Smuzhiyun		sdhci: mmc@7e300000 {
426*4882a593Smuzhiyun			compatible = "brcm,bcm2835-sdhci";
427*4882a593Smuzhiyun			reg = <0x7e300000 0x100>;
428*4882a593Smuzhiyun			interrupts = <2 30>;
429*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_EMMC>;
430*4882a593Smuzhiyun			status = "disabled";
431*4882a593Smuzhiyun		};
432*4882a593Smuzhiyun
433*4882a593Smuzhiyun		hvs@7e400000 {
434*4882a593Smuzhiyun			compatible = "brcm,bcm2835-hvs";
435*4882a593Smuzhiyun			reg = <0x7e400000 0x6000>;
436*4882a593Smuzhiyun			interrupts = <2 1>;
437*4882a593Smuzhiyun		};
438*4882a593Smuzhiyun
439*4882a593Smuzhiyun		dsi1: dsi@7e700000 {
440*4882a593Smuzhiyun			compatible = "brcm,bcm2835-dsi1";
441*4882a593Smuzhiyun			reg = <0x7e700000 0x8c>;
442*4882a593Smuzhiyun			interrupts = <2 12>;
443*4882a593Smuzhiyun			#address-cells = <1>;
444*4882a593Smuzhiyun			#size-cells = <0>;
445*4882a593Smuzhiyun			#clock-cells = <1>;
446*4882a593Smuzhiyun
447*4882a593Smuzhiyun			clocks = <&clocks BCM2835_PLLD_DSI1>,
448*4882a593Smuzhiyun				 <&clocks BCM2835_CLOCK_DSI1E>,
449*4882a593Smuzhiyun				 <&clocks BCM2835_CLOCK_DSI1P>;
450*4882a593Smuzhiyun			clock-names = "phy", "escape", "pixel";
451*4882a593Smuzhiyun
452*4882a593Smuzhiyun			clock-output-names = "dsi1_byte",
453*4882a593Smuzhiyun					     "dsi1_ddr2",
454*4882a593Smuzhiyun					     "dsi1_ddr";
455*4882a593Smuzhiyun
456*4882a593Smuzhiyun			status = "disabled";
457*4882a593Smuzhiyun		};
458*4882a593Smuzhiyun
459*4882a593Smuzhiyun		i2c1: i2c@7e804000 {
460*4882a593Smuzhiyun			compatible = "brcm,bcm2835-i2c";
461*4882a593Smuzhiyun			reg = <0x7e804000 0x1000>;
462*4882a593Smuzhiyun			interrupts = <2 21>;
463*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_VPU>;
464*4882a593Smuzhiyun			#address-cells = <1>;
465*4882a593Smuzhiyun			#size-cells = <0>;
466*4882a593Smuzhiyun			status = "disabled";
467*4882a593Smuzhiyun		};
468*4882a593Smuzhiyun
469*4882a593Smuzhiyun		vec: vec@7e806000 {
470*4882a593Smuzhiyun			compatible = "brcm,bcm2835-vec";
471*4882a593Smuzhiyun			reg = <0x7e806000 0x1000>;
472*4882a593Smuzhiyun			clocks = <&clocks BCM2835_CLOCK_VEC>;
473*4882a593Smuzhiyun			interrupts = <2 27>;
474*4882a593Smuzhiyun			status = "disabled";
475*4882a593Smuzhiyun		};
476*4882a593Smuzhiyun
477*4882a593Smuzhiyun		usb: usb@7e980000 {
478*4882a593Smuzhiyun			compatible = "brcm,bcm2835-usb";
479*4882a593Smuzhiyun			reg = <0x7e980000 0x10000>;
480*4882a593Smuzhiyun			interrupts = <1 9>;
481*4882a593Smuzhiyun			#address-cells = <1>;
482*4882a593Smuzhiyun			#size-cells = <0>;
483*4882a593Smuzhiyun			clocks = <&clk_usb>;
484*4882a593Smuzhiyun			clock-names = "otg";
485*4882a593Smuzhiyun			phys = <&usbphy>;
486*4882a593Smuzhiyun			phy-names = "usb2-phy";
487*4882a593Smuzhiyun		};
488*4882a593Smuzhiyun	};
489*4882a593Smuzhiyun
490*4882a593Smuzhiyun	clocks {
491*4882a593Smuzhiyun		/* The oscillator is the root of the clock tree. */
492*4882a593Smuzhiyun		clk_osc: clk-osc {
493*4882a593Smuzhiyun			compatible = "fixed-clock";
494*4882a593Smuzhiyun			#clock-cells = <0>;
495*4882a593Smuzhiyun			clock-output-names = "osc";
496*4882a593Smuzhiyun			clock-frequency = <19200000>;
497*4882a593Smuzhiyun		};
498*4882a593Smuzhiyun
499*4882a593Smuzhiyun		clk_usb: clk-usb {
500*4882a593Smuzhiyun			compatible = "fixed-clock";
501*4882a593Smuzhiyun			#clock-cells = <0>;
502*4882a593Smuzhiyun			clock-output-names = "otg";
503*4882a593Smuzhiyun			clock-frequency = <480000000>;
504*4882a593Smuzhiyun		};
505*4882a593Smuzhiyun	};
506*4882a593Smuzhiyun
507*4882a593Smuzhiyun	usbphy: phy {
508*4882a593Smuzhiyun		compatible = "usb-nop-xceiv";
509*4882a593Smuzhiyun		#phy-cells = <0>;
510*4882a593Smuzhiyun	};
511*4882a593Smuzhiyun};
512