Merge branch 'master' of git://www.denx.de/git/u-boot-imx
[oweals/u-boot.git] / arch / arm / dts / rk3036.dtsi
1 /*
2  * SPDX-License-Identifier:     GPL-2.0+
3  */
4
5 #include <dt-bindings/gpio/gpio.h>
6 #include <dt-bindings/interrupt-controller/irq.h>
7 #include <dt-bindings/interrupt-controller/arm-gic.h>
8 #include <dt-bindings/pinctrl/rockchip.h>
9 #include <dt-bindings/clock/rk3036-cru.h>
10 #include "skeleton.dtsi"
11
12 / {
13         compatible = "rockchip,rk3036";
14
15         interrupt-parent = <&gic>;
16
17         aliases {
18                 gpio0 = &gpio0;
19                 gpio1 = &gpio1;
20                 gpio2 = &gpio2;
21                 i2c1 = &i2c1;
22                 serial0 = &uart0;
23                 serial1 = &uart1;
24                 serial2 = &uart2;
25                 mmc0 = &emmc;
26         };
27
28         memory {
29                 device_type = "memory";
30                 reg = <0x60000000 0x40000000>;
31         };
32
33         arm-pmu {
34                 compatible = "arm,cortex-a7-pmu";
35                 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
36                              <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
37                 interrupt-affinity = <&cpu0>, <&cpu1>;
38         };
39
40         cpus {
41                 #address-cells = <1>;
42                 #size-cells = <0>;
43                 enable-method = "rockchip,rk3036-smp";
44
45                 cpu0: cpu@f00 {
46                         device_type = "cpu";
47                         compatible = "arm,cortex-a7";
48                         reg = <0xf00>;
49                         operating-points = <
50                                 /* KHz    uV */
51                                  816000 1000000
52                         >;
53                         #cooling-cells = <2>; /* min followed by max */
54                         clock-latency = <40000>;
55                         clocks = <&cru ARMCLK>;
56                         resets = <&cru SRST_CORE0>;
57                 };
58                 cpu1: cpu@f01 {
59                         device_type = "cpu";
60                         compatible = "arm,cortex-a7";
61                         reg = <0xf01>;
62                         resets = <&cru SRST_CORE1>;
63                 };
64         };
65
66         amba {
67                 compatible = "arm,amba-bus";
68                 #address-cells = <1>;
69                 #size-cells = <1>;
70                 ranges;
71
72                 pdma: pdma@20078000 {
73                         compatible = "arm,pl330", "arm,primecell";
74                         reg = <0x20078000 0x4000>;
75                         arm,pl330-broken-no-flushp;
76                         interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
77                                      <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
78                         #dma-cells = <1>;
79                         clocks = <&cru ACLK_DMAC2>;
80                         clock-names = "apb_pclk";
81                 };
82         };
83
84         xin24m: oscillator {
85                 compatible = "fixed-clock";
86                 clock-frequency = <24000000>;
87                 clock-output-names = "xin24m";
88                 #clock-cells = <0>;
89         };
90
91         timer {
92                 compatible = "arm,armv7-timer";
93                 arm,cpu-registers-not-fw-configured;
94                 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
95                              <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
96                              <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
97                              <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
98                 clock-frequency = <24000000>;
99         };
100
101         cru: clock-controller@20000000 {
102                 compatible = "rockchip,rk3036-cru";
103                 reg = <0x20000000 0x1000>;
104                 rockchip,grf = <&grf>;
105                 #clock-cells = <1>;
106                 #reset-cells = <1>;
107                 assigned-clocks = <&cru PLL_GPLL>;
108                 assigned-clock-rates = <594000000>;
109         };
110
111         uart0: serial@20060000 {
112                 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
113                 reg = <0x20060000 0x100>;
114                 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
115                 reg-shift = <2>;
116                 reg-io-width = <4>;
117                 clock-frequency = <24000000>;
118                 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
119                 clock-names = "baudclk", "apb_pclk";
120                 pinctrl-names = "default";
121                 pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
122         };
123
124         uart1: serial@20064000 {
125                 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
126                 reg = <0x20064000 0x100>;
127                 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
128                 reg-shift = <2>;
129                 reg-io-width = <4>;
130                 clock-frequency = <24000000>;
131                 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
132                 clock-names = "baudclk", "apb_pclk";
133                 pinctrl-names = "default";
134                 pinctrl-0 = <&uart1_xfer>;
135         };
136
137         uart2: serial@20068000 {
138                 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
139                 reg = <0x20068000 0x100>;
140                 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
141                 reg-shift = <2>;
142                 reg-io-width = <4>;
143                 clock-frequency = <24000000>;
144                 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
145                 clock-names = "baudclk", "apb_pclk";
146                 pinctrl-names = "default";
147                 pinctrl-0 = <&uart2_xfer>;
148         };
149
150         pwm0: pwm@20050000 {
151                 compatible = "rockchip,rk2928-pwm";
152                 reg = <0x20050000 0x10>;
153                 #pwm-cells = <3>;
154                 pinctrl-names = "default";
155                 pinctrl-0 = <&pwm0_pin>;
156                 clocks = <&cru PCLK_PWM>;
157                 clock-names = "pwm";
158                 status = "disabled";
159         };
160
161         pwm1: pwm@20050010 {
162                 compatible = "rockchip,rk2928-pwm";
163                 reg = <0x20050010 0x10>;
164                 #pwm-cells = <3>;
165                 pinctrl-names = "default";
166                 pinctrl-0 = <&pwm1_pin>;
167                 clocks = <&cru PCLK_PWM>;
168                 clock-names = "pwm";
169                 status = "disabled";
170         };
171
172         pwm2: pwm@20050020 {
173                 compatible = "rockchip,rk2928-pwm";
174                 reg = <0x20050020 0x10>;
175                 #pwm-cells = <3>;
176                 pinctrl-names = "default";
177                 pinctrl-0 = <&pwm2_pin>;
178                 clocks = <&cru PCLK_PWM>;
179                 clock-names = "pwm";
180                 status = "disabled";
181         };
182
183         pwm3: pwm@20050030 {
184                 compatible = "rockchip,rk2928-pwm";
185                 reg = <0x20050030 0x10>;
186                 #pwm-cells = <2>;
187                 pinctrl-names = "default";
188                 pinctrl-0 = <&pwm3_pin>;
189                 clocks = <&cru PCLK_PWM>;
190                 clock-names = "pwm";
191                 status = "disabled";
192         };
193
194         sram: sram@10080000 {
195                 compatible = "rockchip,rk3036-smp-sram", "mmio-sram";
196                 reg = <0x10080000 0x2000>;
197         };
198
199         gic: interrupt-controller@10139000 {
200                 compatible = "arm,gic-400";
201                 interrupt-controller;
202                 #interrupt-cells = <3>;
203                 #address-cells = <0>;
204
205                 reg = <0x10139000 0x1000>,
206                       <0x1013a000 0x1000>,
207                       <0x1013c000 0x2000>,
208                       <0x1013e000 0x2000>;
209                 interrupts = <GIC_PPI 9 0xf04>;
210         };
211
212         grf: syscon@20008000 {
213                 compatible = "rockchip,rk3036-grf", "syscon";
214                 reg = <0x20008000 0x1000>;
215         };
216
217         usb_otg: usb@10180000 {
218                 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
219                                 "snps,dwc2";
220                 reg = <0x10180000 0x40000>;
221                 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
222                 clocks = <&cru HCLK_OTG0>;
223                 clock-names = "otg";
224                 dr_mode = "otg";
225                 g-np-tx-fifo-size = <16>;
226                 g-rx-fifo-size = <275>;
227                 g-tx-fifo-size = <256 128 128 64 64 32>;
228                 g-use-dma;
229                 status = "disabled";
230         };
231
232         usb_host: usb@101c0000 {
233                 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
234                                 "snps,dwc2";
235                 reg = <0x101c0000 0x40000>;
236                 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
237                 clocks = <&cru HCLK_OTG1>;
238                 clock-names = "otg";
239                 dr_mode = "host";
240                 status = "disabled";
241         };
242
243         emmc: dwmmc@1021c000 {
244                 compatible = "rockchip,rk3288-dw-mshc";
245                 clock-frequency = <37500000>;
246                 clock-freq-min-max = <400000 37500000>;
247                 clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
248                 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
249                 clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
250                 dmas = <&pdma 12>;
251                 dma-names = "rx-tx";
252                 fifo-depth = <0x100>;
253                 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
254                 reg = <0x1021c000 0x4000>;
255                 broken-cd;
256                 bus-width = <8>;
257                 cap-mmc-highspeed;
258                 mmc-ddr-1_8v;
259                 disable-wp;
260                 fifo-mode;
261                 non-removable;
262                 num-slots = <1>;
263                 default-sample-phase = <158>;
264                 pinctrl-names = "default";
265                 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
266         };
267
268         pinctrl: pinctrl {
269                 compatible = "rockchip,rk3036-pinctrl";
270                 rockchip,grf = <&grf>;
271                 #address-cells = <1>;
272                 #size-cells = <1>;
273                 ranges;
274
275                 gpio0: gpio0@2007c000 {
276                         compatible = "rockchip,gpio-bank";
277                         reg = <0x2007c000 0x100>;
278                         interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
279                         clocks = <&cru PCLK_GPIO0>;
280
281                         gpio-controller;
282                         #gpio-cells = <2>;
283
284                         interrupt-controller;
285                         #interrupt-cells = <2>;
286                 };
287
288                 gpio1: gpio1@20080000 {
289                         compatible = "rockchip,gpio-bank";
290                         reg = <0x20080000 0x100>;
291                         interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
292                         clocks = <&cru PCLK_GPIO1>;
293
294                         gpio-controller;
295                         #gpio-cells = <2>;
296
297                         interrupt-controller;
298                         #interrupt-cells = <2>;
299                 };
300
301                 gpio2: gpio2@20084000 {
302                         compatible = "rockchip,gpio-bank";
303                         reg = <0x20084000 0x100>;
304                         interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
305                         clocks = <&cru PCLK_GPIO2>;
306
307                         gpio-controller;
308                         #gpio-cells = <2>;
309
310                         interrupt-controller;
311                         #interrupt-cells = <2>;
312                 };
313
314                 pcfg_pull_up: pcfg-pull-up {
315                         bias-pull-up;
316                 };
317
318                 pcfg_pull_down: pcfg-pull-down {
319                         bias-pull-down;
320                 };
321
322                 pcfg_pull_none: pcfg-pull-none {
323                         bias-disable;
324                 };
325
326                 emmc {
327                         /*
328                          * We run eMMC at max speed; bump up drive strength.
329                          * We also have external pulls, so disable the internal ones.
330                          */
331                         emmc_clk: emmc-clk {
332                                 rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
333                         };
334
335                         emmc_cmd: emmc-cmd {
336                                 rockchip,pins = <2 1 RK_FUNC_2 &pcfg_pull_none>;
337                         };
338
339                         emmc_bus8: emmc-bus8 {
340                                 rockchip,pins = <1 24 RK_FUNC_2 &pcfg_pull_none>,
341                                                 <1 25 RK_FUNC_2 &pcfg_pull_none>,
342                                                 <1 26 RK_FUNC_2 &pcfg_pull_none>,
343                                                 <1 27 RK_FUNC_2 &pcfg_pull_none>;
344                                 /*
345                                                 <1 28 RK_FUNC_2 &pcfg_pull_up>,
346                                                 <1 29 RK_FUNC_2 &pcfg_pull_up>,
347                                                 <1 30 RK_FUNC_2 &pcfg_pull_up>,
348                                                 <1 31 RK_FUNC_2 &pcfg_pull_up>;
349                                                 */
350                         };
351                 };
352
353                 uart0 {
354                         uart0_xfer: uart0-xfer {
355                                 rockchip,pins = <0 16 RK_FUNC_1 &pcfg_pull_none>,
356                                                 <0 17 RK_FUNC_1 &pcfg_pull_none>;
357                         };
358
359                         uart0_cts: uart0-cts {
360                                 rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>;
361                         };
362
363                         uart0_rts: uart0-rts {
364                                 rockchip,pins = <0 19 RK_FUNC_1 &pcfg_pull_none>;
365                         };
366                 };
367
368                 uart1 {
369                         uart1_xfer: uart1-xfer {
370                                 rockchip,pins = <2 22 RK_FUNC_1 &pcfg_pull_none>,
371                                                 <2 23 RK_FUNC_1 &pcfg_pull_none>;
372                         };
373                         /* no rts / cts for uart1 */
374                 };
375
376                 uart2 {
377                         uart2_xfer: uart2-xfer {
378                                 rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_none>,
379                                                 <1 19 RK_FUNC_2 &pcfg_pull_none>;
380                         };
381                         /* no rts / cts for uart2 */
382                 };
383
384                 pwm0 {
385                         pwm0_pin: pwm0-pin {
386                                 rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
387                         };
388                 };
389
390                 pwm1 {
391                         pwm1_pin: pwm1-pin {
392                                 rockchip,pins = <0 1 RK_FUNC_2 &pcfg_pull_none>;
393                         };
394                 };
395
396                 pwm2 {
397                         pwm2_pin: pwm2-pin {
398                                 rockchip,pins = <0 1 2 &pcfg_pull_none>;
399                         };
400                 };
401
402                 pwm3 {
403                         pwm3_pin: pwm3-pin {
404                                 rockchip,pins = <0 27 1 &pcfg_pull_none>;
405                         };
406                 };
407
408                 i2c1 {
409                         i2c1_xfer: i2c1-xfer {
410                                 rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_none>,
411                                                 <0 3 RK_FUNC_1 &pcfg_pull_none>;
412                         };
413                 };
414         };
415
416         i2c1: i2c@20056000 {
417                 compatible = "rockchip,rk3288-i2c";
418                 reg = <0x20056000 0x1000>;
419                 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
420                 #address-cells = <1>;
421                 #size-cells = <0>;
422                 clock-names = "i2c";
423                 clocks = <&cru PCLK_I2C1>;
424                 pinctrl-names = "default";
425                 pinctrl-0 = <&i2c1_xfer>;
426                 status = "disabled";
427         };
428 };