blob: 1bd1aba3322f111c67cf672019bb3aac9599d6cd [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001// SPDX-License-Identifier: GPL-2.0
Linus Walleij978577e2013-04-08 11:38:50 +02002/*
3 * Device Tree for the ST-Ericsson U300 Machine and SoC
4 */
5
6/dts-v1/;
7/include/ "skeleton.dtsi"
8
9/ {
10 model = "ST-Ericsson U300";
11 compatible = "stericsson,u300";
12 #address-cells = <1>;
13 #size-cells = <1>;
14
15 chosen {
16 bootargs = "root=/dev/ram0 console=ttyAMA0,115200n8 earlyprintk";
17 };
18
19 aliases {
20 serial0 = &uart0;
21 serial1 = &uart1;
22 };
23
24 memory {
25 reg = <0x48000000 0x03c00000>;
26 };
27
Linus Walleijecf5b392013-04-19 10:51:59 +020028 s365 {
29 compatible = "stericsson,s365";
30 vana15-supply = <&ab3100_ldo_d_reg>;
Linus Walleijcf0ce092013-05-22 16:15:13 +020031 syscon = <&syscon>;
32 };
33
34 syscon: syscon@c0011000 {
Linus Walleij7fca1f22013-06-13 21:21:31 +020035 compatible = "stericsson,u300-syscon", "syscon";
Linus Walleijcf0ce092013-05-22 16:15:13 +020036 reg = <0xc0011000 0x1000>;
Linus Walleij14c26072013-05-23 11:09:57 +020037 clk32: app_32_clk@32k {
38 #clock-cells = <0>;
39 compatible = "fixed-clock";
40 clock-frequency = <32768>;
41 };
42 pll13: pll13@13M {
43 #clock-cells = <0>;
44 compatible = "fixed-clock";
45 clock-frequency = <13000000>;
46 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +020047 /* Slow bridge clocks under PLL13 */
48 slow_clk: slow_clk@13M {
49 #clock-cells = <0>;
50 compatible = "stericsson,u300-syscon-clk";
51 clock-type = <0>; /* Slow */
52 clock-id = <0>;
53 clocks = <&pll13>;
54 };
55 uart0_clk: uart0_clk@13M {
56 #clock-cells = <0>;
57 compatible = "stericsson,u300-syscon-clk";
58 clock-type = <0>; /* Slow */
59 clock-id = <1>;
60 clocks = <&slow_clk>;
61 };
62 gpio_clk: gpio_clk@13M {
63 #clock-cells = <0>;
64 compatible = "stericsson,u300-syscon-clk";
65 clock-type = <0>; /* Slow */
66 clock-id = <4>;
67 clocks = <&slow_clk>;
68 };
69 rtc_clk: rtc_clk@13M {
70 #clock-cells = <0>;
71 compatible = "stericsson,u300-syscon-clk";
72 clock-type = <0>; /* Slow */
73 clock-id = <6>;
74 clocks = <&slow_clk>;
75 };
76 apptimer_clk: app_tmr_clk@13M {
77 #clock-cells = <0>;
78 compatible = "stericsson,u300-syscon-clk";
79 clock-type = <0>; /* Slow */
80 clock-id = <7>;
81 clocks = <&slow_clk>;
82 };
83 acc_tmr_clk@13M {
84 #clock-cells = <0>;
85 compatible = "stericsson,u300-syscon-clk";
86 clock-type = <0>; /* Slow */
87 clock-id = <8>;
88 clocks = <&slow_clk>;
89 };
Linus Walleij14c26072013-05-23 11:09:57 +020090 pll208: pll208@208M {
91 #clock-cells = <0>;
92 compatible = "fixed-clock";
93 clock-frequency = <208000000>;
94 };
95 app208: app_208_clk@208M {
96 #clock-cells = <0>;
97 compatible = "fixed-factor-clock";
98 clock-div = <1>;
99 clock-mult = <1>;
100 clocks = <&pll208>;
101 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200102 cpu_clk@208M {
103 #clock-cells = <0>;
104 compatible = "stericsson,u300-syscon-clk";
105 clock-type = <2>; /* Rest */
106 clock-id = <3>;
107 clocks = <&app208>;
108 };
Linus Walleij14c26072013-05-23 11:09:57 +0200109 app104: app_104_clk@104M {
110 #clock-cells = <0>;
111 compatible = "fixed-factor-clock";
112 clock-div = <2>;
113 clock-mult = <1>;
114 clocks = <&pll208>;
115 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200116 semi_clk@104M {
117 #clock-cells = <0>;
118 compatible = "stericsson,u300-syscon-clk";
119 clock-type = <2>; /* Rest */
120 clock-id = <9>;
121 clocks = <&app104>;
122 };
Linus Walleij14c26072013-05-23 11:09:57 +0200123 app52: app_52_clk@52M {
124 #clock-cells = <0>;
125 compatible = "fixed-factor-clock";
126 clock-div = <4>;
127 clock-mult = <1>;
128 clocks = <&pll208>;
129 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200130 /* AHB subsystem clocks */
131 ahb_clk: ahb_subsys_clk@52M {
132 #clock-cells = <0>;
133 compatible = "stericsson,u300-syscon-clk";
134 clock-type = <2>; /* Rest */
135 clock-id = <10>;
136 clocks = <&app52>;
137 };
138 intcon_clk@52M {
139 #clock-cells = <0>;
140 compatible = "stericsson,u300-syscon-clk";
141 clock-type = <2>; /* Rest */
142 clock-id = <12>;
143 clocks = <&ahb_clk>;
144 };
145 emif_clk@52M {
146 #clock-cells = <0>;
147 compatible = "stericsson,u300-syscon-clk";
148 clock-type = <2>; /* Rest */
149 clock-id = <5>;
150 clocks = <&ahb_clk>;
151 };
152 dmac_clk: dmac_clk@52M {
153 #clock-cells = <0>;
154 compatible = "stericsson,u300-syscon-clk";
155 clock-type = <2>; /* Rest */
156 clock-id = <4>;
157 clocks = <&app52>;
158 };
159 fsmc_clk: fsmc_clk@52M {
160 #clock-cells = <0>;
161 compatible = "stericsson,u300-syscon-clk";
162 clock-type = <2>; /* Rest */
163 clock-id = <6>;
164 clocks = <&app52>;
165 };
166 xgam_clk: xgam_clk@52M {
167 #clock-cells = <0>;
168 compatible = "stericsson,u300-syscon-clk";
169 clock-type = <2>; /* Rest */
170 clock-id = <8>;
171 clocks = <&app52>;
172 };
Linus Walleij14c26072013-05-23 11:09:57 +0200173 app26: app_26_clk@26M {
174 #clock-cells = <0>;
175 compatible = "fixed-factor-clock";
176 clock-div = <2>;
177 clock-mult = <1>;
178 clocks = <&app52>;
179 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200180 /* Fast bridge clocks */
181 fast_clk: fast_clk@26M {
182 #clock-cells = <0>;
183 compatible = "stericsson,u300-syscon-clk";
184 clock-type = <1>; /* Fast */
185 clock-id = <0>;
186 clocks = <&app26>;
187 };
188 i2c0_clk: i2c0_clk@26M {
189 #clock-cells = <0>;
190 compatible = "stericsson,u300-syscon-clk";
191 clock-type = <1>; /* Fast */
192 clock-id = <1>;
193 clocks = <&fast_clk>;
194 };
195 i2c1_clk: i2c1_clk@26M {
196 #clock-cells = <0>;
197 compatible = "stericsson,u300-syscon-clk";
198 clock-type = <1>; /* Fast */
199 clock-id = <2>;
200 clocks = <&fast_clk>;
201 };
202 mmc_pclk: mmc_p_clk@26M {
203 #clock-cells = <0>;
204 compatible = "stericsson,u300-syscon-clk";
205 clock-type = <1>; /* Fast */
206 clock-id = <5>;
207 clocks = <&fast_clk>;
208 };
Linus Walleij85fb28b2013-05-23 19:18:28 +0200209 mmc_mclk: mmc_mclk {
210 #clock-cells = <0>;
211 compatible = "stericsson,u300-syscon-mclk";
212 clocks = <&mmc_pclk>;
213 };
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200214 spi_clk: spi_p_clk@26M {
215 #clock-cells = <0>;
216 compatible = "stericsson,u300-syscon-clk";
217 clock-type = <1>; /* Fast */
218 clock-id = <6>;
219 clocks = <&fast_clk>;
220 };
Linus Walleijecf5b392013-04-19 10:51:59 +0200221 };
222
Linus Walleij978577e2013-04-08 11:38:50 +0200223 timer: timer@c0014000 {
224 compatible = "stericsson,u300-apptimer";
225 reg = <0xc0014000 0x1000>;
226 interrupt-parent = <&vica>;
227 interrupts = <24 25 26 27>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200228 clocks = <&apptimer_clk>;
Linus Walleij978577e2013-04-08 11:38:50 +0200229 };
230
231 gpio: gpio@c0016000 {
232 compatible = "stericsson,gpio-coh901";
233 reg = <0xc0016000 0x1000>;
234 interrupt-parent = <&vicb>;
235 interrupts = <0 1 2 18 21 22 23>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200236 clocks = <&gpio_clk>;
Linus Walleij978577e2013-04-08 11:38:50 +0200237 interrupt-names = "gpio0", "gpio1", "gpio2", "gpio3",
238 "gpio4", "gpio5", "gpio6";
239 interrupt-controller;
240 #interrupt-cells = <2>;
241 gpio-controller;
242 #gpio-cells = <2>;
243 };
244
245 pinctrl: pinctrl@c0011000 {
246 compatible = "stericsson,pinctrl-u300";
247 reg = <0xc0011000 0x1000>;
248 };
249
Linus Walleij63a62ec2013-04-19 12:59:59 +0200250 watchdog: watchdog@c0012000 {
251 compatible = "stericsson,coh901327";
252 reg = <0xc0012000 0x1000>;
253 interrupt-parent = <&vicb>;
254 interrupts = <3>;
Linus Walleij14c26072013-05-23 11:09:57 +0200255 clocks = <&clk32>;
Linus Walleij63a62ec2013-04-19 12:59:59 +0200256 };
257
Linus Walleijae87bb82013-04-19 13:22:57 +0200258 rtc: rtc@c0017000 {
259 compatible = "stericsson,coh901331";
260 reg = <0xc0017000 0x1000>;
261 interrupt-parent = <&vicb>;
262 interrupts = <10>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200263 clocks = <&rtc_clk>;
Linus Walleijae87bb82013-04-19 13:22:57 +0200264 };
265
Linus Walleij39738cc2013-04-19 13:44:25 +0200266 dmac: dma-controller@c00020000 {
267 compatible = "stericsson,coh901318";
268 reg = <0xc0020000 0x1000>;
269 interrupt-parent = <&vica>;
270 interrupts = <2>;
271 #dma-cells = <1>;
272 dma-channels = <40>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200273 clocks = <&dmac_clk>;
Linus Walleij39738cc2013-04-19 13:44:25 +0200274 };
275
Linus Walleijd1346362013-04-22 11:00:02 +0200276 /* A NAND flash of 128 MiB */
277 fsmc: flash@40000000 {
278 compatible = "stericsson,fsmc-nand";
279 #address-cells = <1>;
280 #size-cells = <1>;
281 reg = <0x9f800000 0x1000>, /* FSMC Register*/
282 <0x80000000 0x4000>, /* NAND Base DATA */
283 <0x80020000 0x4000>, /* NAND Base ADDR */
284 <0x80010000 0x4000>; /* NAND Base CMD */
285 reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
286 nand-skip-bbtscan;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200287 clocks = <&fsmc_clk>;
Linus Walleijd1346362013-04-22 11:00:02 +0200288
289 partition@0 {
290 label = "boot records";
291 reg = <0x0 0x20000>;
292 };
293 partition@20000 {
294 label = "free";
295 reg = <0x20000 0x7e0000>;
296 };
297 partition@800000 {
298 label = "platform";
299 reg = <0x800000 0xf800000>;
300 };
301 };
302
Linus Walleijc023b8b2013-04-11 15:13:39 +0200303 i2c0: i2c@c0004000 {
304 compatible = "st,ddci2c";
305 reg = <0xc0004000 0x1000>;
306 interrupt-parent = <&vicb>;
307 interrupts = <8>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200308 clocks = <&i2c0_clk>;
Linus Walleijc023b8b2013-04-11 15:13:39 +0200309 #address-cells = <1>;
310 #size-cells = <0>;
Lee Jones8ddd0f62013-07-22 11:52:22 +0100311 ab3100: ab3100@48 {
Linus Walleijecf5b392013-04-19 10:51:59 +0200312 compatible = "stericsson,ab3100";
313 reg = <0x48>;
314 interrupt-parent = <&vica>;
315 interrupts = <0>; /* EXT0 IRQ */
316 ab3100-regulators {
317 compatible = "stericsson,ab3100-regulators";
318 ab3100_ldo_a_reg: ab3100_ldo_a {
Linus Walleijecf5b392013-04-19 10:51:59 +0200319 startup-delay-us = <200>;
320 regulator-always-on;
321 regulator-boot-on;
322 };
323 ab3100_ldo_c_reg: ab3100_ldo_c {
Linus Walleijecf5b392013-04-19 10:51:59 +0200324 startup-delay-us = <200>;
325 };
326 ab3100_ldo_d_reg: ab3100_ldo_d {
Linus Walleijecf5b392013-04-19 10:51:59 +0200327 startup-delay-us = <200>;
328 };
329 ab3100_ldo_e_reg: ab3100_ldo_e {
Linus Walleijecf5b392013-04-19 10:51:59 +0200330 regulator-min-microvolt = <1800000>;
331 regulator-max-microvolt = <1800000>;
332 startup-delay-us = <200>;
333 regulator-always-on;
334 regulator-boot-on;
335 };
336 ab3100_ldo_f_reg: ab3100_ldo_f {
Linus Walleijecf5b392013-04-19 10:51:59 +0200337 regulator-min-microvolt = <2500000>;
338 regulator-max-microvolt = <2500000>;
339 startup-delay-us = <600>;
340 regulator-always-on;
341 regulator-boot-on;
342 };
343 ab3100_ldo_g_reg: ab3100_ldo_g {
Linus Walleijecf5b392013-04-19 10:51:59 +0200344 regulator-min-microvolt = <1500000>;
345 regulator-max-microvolt = <2850000>;
346 startup-delay-us = <400>;
347 };
348 ab3100_ldo_h_reg: ab3100_ldo_h {
Linus Walleijecf5b392013-04-19 10:51:59 +0200349 regulator-min-microvolt = <1200000>;
350 regulator-max-microvolt = <2750000>;
351 startup-delay-us = <200>;
352 };
353 ab3100_ldo_k_reg: ab3100_ldo_k {
Linus Walleijecf5b392013-04-19 10:51:59 +0200354 regulator-min-microvolt = <1800000>;
355 regulator-max-microvolt = <2750000>;
356 startup-delay-us = <200>;
357 };
358 ab3100_ext_reg: ab3100_ext {
Linus Walleijecf5b392013-04-19 10:51:59 +0200359 };
360 ab3100_buck_reg: ab3100_buck {
Linus Walleijecf5b392013-04-19 10:51:59 +0200361 regulator-min-microvolt = <1200000>;
362 regulator-max-microvolt = <1800000>;
363 startup-delay-us = <1000>;
364 regulator-always-on;
365 regulator-boot-on;
366 };
367 };
368 };
Linus Walleijc023b8b2013-04-11 15:13:39 +0200369 };
370
371 i2c1: i2c@c0005000 {
372 compatible = "st,ddci2c";
373 reg = <0xc0005000 0x1000>;
374 interrupt-parent = <&vicb>;
375 interrupts = <9>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200376 clocks = <&i2c1_clk>;
Linus Walleijc023b8b2013-04-11 15:13:39 +0200377 #address-cells = <1>;
378 #size-cells = <0>;
Lee Jones8ddd0f62013-07-22 11:52:22 +0100379 fwcam0: fwcam@10 {
Linus Walleijecf5b392013-04-19 10:51:59 +0200380 reg = <0x10>;
381 };
Lee Jones8ddd0f62013-07-22 11:52:22 +0100382 fwcam1: fwcam@5d {
Linus Walleijecf5b392013-04-19 10:51:59 +0200383 reg = <0x5d>;
384 };
Linus Walleijc023b8b2013-04-11 15:13:39 +0200385 };
386
Linus Walleij978577e2013-04-08 11:38:50 +0200387 amba {
Masahiro Yamada2ef7d5f2016-03-09 13:26:45 +0900388 compatible = "simple-bus";
Linus Walleij978577e2013-04-08 11:38:50 +0200389 #address-cells = <1>;
390 #size-cells = <1>;
391 ranges;
392
393 vica: interrupt-controller@a0001000 {
394 compatible = "arm,versatile-vic";
395 interrupt-controller;
396 #interrupt-cells = <1>;
397 reg = <0xa0001000 0x20>;
398 };
399
400 vicb: interrupt-controller@a0002000 {
401 compatible = "arm,versatile-vic";
402 interrupt-controller;
403 #interrupt-cells = <1>;
404 reg = <0xa0002000 0x20>;
405 };
406
407 uart0: serial@c0013000 {
408 compatible = "arm,pl011", "arm,primecell";
409 reg = <0xc0013000 0x1000>;
410 interrupt-parent = <&vica>;
411 interrupts = <22>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200412 clocks = <&uart0_clk>, <&uart0_clk>;
413 clock-names = "apb_pclk", "uart0_clk";
Linus Walleijefb9bc22013-05-02 10:38:52 +0200414 dmas = <&dmac 17 &dmac 18>;
415 dma-names = "tx", "rx";
Linus Walleij978577e2013-04-08 11:38:50 +0200416 };
417
418 uart1: serial@c0007000 {
419 compatible = "arm,pl011", "arm,primecell";
420 reg = <0xc0007000 0x1000>;
421 interrupt-parent = <&vicb>;
422 interrupts = <20>;
Linus Walleijefb9bc22013-05-02 10:38:52 +0200423 dmas = <&dmac 38 &dmac 39>;
424 dma-names = "tx", "rx";
Linus Walleij978577e2013-04-08 11:38:50 +0200425 };
Linus Walleijba078d12013-04-10 14:34:00 +0200426
427 mmcsd: mmcsd@c0001000 {
428 compatible = "arm,pl18x", "arm,primecell";
429 reg = <0xc0001000 0x1000>;
430 interrupt-parent = <&vicb>;
431 interrupts = <6 7>;
Linus Walleij85fb28b2013-05-23 19:18:28 +0200432 clocks = <&mmc_pclk>, <&mmc_mclk>;
433 clock-names = "apb_pclk", "mclk";
Linus Walleijba078d12013-04-10 14:34:00 +0200434 max-frequency = <24000000>;
435 bus-width = <4>; // SD-card slot
Ulf Hansson2071f852014-03-18 20:37:26 +0100436 cap-mmc-highspeed;
437 cap-sd-highspeed;
Linus Walleijba078d12013-04-10 14:34:00 +0200438 cd-gpios = <&gpio 12 0x4>;
439 cd-inverted;
440 vmmc-supply = <&ab3100_ldo_g_reg>;
Linus Walleijefb9bc22013-05-02 10:38:52 +0200441 dmas = <&dmac 14>;
442 dma-names = "rx";
Linus Walleijba078d12013-04-10 14:34:00 +0200443 };
Linus Walleijcf4af862013-04-19 14:56:46 +0200444
Rob Herring2f967f92018-09-13 13:12:34 -0500445 spi: spi@c0006000 {
Linus Walleijcf4af862013-04-19 14:56:46 +0200446 compatible = "arm,pl022", "arm,primecell";
447 reg = <0xc0006000 0x1000>;
448 interrupt-parent = <&vica>;
449 interrupts = <23>;
Linus Walleijbba5f2c2013-05-23 15:42:33 +0200450 clocks = <&spi_clk>, <&spi_clk>;
Linus Walleijdfc98322014-02-24 13:34:59 +0100451 clock-names = "SSPCLK", "apb_pclk";
Linus Walleijcf4af862013-04-19 14:56:46 +0200452 dmas = <&dmac 27 &dmac 28>;
453 dma-names = "tx", "rx";
454 num-cs = <3>;
455 #address-cells = <1>;
456 #size-cells = <0>;
Linus Walleij20d4af62013-04-21 21:39:46 +0200457 spi-dummy@1 {
458 compatible = "arm,pl022-dummy";
459 reg = <1>;
460 spi-max-frequency = <20000000>;
461 };
Linus Walleijcf4af862013-04-19 14:56:46 +0200462 };
Linus Walleij978577e2013-04-08 11:38:50 +0200463 };
464};