1 #include <dt-bindings/pinctrl/bcm2835.h>
2 #include <dt-bindings/clock/bcm2835.h>
3 #include <dt-bindings/clock/bcm2835-aux.h>
4 #include <dt-bindings/gpio/gpio.h>
6 /* firmware-provided startup stubs live here, where the secondary CPUs are
9 /memreserve/ 0x00000000 0x00001000;
11 /* This include file covers the common peripherals and configuration between
12 * bcm2835 and bcm2836 implementations, leaving the CPU configuration to
13 * bcm2835.dtsi and bcm2836.dtsi.
17 compatible = "brcm,bcm2835";
19 interrupt-parent = <&intc>;
24 bootargs = "earlyprintk console=ttyAMA0";
28 compatible = "simple-bus";
33 compatible = "brcm,bcm2835-system-timer";
34 reg = <0x7e003000 0x1000>;
35 interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
36 /* This could be a reference to BCM2835_CLOCK_TIMER,
37 * but we don't have the driver using the common clock
40 clock-frequency = <1000000>;
44 compatible = "brcm,bcm2835-dma";
45 reg = <0x7e007000 0xf00>;
57 /* dma channel 11-14 share one irq */
62 /* unused shared irq for all channels */
64 interrupt-names = "dma0",
81 brcm,dma-channel-mask = <0x7f35>;
84 intc: interrupt-controller@7e00b200 {
85 compatible = "brcm,bcm2835-armctrl-ic";
86 reg = <0x7e00b200 0x200>;
88 #interrupt-cells = <2>;
92 compatible = "brcm,bcm2835-pm-wdt";
93 reg = <0x7e100000 0x28>;
96 clocks: cprman@7e101000 {
97 compatible = "brcm,bcm2835-cprman";
99 reg = <0x7e101000 0x2000>;
101 /* CPRMAN derives everything from the platform's
108 compatible = "brcm,bcm2835-rng";
109 reg = <0x7e104000 0x10>;
112 mailbox: mailbox@7e00b880 {
113 compatible = "brcm,bcm2835-mbox";
114 reg = <0x7e00b880 0x40>;
119 gpio: gpio@7e200000 {
120 compatible = "brcm,bcm2835-gpio";
121 reg = <0x7e200000 0xb4>;
123 * The GPIO IP block is designed for 3 banks of GPIOs.
124 * Each bank has a GPIO interrupt for itself.
125 * There is an overall "any bank" interrupt.
126 * In order, these are GIC interrupts 17, 18, 19, 20.
127 * Since the BCM2835 only has 2 banks, the 2nd bank
128 * interrupt output appears to be mirrored onto the
129 * 3rd bank's interrupt signal.
130 * So, a bank0 interrupt shows up on 17, 20, and
131 * a bank1 interrupt shows up on 18, 19, 20!
133 interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
138 interrupt-controller;
139 #interrupt-cells = <2>;
142 uart0: serial@7e201000 {
143 compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
144 reg = <0x7e201000 0x1000>;
146 clocks = <&clocks BCM2835_CLOCK_UART>,
147 <&clocks BCM2835_CLOCK_VPU>;
148 clock-names = "uartclk", "apb_pclk";
149 arm,primecell-periphid = <0x00241011>;
153 compatible = "brcm,bcm2835-i2s";
154 reg = <0x7e203000 0x24>;
155 clocks = <&clocks BCM2835_CLOCK_PCM>;
159 dma-names = "tx", "rx";
164 compatible = "brcm,bcm2835-spi";
165 reg = <0x7e204000 0x1000>;
167 clocks = <&clocks BCM2835_CLOCK_VPU>;
168 #address-cells = <1>;
174 compatible = "brcm,bcm2835-i2c";
175 reg = <0x7e205000 0x1000>;
177 clocks = <&clocks BCM2835_CLOCK_VPU>;
178 #address-cells = <1>;
183 pixelvalve@7e206000 {
184 compatible = "brcm,bcm2835-pixelvalve0";
185 reg = <0x7e206000 0x100>;
186 interrupts = <2 13>; /* pwa0 */
189 pixelvalve@7e207000 {
190 compatible = "brcm,bcm2835-pixelvalve1";
191 reg = <0x7e207000 0x100>;
192 interrupts = <2 14>; /* pwa1 */
195 aux: aux@0x7e215000 {
196 compatible = "brcm,bcm2835-aux";
198 reg = <0x7e215000 0x8>;
199 clocks = <&clocks BCM2835_CLOCK_VPU>;
202 uart1: serial@7e215040 {
203 compatible = "brcm,bcm2835-aux-uart";
204 reg = <0x7e215040 0x40>;
206 clocks = <&aux BCM2835_AUX_CLOCK_UART>;
211 compatible = "brcm,bcm2835-aux-spi";
212 reg = <0x7e215080 0x40>;
214 clocks = <&aux BCM2835_AUX_CLOCK_SPI1>;
215 #address-cells = <1>;
221 compatible = "brcm,bcm2835-aux-spi";
222 reg = <0x7e2150c0 0x40>;
224 clocks = <&aux BCM2835_AUX_CLOCK_SPI2>;
225 #address-cells = <1>;
231 compatible = "brcm,bcm2835-pwm";
232 reg = <0x7e20c000 0x28>;
233 clocks = <&clocks BCM2835_CLOCK_PWM>;
234 assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
235 assigned-clock-rates = <10000000>;
240 sdhci: sdhci@7e300000 {
241 compatible = "brcm,bcm2835-sdhci";
242 reg = <0x7e300000 0x100>;
244 clocks = <&clocks BCM2835_CLOCK_EMMC>;
249 compatible = "brcm,bcm2835-hvs";
250 reg = <0x7e400000 0x6000>;
255 compatible = "brcm,bcm2835-i2c";
256 reg = <0x7e804000 0x1000>;
258 clocks = <&clocks BCM2835_CLOCK_VPU>;
259 #address-cells = <1>;
265 compatible = "brcm,bcm2835-i2c";
266 reg = <0x7e805000 0x1000>;
268 clocks = <&clocks BCM2835_CLOCK_VPU>;
269 #address-cells = <1>;
274 pixelvalve@7e807000 {
275 compatible = "brcm,bcm2835-pixelvalve2";
276 reg = <0x7e807000 0x100>;
277 interrupts = <2 10>; /* pixelvalve */
280 hdmi: hdmi@7e902000 {
281 compatible = "brcm,bcm2835-hdmi";
282 reg = <0x7e902000 0x600>,
284 interrupts = <2 8>, <2 9>;
286 clocks = <&clocks BCM2835_PLLH_PIX>,
287 <&clocks BCM2835_CLOCK_HSM>;
288 clock-names = "pixel", "hdmi";
293 compatible = "brcm,bcm2835-usb";
294 reg = <0x7e980000 0x10000>;
296 #address-cells = <1>;
303 compatible = "brcm,bcm2835-v3d";
304 reg = <0x7ec00000 0x1000>;
309 compatible = "brcm,bcm2835-vc4";
314 compatible = "simple-bus";
315 #address-cells = <1>;
318 /* The oscillator is the root of the clock tree. */
320 compatible = "fixed-clock";
323 clock-output-names = "osc";
324 clock-frequency = <19200000>;
328 compatible = "fixed-clock";
331 clock-output-names = "otg";
332 clock-frequency = <480000000>;