1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2// Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io> 3 4#include <dt-bindings/interrupt-controller/arm-gic.h> 5#include <dt-bindings/clock/sun50i-h6-ccu.h> 6#include <dt-bindings/clock/sun50i-h6-r-ccu.h> 7#include <dt-bindings/clock/sun8i-de2.h> 8#include <dt-bindings/clock/sun8i-tcon-top.h> 9#include <dt-bindings/reset/sun50i-h6-ccu.h> 10#include <dt-bindings/reset/sun50i-h6-r-ccu.h> 11#include <dt-bindings/reset/sun8i-de2.h> 12#include <dt-bindings/thermal/thermal.h> 13 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 { 24 compatible = "arm,cortex-a53"; 25 device_type = "cpu"; 26 reg = <0>; 27 enable-method = "psci"; 28 clocks = <&ccu CLK_CPUX>; 29 clock-latency-ns = <244144>; /* 8 32k periods */ 30 #cooling-cells = <2>; 31 }; 32 33 cpu1: cpu@1 { 34 compatible = "arm,cortex-a53"; 35 device_type = "cpu"; 36 reg = <1>; 37 enable-method = "psci"; 38 clocks = <&ccu CLK_CPUX>; 39 clock-latency-ns = <244144>; /* 8 32k periods */ 40 #cooling-cells = <2>; 41 }; 42 43 cpu2: cpu@2 { 44 compatible = "arm,cortex-a53"; 45 device_type = "cpu"; 46 reg = <2>; 47 enable-method = "psci"; 48 clocks = <&ccu CLK_CPUX>; 49 clock-latency-ns = <244144>; /* 8 32k periods */ 50 #cooling-cells = <2>; 51 }; 52 53 cpu3: cpu@3 { 54 compatible = "arm,cortex-a53"; 55 device_type = "cpu"; 56 reg = <3>; 57 enable-method = "psci"; 58 clocks = <&ccu CLK_CPUX>; 59 clock-latency-ns = <244144>; /* 8 32k periods */ 60 #cooling-cells = <2>; 61 }; 62 }; 63 64 de: display-engine { 65 compatible = "allwinner,sun50i-h6-display-engine"; 66 allwinner,pipelines = <&mixer0>; 67 status = "disabled"; 68 }; 69 70 osc24M: osc24M_clk { 71 #clock-cells = <0>; 72 compatible = "fixed-clock"; 73 clock-frequency = <24000000>; 74 clock-output-names = "osc24M"; 75 }; 76 77 pmu { 78 compatible = "arm,cortex-a53-pmu"; 79 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 86 psci { 87 compatible = "arm,psci-0.2"; 88 method = "smc"; 89 }; 90 91 timer { 92 compatible = "arm,armv8-timer"; 93 arm,no-tick-in-suspend; 94 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 110 bus@1000000 { 111 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_BUS_DE>, 123 <&ccu CLK_DE>; 124 clock-names = "bus", 125 "mod"; 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>; 139 iommus = <&iommu 0>; 140 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 156 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>; 165 iommus = <&iommu 3>; 166 }; 167 168 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 182 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 191 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 }; 212 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 }; 226 }; 227 228 ccu: clock@3001000 { 229 compatible = "allwinner,sun50i-h6-ccu"; 230 reg = <0x03001000 0x1000>; 231 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>; 232 clock-names = "hosc", "losc", "iosc"; 233 #clock-cells = <1>; 234 #reset-cells = <1>; 235 }; 236 237 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 249 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 259 sid: efuse@3006000 { 260 compatible = "allwinner,sun50i-h6-sid"; 261 reg = <0x03006000 0x400>; 262 #address-cells = <1>; 263 #size-cells = <1>; 264 265 ths_calibration: thermal-sensor-calibration@14 { 266 reg = <0x14 0x8>; 267 }; 268 269 cpu_speed_grade: cpu-speed-grade@1c { 270 reg = <0x1c 0x4>; 271 }; 272 }; 273 274 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 283 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>; 288 clocks = <&osc24M>; 289 /* Broken on some H6 boards */ 290 status = "disabled"; 291 }; 292 293 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 303 pio: pinctrl@300b000 { 304 compatible = "allwinner,sun50i-h6-pinctrl"; 305 reg = <0x0300b000 0x400>; 306 interrupt-parent = <&r_intc>; 307 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>; 311 clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc 0>; 312 clock-names = "apb", "hosc", "losc"; 313 gpio-controller; 314 #gpio-cells = <3>; 315 interrupt-controller; 316 #interrupt-cells = <3>; 317 318 ext_rgmii_pins: rgmii-pins { 319 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 326 hdmi_pins: hdmi-pins { 327 pins = "PH8", "PH9", "PH10"; 328 function = "hdmi"; 329 }; 330 331 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 346 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 354 /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 363 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 372 /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 397 spdif_tx_pin: spdif-tx-pin { 398 pins = "PH7"; 399 function = "spdif"; 400 }; 401 402 uart0_ph_pins: uart0-ph-pins { 403 pins = "PH0", "PH1"; 404 function = "uart0"; 405 }; 406 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 }; 416 }; 417 418 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 429 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 438 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>; 447 pinctrl-names = "default"; 448 pinctrl-0 = <&mmc0_pins>; 449 max-frequency = <150000000>; 450 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>; 464 pinctrl-names = "default"; 465 pinctrl-0 = <&mmc1_pins>; 466 max-frequency = <150000000>; 467 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>; 481 pinctrl-names = "default"; 482 pinctrl-0 = <&mmc2_pins>; 483 max-frequency = <150000000>; 484 status = "disabled"; 485 #address-cells = <1>; 486 #size-cells = <0>; 487 }; 488 489 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>; 495 clocks = <&ccu CLK_BUS_UART0>; 496 resets = <&ccu RST_BUS_UART0>; 497 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>; 506 clocks = <&ccu CLK_BUS_UART1>; 507 resets = <&ccu RST_BUS_UART1>; 508 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>; 517 clocks = <&ccu CLK_BUS_UART2>; 518 resets = <&ccu RST_BUS_UART2>; 519 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>; 528 clocks = <&ccu CLK_BUS_UART3>; 529 resets = <&ccu RST_BUS_UART3>; 530 status = "disabled"; 531 }; 532 533 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 575 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 605 emac: ethernet@5020000 { 606 compatible = "allwinner,sun50i-h6-emac", 607 "allwinner,sun50i-a64-emac"; 608 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 625 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 638 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 653 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>; 696 phys = <&usb2phy 0>; 697 phy-names = "usb"; 698 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>; 708 phys = <&usb2phy 0>; 709 phy-names = "usb"; 710 status = "disabled"; 711 }; 712 713 dwc3: usb@5200000 { 714 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 745 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>; 755 phy-names = "usb"; 756 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>; 767 phy-names = "usb"; 768 status = "disabled"; 769 }; 770 771 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>; 784 phy-names = "phy"; 785 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>; 826 #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 912 rtc: rtc@7000000 { 913 compatible = "allwinner,sun50i-h6-rtc"; 914 reg = <0x07000000 0x400>; 915 interrupt-parent = <&r_intc>; 916 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>, 917 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; 918 clock-output-names = "osc32k", "osc32k-out", "iosc"; 919 #clock-cells = <1>; 920 }; 921 922 r_ccu: clock@7010000 { 923 compatible = "allwinner,sun50i-h6-r-ccu"; 924 reg = <0x07010000 0x400>; 925 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, 926 <&ccu CLK_PLL_PERIPH0>; 927 clock-names = "hosc", "losc", "iosc", "pll-periph"; 928 #clock-cells = <1>; 929 #reset-cells = <1>; 930 }; 931 932 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>; 937 clocks = <&osc24M>; 938 }; 939 940 r_intc: interrupt-controller@7021000 { 941 compatible = "allwinner,sun50i-h6-r-intc"; 942 interrupt-controller; 943 #interrupt-cells = <3>; 944 reg = <0x07021000 0x400>; 945 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 946 }; 947 948 r_pio: pinctrl@7022000 { 949 compatible = "allwinner,sun50i-h6-r-pinctrl"; 950 reg = <0x07022000 0x400>; 951 interrupt-parent = <&r_intc>; 952 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>, 953 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; 954 clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>; 955 clock-names = "apb", "hosc", "losc"; 956 gpio-controller; 957 #gpio-cells = <3>; 958 interrupt-controller; 959 #interrupt-cells = <3>; 960 961 r_i2c_pins: r-i2c-pins { 962 pins = "PL0", "PL1"; 963 function = "s_i2c"; 964 }; 965 966 r_ir_rx_pin: r-ir-rx-pin { 967 pins = "PL9"; 968 function = "s_cir_rx"; 969 }; 970 971 r_rsb_pins: r-rsb-pins { 972 pins = "PL0", "PL1"; 973 function = "s_rsb"; 974 }; 975 }; 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"; 989 }; 990 991 r_i2c: i2c@7081400 { 992 compatible = "allwinner,sun50i-h6-i2c", 993 "allwinner,sun6i-a31-i2c"; 994 reg = <0x07081400 0x400>; 995 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; 996 clocks = <&r_ccu CLK_R_APB2_I2C>; 997 resets = <&r_ccu RST_R_APB2_I2C>; 998 pinctrl-names = "default"; 999 pinctrl-0 = <&r_i2c_pins>; 1000 status = "disabled"; 1001 #address-cells = <1>; 1002 #size-cells = <0>; 1003 }; 1004 1005 r_rsb: rsb@7083000 { 1006 compatible = "allwinner,sun8i-a23-rsb"; 1007 reg = <0x07083000 0x400>; 1008 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; 1009 clocks = <&r_ccu CLK_R_APB2_RSB>; 1010 clock-frequency = <3000000>; 1011 resets = <&r_ccu RST_R_APB2_RSB>; 1012 pinctrl-names = "default"; 1013 pinctrl-0 = <&r_rsb_pins>; 1014 status = "disabled"; 1015 #address-cells = <1>; 1016 #size-cells = <0>; 1017 }; 1018 1019 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>; 1037 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 }; 1061 }; 1062 1063 gpu-thermal { 1064 polling-delay-passive = <0>; 1065 polling-delay = <0>; 1066 thermal-sensors = <&ths 1>; 1067 }; 1068 }; 1069}; 1070