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