blob: 84dcf3e5c8d9e36460925984ae9708c108b8f040 [file] [log] [blame]
Eric Anholt548c3a32015-12-16 13:24:40 -08001#include <dt-bindings/pinctrl/bcm2835.h>
2#include <dt-bindings/clock/bcm2835.h>
Martin Sperlf974d682015-09-11 11:22:05 +00003#include <dt-bindings/clock/bcm2835-aux.h>
Eric Anholt548c3a32015-12-16 13:24:40 -08004#include "skeleton.dtsi"
5
6/* This include file covers the common peripherals and configuration between
7 * bcm2835 and bcm2836 implementations, leaving the CPU configuration to
8 * bcm2835.dtsi and bcm2836.dtsi.
9 */
10
11/ {
12 compatible = "brcm,bcm2835";
13 model = "BCM2835";
14 interrupt-parent = <&intc>;
15
16 chosen {
17 bootargs = "earlyprintk console=ttyAMA0";
18 };
19
20 soc {
21 compatible = "simple-bus";
22 #address-cells = <1>;
23 #size-cells = <1>;
24
25 timer@7e003000 {
26 compatible = "brcm,bcm2835-system-timer";
27 reg = <0x7e003000 0x1000>;
28 interrupts = <1 0>, <1 1>, <1 2>, <1 3>;
29 /* This could be a reference to BCM2835_CLOCK_TIMER,
30 * but we don't have the driver using the common clock
31 * support yet.
32 */
33 clock-frequency = <1000000>;
34 };
35
36 dma: dma@7e007000 {
37 compatible = "brcm,bcm2835-dma";
38 reg = <0x7e007000 0xf00>;
39 interrupts = <1 16>,
40 <1 17>,
41 <1 18>,
42 <1 19>,
43 <1 20>,
44 <1 21>,
45 <1 22>,
46 <1 23>,
47 <1 24>,
48 <1 25>,
49 <1 26>,
Martin Sperl9bc0fa52016-04-11 13:29:09 +000050 /* dma channel 11-14 share one irq */
Eric Anholt548c3a32015-12-16 13:24:40 -080051 <1 27>,
Martin Sperl9bc0fa52016-04-11 13:29:09 +000052 <1 27>,
53 <1 27>,
54 <1 27>,
55 /* unused shared irq for all channels */
Eric Anholt548c3a32015-12-16 13:24:40 -080056 <1 28>;
Martin Sperl9bc0fa52016-04-11 13:29:09 +000057 interrupt-names = "dma0",
58 "dma1",
59 "dma2",
60 "dma3",
61 "dma4",
62 "dma5",
63 "dma6",
64 "dma7",
65 "dma8",
66 "dma9",
67 "dma10",
68 "dma11",
69 "dma12",
70 "dma13",
71 "dma14",
72 "dma-shared-all";
Eric Anholt548c3a32015-12-16 13:24:40 -080073 #dma-cells = <1>;
74 brcm,dma-channel-mask = <0x7f35>;
75 };
76
77 intc: interrupt-controller@7e00b200 {
78 compatible = "brcm,bcm2835-armctrl-ic";
79 reg = <0x7e00b200 0x200>;
80 interrupt-controller;
81 #interrupt-cells = <2>;
82 };
83
84 watchdog@7e100000 {
85 compatible = "brcm,bcm2835-pm-wdt";
86 reg = <0x7e100000 0x28>;
87 };
88
89 clocks: cprman@7e101000 {
90 compatible = "brcm,bcm2835-cprman";
91 #clock-cells = <1>;
92 reg = <0x7e101000 0x2000>;
93
94 /* CPRMAN derives everything from the platform's
95 * oscillator.
96 */
97 clocks = <&clk_osc>;
98 };
99
100 rng@7e104000 {
101 compatible = "brcm,bcm2835-rng";
102 reg = <0x7e104000 0x10>;
103 };
104
105 mailbox: mailbox@7e00b800 {
106 compatible = "brcm,bcm2835-mbox";
107 reg = <0x7e00b880 0x40>;
108 interrupts = <0 1>;
109 #mbox-cells = <0>;
110 };
111
112 gpio: gpio@7e200000 {
113 compatible = "brcm,bcm2835-gpio";
114 reg = <0x7e200000 0xb4>;
115 /*
116 * The GPIO IP block is designed for 3 banks of GPIOs.
117 * Each bank has a GPIO interrupt for itself.
118 * There is an overall "any bank" interrupt.
119 * In order, these are GIC interrupts 17, 18, 19, 20.
120 * Since the BCM2835 only has 2 banks, the 2nd bank
121 * interrupt output appears to be mirrored onto the
122 * 3rd bank's interrupt signal.
123 * So, a bank0 interrupt shows up on 17, 20, and
124 * a bank1 interrupt shows up on 18, 19, 20!
125 */
126 interrupts = <2 17>, <2 18>, <2 19>, <2 20>;
127
128 gpio-controller;
129 #gpio-cells = <2>;
130
131 interrupt-controller;
132 #interrupt-cells = <2>;
133 };
134
Martin Sperl68e2ef12016-01-17 12:15:28 +0000135 uart0: serial@7e201000 {
Eric Anholt548c3a32015-12-16 13:24:40 -0800136 compatible = "brcm,bcm2835-pl011", "arm,pl011", "arm,primecell";
137 reg = <0x7e201000 0x1000>;
138 interrupts = <2 25>;
139 clocks = <&clocks BCM2835_CLOCK_UART>,
140 <&clocks BCM2835_CLOCK_VPU>;
141 clock-names = "uartclk", "apb_pclk";
142 arm,primecell-periphid = <0x00241011>;
143 };
144
145 i2s: i2s@7e203000 {
146 compatible = "brcm,bcm2835-i2s";
147 reg = <0x7e203000 0x20>,
148 <0x7e101098 0x02>;
149
150 dmas = <&dma 2>,
151 <&dma 3>;
152 dma-names = "tx", "rx";
153 status = "disabled";
154 };
155
156 spi: spi@7e204000 {
157 compatible = "brcm,bcm2835-spi";
158 reg = <0x7e204000 0x1000>;
159 interrupts = <2 22>;
160 clocks = <&clocks BCM2835_CLOCK_VPU>;
161 #address-cells = <1>;
162 #size-cells = <0>;
163 status = "disabled";
164 };
165
166 i2c0: i2c@7e205000 {
167 compatible = "brcm,bcm2835-i2c";
168 reg = <0x7e205000 0x1000>;
169 interrupts = <2 21>;
170 clocks = <&clocks BCM2835_CLOCK_VPU>;
171 #address-cells = <1>;
172 #size-cells = <0>;
173 status = "disabled";
174 };
175
Eric Anholtddc5c392015-12-15 15:35:59 -0800176 aux: aux@0x7e215000 {
177 compatible = "brcm,bcm2835-aux";
178 #clock-cells = <1>;
179 reg = <0x7e215000 0x8>;
180 clocks = <&clocks BCM2835_CLOCK_VPU>;
181 };
182
Martin Sperl13051412016-02-12 11:14:25 +0000183 uart1: serial@7e215040 {
184 compatible = "brcm,bcm2835-aux-uart";
185 reg = <0x7e215040 0x40>;
186 interrupts = <1 29>;
187 clocks = <&aux BCM2835_AUX_CLOCK_UART>;
188 status = "disabled";
189 };
190
Martin Sperlf974d682015-09-11 11:22:05 +0000191 spi1: spi@7e215080 {
192 compatible = "brcm,bcm2835-aux-spi";
193 reg = <0x7e215080 0x40>;
194 interrupts = <1 29>;
195 clocks = <&aux BCM2835_AUX_CLOCK_SPI1>;
196 #address-cells = <1>;
197 #size-cells = <0>;
198 status = "disabled";
199 };
200
201 spi2: spi@7e2150c0 {
202 compatible = "brcm,bcm2835-aux-spi";
203 reg = <0x7e2150c0 0x40>;
204 interrupts = <1 29>;
205 clocks = <&aux BCM2835_AUX_CLOCK_SPI2>;
206 #address-cells = <1>;
207 #size-cells = <0>;
208 status = "disabled";
209 };
210
Remi Pommarel40ad4492015-12-21 21:12:59 +0100211 pwm: pwm@7e20c000 {
212 compatible = "brcm,bcm2835-pwm";
213 reg = <0x7e20c000 0x28>;
214 clocks = <&clocks BCM2835_CLOCK_PWM>;
215 assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
216 assigned-clock-rates = <10000000>;
217 #pwm-cells = <2>;
218 status = "disabled";
219 };
220
Eric Anholt548c3a32015-12-16 13:24:40 -0800221 sdhci: sdhci@7e300000 {
222 compatible = "brcm,bcm2835-sdhci";
223 reg = <0x7e300000 0x100>;
224 interrupts = <2 30>;
225 clocks = <&clocks BCM2835_CLOCK_EMMC>;
226 status = "disabled";
227 };
228
229 i2c1: i2c@7e804000 {
230 compatible = "brcm,bcm2835-i2c";
231 reg = <0x7e804000 0x1000>;
232 interrupts = <2 21>;
233 clocks = <&clocks BCM2835_CLOCK_VPU>;
234 #address-cells = <1>;
235 #size-cells = <0>;
236 status = "disabled";
237 };
238
239 i2c2: i2c@7e805000 {
240 compatible = "brcm,bcm2835-i2c";
241 reg = <0x7e805000 0x1000>;
242 interrupts = <2 21>;
243 clocks = <&clocks BCM2835_CLOCK_VPU>;
244 #address-cells = <1>;
245 #size-cells = <0>;
246 status = "disabled";
247 };
248
Alexander Aring5ec6f2c2015-12-16 16:26:49 -0800249 usb: usb@7e980000 {
Eric Anholt548c3a32015-12-16 13:24:40 -0800250 compatible = "brcm,bcm2835-usb";
251 reg = <0x7e980000 0x10000>;
252 interrupts = <1 9>;
253 };
254 };
255
256 clocks {
257 compatible = "simple-bus";
258 #address-cells = <1>;
259 #size-cells = <0>;
260
261 /* The oscillator is the root of the clock tree. */
262 clk_osc: clock@3 {
263 compatible = "fixed-clock";
264 reg = <3>;
265 #clock-cells = <0>;
266 clock-output-names = "osc";
267 clock-frequency = <19200000>;
268 };
269
270 };
271};