blob: 30d396e8c7629e2dd642d5c56e1eba2ea91efab2 [file] [log] [blame]
Clément Péron012af552019-12-09 19:20:22 +01001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
Clément Péroncabbaed72019-12-14 14:26:42 +01002// Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io>
Icenowy Zhenge54be322018-03-16 22:02:14 +08003
4#include <dt-bindings/interrupt-controller/arm-gic.h>
Icenowy Zheng95beb932018-04-03 21:40:24 +08005#include <dt-bindings/clock/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +08006#include <dt-bindings/clock/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +01007#include <dt-bindings/clock/sun8i-de2.h>
8#include <dt-bindings/clock/sun8i-tcon-top.h>
Icenowy Zheng95beb932018-04-03 21:40:24 +08009#include <dt-bindings/reset/sun50i-h6-ccu.h>
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +080010#include <dt-bindings/reset/sun50i-h6-r-ccu.h>
Jernej Skrabec209065c2018-11-04 19:27:04 +010011#include <dt-bindings/reset/sun8i-de2.h>
Ondrej Jirmand7cfb662019-12-19 09:28:22 -080012#include <dt-bindings/thermal/thermal.h>
Icenowy Zhenge54be322018-03-16 22:02:14 +080013
14/ {
15 interrupt-parent = <&gic>;
16 #address-cells = <1>;
17 #size-cells = <1>;
18
19 cpus {
20 #address-cells = <1>;
21 #size-cells = <0>;
22
23 cpu0: cpu@0 {
Rob Herring31af04c2019-01-14 11:45:33 -060024 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080025 device_type = "cpu";
26 reg = <0>;
27 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020028 clocks = <&ccu CLK_CPUX>;
29 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020030 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080031 };
32
33 cpu1: cpu@1 {
Rob Herring31af04c2019-01-14 11:45:33 -060034 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080035 device_type = "cpu";
36 reg = <1>;
37 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020038 clocks = <&ccu CLK_CPUX>;
39 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020040 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080041 };
42
43 cpu2: cpu@2 {
Rob Herring31af04c2019-01-14 11:45:33 -060044 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080045 device_type = "cpu";
46 reg = <2>;
47 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020048 clocks = <&ccu CLK_CPUX>;
49 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020050 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080051 };
52
53 cpu3: cpu@3 {
Rob Herring31af04c2019-01-14 11:45:33 -060054 compatible = "arm,cortex-a53";
Icenowy Zhenge54be322018-03-16 22:02:14 +080055 device_type = "cpu";
56 reg = <3>;
57 enable-method = "psci";
Yangtao Li8a3a9532020-04-20 15:00:13 +020058 clocks = <&ccu CLK_CPUX>;
59 clock-latency-ns = <244144>; /* 8 32k periods */
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +020060 #cooling-cells = <2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +080061 };
62 };
63
Jernej Skrabec209065c2018-11-04 19:27:04 +010064 de: display-engine {
65 compatible = "allwinner,sun50i-h6-display-engine";
66 allwinner,pipelines = <&mixer0>;
67 status = "disabled";
68 };
69
Icenowy Zhenge54be322018-03-16 22:02:14 +080070 osc24M: osc24M_clk {
71 #clock-cells = <0>;
72 compatible = "fixed-clock";
73 clock-frequency = <24000000>;
74 clock-output-names = "osc24M";
75 };
76
Andre Przywara7aa9b9e2019-11-21 01:18:33 +000077 pmu {
Maxime Ripard4c7eeb92020-02-10 10:56:00 +010078 compatible = "arm,cortex-a53-pmu";
Andre Przywara7aa9b9e2019-11-21 01:18:33 +000079 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
83 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
84 };
85
Icenowy Zhenge54be322018-03-16 22:02:14 +080086 psci {
87 compatible = "arm,psci-0.2";
88 method = "smc";
89 };
90
91 timer {
92 compatible = "arm,armv8-timer";
Samuel Hollanda371b1b2020-08-08 21:18:22 -050093 arm,no-tick-in-suspend;
Icenowy Zhenge54be322018-03-16 22:02:14 +080094 interrupts = <GIC_PPI 13
95 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
96 <GIC_PPI 14
97 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
98 <GIC_PPI 11
99 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
100 <GIC_PPI 10
101 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
102 };
103
104 soc {
105 compatible = "simple-bus";
106 #address-cells = <1>;
107 #size-cells = <1>;
108 ranges;
109
Maxime Ripard275b6312019-04-16 10:57:46 +0200110 bus@1000000 {
Jernej Skrabec209065c2018-11-04 19:27:04 +0100111 compatible = "allwinner,sun50i-h6-de3",
112 "allwinner,sun50i-a64-de2";
113 reg = <0x1000000 0x400000>;
114 allwinner,sram = <&de2_sram 1>;
115 #address-cells = <1>;
116 #size-cells = <1>;
117 ranges = <0 0x1000000 0x400000>;
118
119 display_clocks: clock@0 {
120 compatible = "allwinner,sun50i-h6-de3-clk";
121 reg = <0x0 0x10000>;
122 clocks = <&ccu CLK_DE>,
123 <&ccu CLK_BUS_DE>;
124 clock-names = "mod",
125 "bus";
126 resets = <&ccu RST_BUS_DE>;
127 #clock-cells = <1>;
128 #reset-cells = <1>;
129 };
130
131 mixer0: mixer@100000 {
132 compatible = "allwinner,sun50i-h6-de3-mixer-0";
133 reg = <0x100000 0x100000>;
134 clocks = <&display_clocks CLK_BUS_MIXER0>,
135 <&display_clocks CLK_MIXER0>;
136 clock-names = "bus",
137 "mod";
138 resets = <&display_clocks RST_MIXER0>;
Maxime Ripardb3a0a2f2020-01-12 08:51:46 +0100139 iommus = <&iommu 0>;
Jernej Skrabec209065c2018-11-04 19:27:04 +0100140
141 ports {
142 #address-cells = <1>;
143 #size-cells = <0>;
144
145 mixer0_out: port@1 {
146 reg = <1>;
147
148 mixer0_out_tcon_top_mixer0: endpoint {
149 remote-endpoint = <&tcon_top_mixer0_in_mixer0>;
150 };
151 };
152 };
153 };
154 };
155
Jernej Skrabecb5425702019-01-28 21:55:04 +0100156 video-codec@1c0e000 {
157 compatible = "allwinner,sun50i-h6-video-engine";
158 reg = <0x01c0e000 0x2000>;
159 clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>,
160 <&ccu CLK_MBUS_VE>;
161 clock-names = "ahb", "mod", "ram";
162 resets = <&ccu RST_BUS_VE>;
163 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
164 allwinner,sram = <&ve_sram 1>;
Maxime Ripard62a8ccf2020-06-28 20:08:04 +0200165 iommus = <&iommu 3>;
Jernej Skrabecb5425702019-01-28 21:55:04 +0100166 };
167
Clément Péron4acc24b2019-10-30 16:07:41 +0100168 gpu: gpu@1800000 {
169 compatible = "allwinner,sun50i-h6-mali",
170 "arm,mali-t720";
171 reg = <0x01800000 0x4000>;
172 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
173 <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
174 <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
175 interrupt-names = "job", "mmu", "gpu";
176 clocks = <&ccu CLK_GPU>, <&ccu CLK_BUS_GPU>;
177 clock-names = "core", "bus";
178 resets = <&ccu RST_BUS_GPU>;
179 status = "disabled";
180 };
181
Corentin Labbe709b86f2019-10-23 22:05:10 +0200182 crypto: crypto@1904000 {
183 compatible = "allwinner,sun50i-h6-crypto";
184 reg = <0x01904000 0x1000>;
185 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
186 clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>;
187 clock-names = "bus", "mod", "ram";
188 resets = <&ccu RST_BUS_CE>;
189 };
190
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200191 syscon: syscon@3000000 {
192 compatible = "allwinner,sun50i-h6-system-control",
193 "allwinner,sun50i-a64-system-control";
194 reg = <0x03000000 0x1000>;
195 #address-cells = <1>;
196 #size-cells = <1>;
197 ranges;
198
199 sram_c: sram@28000 {
200 compatible = "mmio-sram";
201 reg = <0x00028000 0x1e000>;
202 #address-cells = <1>;
203 #size-cells = <1>;
204 ranges = <0 0x00028000 0x1e000>;
205
206 de2_sram: sram-section@0 {
207 compatible = "allwinner,sun50i-h6-sram-c",
208 "allwinner,sun50i-a64-sram-c";
209 reg = <0x0000 0x1e000>;
210 };
211 };
Jernej Skrabec24dd8ae2019-01-28 21:55:03 +0100212
213 sram_c1: sram@1a00000 {
214 compatible = "mmio-sram";
215 reg = <0x01a00000 0x200000>;
216 #address-cells = <1>;
217 #size-cells = <1>;
218 ranges = <0 0x01a00000 0x200000>;
219
220 ve_sram: sram-section@0 {
221 compatible = "allwinner,sun50i-h6-sram-c1",
222 "allwinner,sun4i-a10-sram-c1";
223 reg = <0x000000 0x200000>;
224 };
225 };
Icenowy Zhengb2ad66f2018-09-02 09:26:18 +0200226 };
227
Icenowy Zhenge54be322018-03-16 22:02:14 +0800228 ccu: clock@3001000 {
229 compatible = "allwinner,sun50i-h6-ccu";
230 reg = <0x03001000 0x1000>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200231 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800232 clock-names = "hosc", "losc", "iosc";
233 #clock-cells = <1>;
234 #reset-cells = <1>;
235 };
236
Jernej Skrabec91646652019-06-11 23:40:55 +0200237 dma: dma-controller@3002000 {
238 compatible = "allwinner,sun50i-h6-dma";
239 reg = <0x03002000 0x1000>;
240 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
241 clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>;
242 clock-names = "bus", "mbus";
243 dma-channels = <16>;
244 dma-requests = <46>;
245 resets = <&ccu RST_BUS_DMA>;
246 #dma-cells = <1>;
247 };
248
Samuel Hollande7d52602020-02-22 22:08:53 -0600249 msgbox: mailbox@3003000 {
250 compatible = "allwinner,sun50i-h6-msgbox",
251 "allwinner,sun6i-a31-msgbox";
252 reg = <0x03003000 0x1000>;
253 clocks = <&ccu CLK_BUS_MSGBOX>;
254 resets = <&ccu RST_BUS_MSGBOX>;
255 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
256 #mbox-cells = <1>;
257 };
258
Maxime Ripard042c8052019-07-22 16:08:17 +0200259 sid: efuse@3006000 {
Yangtao Lifcf041f2019-04-04 13:01:46 -0400260 compatible = "allwinner,sun50i-h6-sid";
261 reg = <0x03006000 0x400>;
Ondrej Jirmand7cfb662019-12-19 09:28:22 -0800262 #address-cells = <1>;
263 #size-cells = <1>;
264
265 ths_calibration: thermal-sensor-calibration@14 {
266 reg = <0x14 0x8>;
267 };
Ondrej Jirman905434e2020-04-20 15:00:15 +0200268
269 cpu_speed_grade: cpu-speed-grade@1c {
270 reg = <0x1c 0x4>;
271 };
Yangtao Lifcf041f2019-04-04 13:01:46 -0400272 };
273
Samuel Holland12bcaac2021-03-21 23:47:06 -0500274 timer@3009000 {
275 compatible = "allwinner,sun50i-h6-timer",
276 "allwinner,sun8i-a23-timer";
277 reg = <0x03009000 0xa0>;
278 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
279 <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
280 clocks = <&osc24M>;
281 };
282
Clément Péronb6cebb12019-05-23 17:10:48 +0200283 watchdog: watchdog@30090a0 {
284 compatible = "allwinner,sun50i-h6-wdt",
285 "allwinner,sun6i-a31-wdt";
286 reg = <0x030090a0 0x20>;
287 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard9e1975f2019-08-21 16:38:35 +0200288 clocks = <&osc24M>;
Clément Péronb6cebb12019-05-23 17:10:48 +0200289 /* Broken on some H6 boards */
290 status = "disabled";
291 };
292
Jernej Skrabec88432f52019-11-19 18:53:18 +0100293 pwm: pwm@300a000 {
294 compatible = "allwinner,sun50i-h6-pwm";
295 reg = <0x0300a000 0x400>;
296 clocks = <&osc24M>, <&ccu CLK_BUS_PWM>;
297 clock-names = "mod", "bus";
298 resets = <&ccu RST_BUS_PWM>;
299 #pwm-cells = <3>;
300 status = "disabled";
301 };
302
Icenowy Zhenge54be322018-03-16 22:02:14 +0800303 pio: pinctrl@300b000 {
304 compatible = "allwinner,sun50i-h6-pinctrl";
305 reg = <0x0300b000 0x400>;
Samuel Holland189bef22021-01-17 23:50:40 -0600306 interrupt-parent = <&r_intc>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800307 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
308 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
309 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
310 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200311 clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc 0>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800312 clock-names = "apb", "hosc", "losc";
313 gpio-controller;
314 #gpio-cells = <3>;
315 interrupt-controller;
316 #interrupt-cells = <3>;
317
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100318 ext_rgmii_pins: rgmii-pins {
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800319 pins = "PD0", "PD1", "PD2", "PD3", "PD4",
320 "PD5", "PD7", "PD8", "PD9", "PD10",
321 "PD11", "PD12", "PD13", "PD19", "PD20";
322 function = "emac";
323 drive-strength = <40>;
324 };
325
Jernej Skrabec209065c2018-11-04 19:27:04 +0100326 hdmi_pins: hdmi-pins {
327 pins = "PH8", "PH9", "PH10";
328 function = "hdmi";
329 };
330
Bhushan Shah89336e12019-08-16 14:13:09 +0530331 i2c0_pins: i2c0-pins {
332 pins = "PD25", "PD26";
333 function = "i2c0";
334 };
335
336 i2c1_pins: i2c1-pins {
337 pins = "PH5", "PH6";
338 function = "i2c1";
339 };
340
341 i2c2_pins: i2c2-pins {
342 pins = "PD23", "PD24";
343 function = "i2c2";
344 };
345
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800346 mmc0_pins: mmc0-pins {
347 pins = "PF0", "PF1", "PF2", "PF3",
348 "PF4", "PF5";
349 function = "mmc0";
350 drive-strength = <30>;
351 bias-pull-up;
352 };
353
Ondrej Jirman7cf875b2019-04-13 18:54:18 +0200354 /omit-if-no-ref/
355 mmc1_pins: mmc1-pins {
356 pins = "PG0", "PG1", "PG2", "PG3",
357 "PG4", "PG5";
358 function = "mmc1";
359 drive-strength = <30>;
360 bias-pull-up;
361 };
362
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800363 mmc2_pins: mmc2-pins {
364 pins = "PC1", "PC4", "PC5", "PC6",
365 "PC7", "PC8", "PC9", "PC10",
366 "PC11", "PC12", "PC13", "PC14";
367 function = "mmc2";
368 drive-strength = <30>;
369 bias-pull-up;
370 };
371
Andre Przywara30bd02b2020-01-16 23:11:46 +0000372 /omit-if-no-ref/
373 spi0_pins: spi0-pins {
374 pins = "PC0", "PC2", "PC3";
375 function = "spi0";
376 };
377
378 /* pin shared with MMC2-CMD (eMMC) */
379 /omit-if-no-ref/
380 spi0_cs_pin: spi0-cs-pin {
381 pins = "PC5";
382 function = "spi0";
383 };
384
385 /omit-if-no-ref/
386 spi1_pins: spi1-pins {
387 pins = "PH4", "PH5", "PH6";
388 function = "spi1";
389 };
390
391 /omit-if-no-ref/
392 spi1_cs_pin: spi1-cs-pin {
393 pins = "PH3";
394 function = "spi1";
395 };
396
Clément Péronf95b5982019-08-12 12:51:14 +0200397 spdif_tx_pin: spdif-tx-pin {
398 pins = "PH7";
399 function = "spdif";
400 };
401
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100402 uart0_ph_pins: uart0-ph-pins {
Icenowy Zhenge54be322018-03-16 22:02:14 +0800403 pins = "PH0", "PH1";
404 function = "uart0";
405 };
Ondrej Jirmancd380e02019-10-07 22:31:51 +0200406
407 uart1_pins: uart1-pins {
408 pins = "PG6", "PG7";
409 function = "uart1";
410 };
411
412 uart1_rts_cts_pins: uart1-rts-cts-pins {
413 pins = "PG8", "PG9";
414 function = "uart1";
415 };
Icenowy Zhenge54be322018-03-16 22:02:14 +0800416 };
417
Chen-Yu Tsai52d9bcb2019-01-28 00:39:30 +0800418 gic: interrupt-controller@3021000 {
419 compatible = "arm,gic-400";
420 reg = <0x03021000 0x1000>,
421 <0x03022000 0x2000>,
422 <0x03024000 0x2000>,
423 <0x03026000 0x2000>;
424 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
425 interrupt-controller;
426 #interrupt-cells = <3>;
427 };
428
Maxime Ripardb3a0a2f2020-01-12 08:51:46 +0100429 iommu: iommu@30f0000 {
430 compatible = "allwinner,sun50i-h6-iommu";
431 reg = <0x030f0000 0x10000>;
432 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
433 clocks = <&ccu CLK_BUS_IOMMU>;
434 resets = <&ccu RST_BUS_IOMMU>;
435 #iommu-cells = <1>;
436 };
437
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800438 mmc0: mmc@4020000 {
439 compatible = "allwinner,sun50i-h6-mmc",
440 "allwinner,sun50i-a64-mmc";
441 reg = <0x04020000 0x1000>;
442 clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
443 clock-names = "ahb", "mmc";
444 resets = <&ccu RST_BUS_MMC0>;
445 reset-names = "ahb";
446 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
Clément Péron6ba2e452019-04-08 17:27:50 +0200447 pinctrl-names = "default";
448 pinctrl-0 = <&mmc0_pins>;
Andre Przywaracfe6c482021-01-13 15:26:27 +0000449 max-frequency = <150000000>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800450 status = "disabled";
451 #address-cells = <1>;
452 #size-cells = <0>;
453 };
454
455 mmc1: mmc@4021000 {
456 compatible = "allwinner,sun50i-h6-mmc",
457 "allwinner,sun50i-a64-mmc";
458 reg = <0x04021000 0x1000>;
459 clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
460 clock-names = "ahb", "mmc";
461 resets = <&ccu RST_BUS_MMC1>;
462 reset-names = "ahb";
463 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman7cf875b2019-04-13 18:54:18 +0200464 pinctrl-names = "default";
465 pinctrl-0 = <&mmc1_pins>;
Andre Przywaracfe6c482021-01-13 15:26:27 +0000466 max-frequency = <150000000>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800467 status = "disabled";
468 #address-cells = <1>;
469 #size-cells = <0>;
470 };
471
472 mmc2: mmc@4022000 {
473 compatible = "allwinner,sun50i-h6-emmc",
474 "allwinner,sun50i-a64-emmc";
475 reg = <0x04022000 0x1000>;
476 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
477 clock-names = "ahb", "mmc";
478 resets = <&ccu RST_BUS_MMC2>;
479 reset-names = "ahb";
480 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
Clément Péron6ba2e452019-04-08 17:27:50 +0200481 pinctrl-names = "default";
482 pinctrl-0 = <&mmc2_pins>;
Andre Przywaracfe6c482021-01-13 15:26:27 +0000483 max-frequency = <150000000>;
Icenowy Zheng8f54bd152018-07-19 12:28:09 +0800484 status = "disabled";
485 #address-cells = <1>;
486 #size-cells = <0>;
487 };
488
Icenowy Zhenge54be322018-03-16 22:02:14 +0800489 uart0: serial@5000000 {
490 compatible = "snps,dw-apb-uart";
491 reg = <0x05000000 0x400>;
492 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
493 reg-shift = <2>;
494 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800495 clocks = <&ccu CLK_BUS_UART0>;
496 resets = <&ccu RST_BUS_UART0>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800497 status = "disabled";
498 };
499
500 uart1: serial@5000400 {
501 compatible = "snps,dw-apb-uart";
502 reg = <0x05000400 0x400>;
503 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
504 reg-shift = <2>;
505 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800506 clocks = <&ccu CLK_BUS_UART1>;
507 resets = <&ccu RST_BUS_UART1>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800508 status = "disabled";
509 };
510
511 uart2: serial@5000800 {
512 compatible = "snps,dw-apb-uart";
513 reg = <0x05000800 0x400>;
514 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
515 reg-shift = <2>;
516 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800517 clocks = <&ccu CLK_BUS_UART2>;
518 resets = <&ccu RST_BUS_UART2>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800519 status = "disabled";
520 };
521
522 uart3: serial@5000c00 {
523 compatible = "snps,dw-apb-uart";
524 reg = <0x05000c00 0x400>;
525 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
526 reg-shift = <2>;
527 reg-io-width = <4>;
Icenowy Zheng95beb932018-04-03 21:40:24 +0800528 clocks = <&ccu CLK_BUS_UART3>;
529 resets = <&ccu RST_BUS_UART3>;
Icenowy Zhenge54be322018-03-16 22:02:14 +0800530 status = "disabled";
531 };
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800532
Bhushan Shah89336e12019-08-16 14:13:09 +0530533 i2c0: i2c@5002000 {
534 compatible = "allwinner,sun50i-h6-i2c",
535 "allwinner,sun6i-a31-i2c";
536 reg = <0x05002000 0x400>;
537 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
538 clocks = <&ccu CLK_BUS_I2C0>;
539 resets = <&ccu RST_BUS_I2C0>;
540 pinctrl-names = "default";
541 pinctrl-0 = <&i2c0_pins>;
542 status = "disabled";
543 #address-cells = <1>;
544 #size-cells = <0>;
545 };
546
547 i2c1: i2c@5002400 {
548 compatible = "allwinner,sun50i-h6-i2c",
549 "allwinner,sun6i-a31-i2c";
550 reg = <0x05002400 0x400>;
551 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
552 clocks = <&ccu CLK_BUS_I2C1>;
553 resets = <&ccu RST_BUS_I2C1>;
554 pinctrl-names = "default";
555 pinctrl-0 = <&i2c1_pins>;
556 status = "disabled";
557 #address-cells = <1>;
558 #size-cells = <0>;
559 };
560
561 i2c2: i2c@5002800 {
562 compatible = "allwinner,sun50i-h6-i2c",
563 "allwinner,sun6i-a31-i2c";
564 reg = <0x05002800 0x400>;
565 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
566 clocks = <&ccu CLK_BUS_I2C2>;
567 resets = <&ccu RST_BUS_I2C2>;
568 pinctrl-names = "default";
569 pinctrl-0 = <&i2c2_pins>;
570 status = "disabled";
571 #address-cells = <1>;
572 #size-cells = <0>;
573 };
574
Andre Przywara30bd02b2020-01-16 23:11:46 +0000575 spi0: spi@5010000 {
576 compatible = "allwinner,sun50i-h6-spi",
577 "allwinner,sun8i-h3-spi";
578 reg = <0x05010000 0x1000>;
579 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
580 clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
581 clock-names = "ahb", "mod";
582 dmas = <&dma 22>, <&dma 22>;
583 dma-names = "rx", "tx";
584 resets = <&ccu RST_BUS_SPI0>;
585 status = "disabled";
586 #address-cells = <1>;
587 #size-cells = <0>;
588 };
589
590 spi1: spi@5011000 {
591 compatible = "allwinner,sun50i-h6-spi",
592 "allwinner,sun8i-h3-spi";
593 reg = <0x05011000 0x1000>;
594 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
595 clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
596 clock-names = "ahb", "mod";
597 dmas = <&dma 23>, <&dma 23>;
598 dma-names = "rx", "tx";
599 resets = <&ccu RST_BUS_SPI1>;
600 status = "disabled";
601 #address-cells = <1>;
602 #size-cells = <0>;
603 };
604
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800605 emac: ethernet@5020000 {
Icenowy Zheng29ce4e42018-11-15 11:15:51 +0800606 compatible = "allwinner,sun50i-h6-emac",
607 "allwinner,sun50i-a64-emac";
Icenowy Zhengc8ced552018-11-03 20:32:37 +0800608 syscon = <&syscon>;
609 reg = <0x05020000 0x10000>;
610 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
611 interrupt-names = "macirq";
612 resets = <&ccu RST_BUS_EMAC>;
613 reset-names = "stmmaceth";
614 clocks = <&ccu CLK_BUS_EMAC>;
615 clock-names = "stmmaceth";
616 status = "disabled";
617
618 mdio: mdio {
619 compatible = "snps,dwmac-mdio";
620 #address-cells = <1>;
621 #size-cells = <0>;
622 };
623 };
624
Jernej Skrabecb306d9c2020-10-30 15:46:44 +0100625 i2s1: i2s@5091000 {
626 #sound-dai-cells = <0>;
627 compatible = "allwinner,sun50i-h6-i2s";
628 reg = <0x05091000 0x1000>;
629 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
630 clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>;
631 clock-names = "apb", "mod";
632 dmas = <&dma 4>, <&dma 4>;
633 resets = <&ccu RST_BUS_I2S1>;
634 dma-names = "rx", "tx";
635 status = "disabled";
636 };
637
Clément Péronf95b5982019-08-12 12:51:14 +0200638 spdif: spdif@5093000 {
639 #sound-dai-cells = <0>;
640 compatible = "allwinner,sun50i-h6-spdif";
641 reg = <0x05093000 0x400>;
642 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
643 clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
644 clock-names = "apb", "spdif";
645 resets = <&ccu RST_BUS_SPDIF>;
646 dmas = <&dma 2>;
647 dma-names = "tx";
648 pinctrl-names = "default";
649 pinctrl-0 = <&spdif_tx_pin>;
650 status = "disabled";
651 };
652
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800653 usb2otg: usb@5100000 {
654 compatible = "allwinner,sun50i-h6-musb",
655 "allwinner,sun8i-a33-musb";
656 reg = <0x05100000 0x0400>;
657 clocks = <&ccu CLK_BUS_OTG>;
658 resets = <&ccu RST_BUS_OTG>;
659 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
660 interrupt-names = "mc";
661 phys = <&usb2phy 0>;
662 phy-names = "usb";
663 extcon = <&usb2phy 0>;
664 status = "disabled";
665 };
666
667 usb2phy: phy@5100400 {
668 compatible = "allwinner,sun50i-h6-usb-phy";
669 reg = <0x05100400 0x24>,
670 <0x05101800 0x4>,
671 <0x05311800 0x4>;
672 reg-names = "phy_ctrl",
673 "pmu0",
674 "pmu3";
675 clocks = <&ccu CLK_USB_PHY0>,
676 <&ccu CLK_USB_PHY3>;
677 clock-names = "usb0_phy",
678 "usb3_phy";
679 resets = <&ccu RST_USB_PHY0>,
680 <&ccu RST_USB_PHY3>;
681 reset-names = "usb0_reset",
682 "usb3_reset";
683 status = "disabled";
684 #phy-cells = <1>;
685 };
686
687 ehci0: usb@5101000 {
688 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
689 reg = <0x05101000 0x100>;
690 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
691 clocks = <&ccu CLK_BUS_OHCI0>,
692 <&ccu CLK_BUS_EHCI0>,
693 <&ccu CLK_USB_OHCI0>;
694 resets = <&ccu RST_BUS_OHCI0>,
695 <&ccu RST_BUS_EHCI0>;
Andre Przywarada2fb842021-01-13 15:26:24 +0000696 phys = <&usb2phy 0>;
697 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800698 status = "disabled";
699 };
700
701 ohci0: usb@5101400 {
702 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
703 reg = <0x05101400 0x100>;
704 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
705 clocks = <&ccu CLK_BUS_OHCI0>,
706 <&ccu CLK_USB_OHCI0>;
707 resets = <&ccu RST_BUS_OHCI0>;
Andre Przywarada2fb842021-01-13 15:26:24 +0000708 phys = <&usb2phy 0>;
709 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800710 status = "disabled";
711 };
712
Serge Semin2612afd2020-10-20 14:59:54 +0300713 dwc3: usb@5200000 {
Icenowy Zheng0b6f7012019-10-20 15:42:28 +0200714 compatible = "snps,dwc3";
715 reg = <0x05200000 0x10000>;
716 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
717 clocks = <&ccu CLK_BUS_XHCI>,
718 <&ccu CLK_BUS_XHCI>,
719 <&rtc 0>;
720 clock-names = "ref", "bus_early", "suspend";
721 resets = <&ccu RST_BUS_XHCI>;
722 /*
723 * The datasheet of the chip doesn't declare the
724 * peripheral function, and there's no boards known
725 * to have a USB Type-B port routed to the port.
726 * In addition, no one has tested the peripheral
727 * function yet.
728 * So set the dr_mode to "host" in the DTSI file.
729 */
730 dr_mode = "host";
731 phys = <&usb3phy>;
732 phy-names = "usb3-phy";
733 status = "disabled";
734 };
735
736 usb3phy: phy@5210000 {
737 compatible = "allwinner,sun50i-h6-usb3-phy";
738 reg = <0x5210000 0x10000>;
739 clocks = <&ccu CLK_USB_PHY1>;
740 resets = <&ccu RST_USB_PHY1>;
741 #phy-cells = <0>;
742 status = "disabled";
743 };
744
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800745 ehci3: usb@5311000 {
746 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci";
747 reg = <0x05311000 0x100>;
748 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
749 clocks = <&ccu CLK_BUS_OHCI3>,
750 <&ccu CLK_BUS_EHCI3>,
751 <&ccu CLK_USB_OHCI3>;
752 resets = <&ccu RST_BUS_OHCI3>,
753 <&ccu RST_BUS_EHCI3>;
754 phys = <&usb2phy 3>;
Maxime Riparde6064cf2019-10-02 13:26:50 +0200755 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800756 status = "disabled";
757 };
758
759 ohci3: usb@5311400 {
760 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci";
761 reg = <0x05311400 0x100>;
762 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
763 clocks = <&ccu CLK_BUS_OHCI3>,
764 <&ccu CLK_USB_OHCI3>;
765 resets = <&ccu RST_BUS_OHCI3>;
766 phys = <&usb2phy 3>;
Maxime Riparde6064cf2019-10-02 13:26:50 +0200767 phy-names = "usb";
Icenowy Zhengeabb3d42018-10-04 20:28:49 +0800768 status = "disabled";
769 };
770
Jernej Skrabec209065c2018-11-04 19:27:04 +0100771 hdmi: hdmi@6000000 {
772 compatible = "allwinner,sun50i-h6-dw-hdmi";
773 reg = <0x06000000 0x10000>;
774 reg-io-width = <1>;
775 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
776 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>,
777 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>,
778 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>;
779 clock-names = "iahb", "isfr", "tmds", "cec", "hdcp",
780 "hdcp-bus";
781 resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>;
782 reset-names = "ctrl", "hdcp";
783 phys = <&hdmi_phy>;
Maxime Ripardd40113f2019-07-23 10:44:07 +0200784 phy-names = "phy";
Jernej Skrabec209065c2018-11-04 19:27:04 +0100785 pinctrl-names = "default";
786 pinctrl-0 = <&hdmi_pins>;
787 status = "disabled";
788
789 ports {
790 #address-cells = <1>;
791 #size-cells = <0>;
792
793 hdmi_in: port@0 {
794 reg = <0>;
795
796 hdmi_in_tcon_top: endpoint {
797 remote-endpoint = <&tcon_top_hdmi_out_hdmi>;
798 };
799 };
800
801 hdmi_out: port@1 {
802 reg = <1>;
803 };
804 };
805 };
806
807 hdmi_phy: hdmi-phy@6010000 {
808 compatible = "allwinner,sun50i-h6-hdmi-phy";
809 reg = <0x06010000 0x10000>;
810 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>;
811 clock-names = "bus", "mod";
812 resets = <&ccu RST_BUS_HDMI>;
813 reset-names = "phy";
814 #phy-cells = <0>;
815 };
816
817 tcon_top: tcon-top@6510000 {
818 compatible = "allwinner,sun50i-h6-tcon-top";
819 reg = <0x06510000 0x1000>;
820 clocks = <&ccu CLK_BUS_TCON_TOP>,
821 <&ccu CLK_TCON_TV0>;
822 clock-names = "bus",
823 "tcon-tv0";
824 clock-output-names = "tcon-top-tv0";
825 resets = <&ccu RST_BUS_TCON_TOP>;
Jernej Skrabec209065c2018-11-04 19:27:04 +0100826 #clock-cells = <1>;
827
828 ports {
829 #address-cells = <1>;
830 #size-cells = <0>;
831
832 tcon_top_mixer0_in: port@0 {
833 #address-cells = <1>;
834 #size-cells = <0>;
835 reg = <0>;
836
837 tcon_top_mixer0_in_mixer0: endpoint@0 {
838 reg = <0>;
839 remote-endpoint = <&mixer0_out_tcon_top_mixer0>;
840 };
841 };
842
843 tcon_top_mixer0_out: port@1 {
844 #address-cells = <1>;
845 #size-cells = <0>;
846 reg = <1>;
847
848 tcon_top_mixer0_out_tcon_tv: endpoint@2 {
849 reg = <2>;
850 remote-endpoint = <&tcon_tv_in_tcon_top_mixer0>;
851 };
852 };
853
854 tcon_top_hdmi_in: port@4 {
855 #address-cells = <1>;
856 #size-cells = <0>;
857 reg = <4>;
858
859 tcon_top_hdmi_in_tcon_tv: endpoint@0 {
860 reg = <0>;
861 remote-endpoint = <&tcon_tv_out_tcon_top>;
862 };
863 };
864
865 tcon_top_hdmi_out: port@5 {
866 reg = <5>;
867
868 tcon_top_hdmi_out_hdmi: endpoint {
869 remote-endpoint = <&hdmi_in_tcon_top>;
870 };
871 };
872 };
873 };
874
875 tcon_tv: lcd-controller@6515000 {
876 compatible = "allwinner,sun50i-h6-tcon-tv",
877 "allwinner,sun8i-r40-tcon-tv";
878 reg = <0x06515000 0x1000>;
879 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
880 clocks = <&ccu CLK_BUS_TCON_TV0>,
881 <&tcon_top CLK_TCON_TOP_TV0>;
882 clock-names = "ahb",
883 "tcon-ch1";
884 resets = <&ccu RST_BUS_TCON_TV0>;
885 reset-names = "lcd";
886
887 ports {
888 #address-cells = <1>;
889 #size-cells = <0>;
890
891 tcon_tv_in: port@0 {
892 reg = <0>;
893
894 tcon_tv_in_tcon_top_mixer0: endpoint {
895 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv>;
896 };
897 };
898
899 tcon_tv_out: port@1 {
900 #address-cells = <1>;
901 #size-cells = <0>;
902 reg = <1>;
903
904 tcon_tv_out_tcon_top: endpoint@1 {
905 reg = <1>;
906 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv>;
907 };
908 };
909 };
910 };
911
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200912 rtc: rtc@7000000 {
913 compatible = "allwinner,sun50i-h6-rtc";
914 reg = <0x07000000 0x400>;
Samuel Holland189bef22021-01-17 23:50:40 -0600915 interrupt-parent = <&r_intc>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200916 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
917 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
918 clock-output-names = "osc32k", "osc32k-out", "iosc";
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200919 #clock-cells = <1>;
920 };
921
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800922 r_ccu: clock@7010000 {
923 compatible = "allwinner,sun50i-h6-r-ccu";
924 reg = <0x07010000 0x400>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200925 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>,
Icenowy Zheng05bdee32018-05-04 02:38:42 +0800926 <&ccu CLK_PLL_PERIPH0>;
927 clock-names = "hosc", "losc", "iosc", "pll-periph";
928 #clock-cells = <1>;
929 #reset-cells = <1>;
930 };
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800931
Clément Péronae3ceed2019-05-23 17:10:49 +0200932 r_watchdog: watchdog@7020400 {
933 compatible = "allwinner,sun50i-h6-wdt",
934 "allwinner,sun6i-a31-wdt";
935 reg = <0x07020400 0x20>;
936 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
Maxime Ripard9e1975f2019-08-21 16:38:35 +0200937 clocks = <&osc24M>;
Clément Péronae3ceed2019-05-23 17:10:49 +0200938 };
939
Icenowy Zheng1ecefb82018-05-04 02:38:45 +0800940 r_intc: interrupt-controller@7021000 {
Samuel Holland73088df2021-01-17 23:50:39 -0600941 compatible = "allwinner,sun50i-h6-r-intc";
Icenowy Zheng1ecefb82018-05-04 02:38:45 +0800942 interrupt-controller;
Samuel Holland73088df2021-01-17 23:50:39 -0600943 #interrupt-cells = <3>;
Icenowy Zheng1ecefb82018-05-04 02:38:45 +0800944 reg = <0x07021000 0x400>;
945 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
946 };
947
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800948 r_pio: pinctrl@7022000 {
949 compatible = "allwinner,sun50i-h6-r-pinctrl";
950 reg = <0x07022000 0x400>;
Samuel Holland189bef22021-01-17 23:50:40 -0600951 interrupt-parent = <&r_intc>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800952 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
953 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
Ondrej Jirman4cdc12a2019-08-20 17:19:34 +0200954 clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +0800955 clock-names = "apb", "hosc", "losc";
956 gpio-controller;
957 #gpio-cells = <3>;
958 interrupt-controller;
959 #interrupt-cells = <3>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800960
Maxime Ripard54eac67b2019-03-25 14:52:51 +0100961 r_i2c_pins: r-i2c-pins {
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800962 pins = "PL0", "PL1";
963 function = "s_i2c";
964 };
Clément Péron92678112019-06-08 01:10:58 +0200965
966 r_ir_rx_pin: r-ir-rx-pin {
967 pins = "PL9";
968 function = "s_cir_rx";
969 };
Samuel Hollandaaad9002021-01-03 04:00:06 -0600970
971 r_rsb_pins: r-rsb-pins {
972 pins = "PL0", "PL1";
973 function = "s_rsb";
974 };
Clément Péron92678112019-06-08 01:10:58 +0200975 };
976
977 r_ir: ir@7040000 {
978 compatible = "allwinner,sun50i-h6-ir",
979 "allwinner,sun6i-a31-ir";
980 reg = <0x07040000 0x400>;
981 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
982 clocks = <&r_ccu CLK_R_APB1_IR>,
983 <&r_ccu CLK_IR>;
984 clock-names = "apb", "ir";
985 resets = <&r_ccu RST_R_APB1_IR>;
986 pinctrl-names = "default";
987 pinctrl-0 = <&r_ir_rx_pin>;
988 status = "disabled";
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800989 };
990
991 r_i2c: i2c@7081400 {
Bhushan Shah89336e12019-08-16 14:13:09 +0530992 compatible = "allwinner,sun50i-h6-i2c",
993 "allwinner,sun6i-a31-i2c";
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800994 reg = <0x07081400 0x400>;
995 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsaide2b5552018-07-13 00:04:51 +0800996 clocks = <&r_ccu CLK_R_APB2_I2C>;
997 resets = <&r_ccu RST_R_APB2_I2C>;
Icenowy Zhenge9a23362018-05-04 02:38:46 +0800998 pinctrl-names = "default";
999 pinctrl-0 = <&r_i2c_pins>;
1000 status = "disabled";
1001 #address-cells = <1>;
1002 #size-cells = <0>;
Icenowy Zheng71f9bdb2018-05-04 02:38:44 +08001003 };
Ondrej Jirmand7cfb662019-12-19 09:28:22 -08001004
Samuel Hollandaaad9002021-01-03 04:00:06 -06001005 r_rsb: rsb@7083000 {
1006 compatible = "allwinner,sun8i-a23-rsb";
1007 reg = <0x07083000 0x400>;
1008 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
Chen-Yu Tsaifbb9e862021-01-04 16:19:17 +08001009 clocks = <&r_ccu CLK_R_APB2_RSB>;
Samuel Hollandaaad9002021-01-03 04:00:06 -06001010 clock-frequency = <3000000>;
Chen-Yu Tsaifbb9e862021-01-04 16:19:17 +08001011 resets = <&r_ccu RST_R_APB2_RSB>;
Samuel Hollandaaad9002021-01-03 04:00:06 -06001012 pinctrl-names = "default";
1013 pinctrl-0 = <&r_rsb_pins>;
1014 status = "disabled";
1015 #address-cells = <1>;
1016 #size-cells = <0>;
1017 };
1018
Ondrej Jirmand7cfb662019-12-19 09:28:22 -08001019 ths: thermal-sensor@5070400 {
1020 compatible = "allwinner,sun50i-h6-ths";
1021 reg = <0x05070400 0x100>;
1022 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
1023 clocks = <&ccu CLK_BUS_THS>;
1024 clock-names = "bus";
1025 resets = <&ccu RST_BUS_THS>;
1026 nvmem-cells = <&ths_calibration>;
1027 nvmem-cell-names = "calibration";
1028 #thermal-sensor-cells = <1>;
1029 };
1030 };
1031
1032 thermal-zones {
1033 cpu-thermal {
1034 polling-delay-passive = <0>;
1035 polling-delay = <0>;
1036 thermal-sensors = <&ths 0>;
Ondrej Jirman9f8a93b2020-04-20 15:00:14 +02001037
1038 trips {
1039 cpu_alert: cpu-alert {
1040 temperature = <85000>;
1041 hysteresis = <2000>;
1042 type = "passive";
1043 };
1044
1045 cpu-crit {
1046 temperature = <100000>;
1047 hysteresis = <0>;
1048 type = "critical";
1049 };
1050 };
1051
1052 cooling-maps {
1053 map0 {
1054 trip = <&cpu_alert>;
1055 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1056 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1057 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1058 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
1059 };
1060 };
Ondrej Jirmand7cfb662019-12-19 09:28:22 -08001061 };
1062
1063 gpu-thermal {
1064 polling-delay-passive = <0>;
1065 polling-delay = <0>;
1066 thermal-sensors = <&ths 1>;
1067 };
Icenowy Zhenge54be322018-03-16 22:02:14 +08001068 };
1069};