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