1// SPDX-License-Identifier: (GPL-2.0+ or MIT) 2/* 3 * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.io> 4 */ 5 6#include <dt-bindings/interrupt-controller/arm-gic.h> 7#include <dt-bindings/clock/sun50i-h6-ccu.h> 8#include <dt-bindings/clock/sun50i-h6-r-ccu.h> 9#include <dt-bindings/clock/sun8i-de2.h> 10#include <dt-bindings/clock/sun8i-tcon-top.h> 11#include <dt-bindings/reset/sun50i-h6-ccu.h> 12#include <dt-bindings/reset/sun50i-h6-r-ccu.h> 13#include <dt-bindings/reset/sun8i-de2.h> 14 15/ { 16 interrupt-parent = <&gic>; 17 #address-cells = <1>; 18 #size-cells = <1>; 19 20 cpus { 21 #address-cells = <1>; 22 #size-cells = <0>; 23 24 cpu0: cpu@0 { 25 compatible = "arm,cortex-a53"; 26 device_type = "cpu"; 27 reg = <0>; 28 enable-method = "psci"; 29 }; 30 31 cpu1: cpu@1 { 32 compatible = "arm,cortex-a53"; 33 device_type = "cpu"; 34 reg = <1>; 35 enable-method = "psci"; 36 }; 37 38 cpu2: cpu@2 { 39 compatible = "arm,cortex-a53"; 40 device_type = "cpu"; 41 reg = <2>; 42 enable-method = "psci"; 43 }; 44 45 cpu3: cpu@3 { 46 compatible = "arm,cortex-a53"; 47 device_type = "cpu"; 48 reg = <3>; 49 enable-method = "psci"; 50 }; 51 }; 52 53 de: display-engine { 54 compatible = "allwinner,sun50i-h6-display-engine"; 55 allwinner,pipelines = <&mixer0>; 56 status = "disabled"; 57 }; 58 59 osc24M: osc24M_clk { 60 #clock-cells = <0>; 61 compatible = "fixed-clock"; 62 clock-frequency = <24000000>; 63 clock-output-names = "osc24M"; 64 }; 65 66 ext_osc32k: ext_osc32k_clk { 67 #clock-cells = <0>; 68 compatible = "fixed-clock"; 69 clock-frequency = <32768>; 70 clock-output-names = "ext_osc32k"; 71 }; 72 73 psci { 74 compatible = "arm,psci-0.2"; 75 method = "smc"; 76 }; 77 78 timer { 79 compatible = "arm,armv8-timer"; 80 interrupts = <GIC_PPI 13 81 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 82 <GIC_PPI 14 83 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 84 <GIC_PPI 11 85 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 86 <GIC_PPI 10 87 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 88 }; 89 90 soc { 91 compatible = "simple-bus"; 92 #address-cells = <1>; 93 #size-cells = <1>; 94 ranges; 95 96 bus@1000000 { 97 compatible = "allwinner,sun50i-h6-de3", 98 "allwinner,sun50i-a64-de2"; 99 reg = <0x1000000 0x400000>; 100 allwinner,sram = <&de2_sram 1>; 101 #address-cells = <1>; 102 #size-cells = <1>; 103 ranges = <0 0x1000000 0x400000>; 104 105 display_clocks: clock@0 { 106 compatible = "allwinner,sun50i-h6-de3-clk"; 107 reg = <0x0 0x10000>; 108 clocks = <&ccu CLK_DE>, 109 <&ccu CLK_BUS_DE>; 110 clock-names = "mod", 111 "bus"; 112 resets = <&ccu RST_BUS_DE>; 113 #clock-cells = <1>; 114 #reset-cells = <1>; 115 }; 116 117 mixer0: mixer@100000 { 118 compatible = "allwinner,sun50i-h6-de3-mixer-0"; 119 reg = <0x100000 0x100000>; 120 clocks = <&display_clocks CLK_BUS_MIXER0>, 121 <&display_clocks CLK_MIXER0>; 122 clock-names = "bus", 123 "mod"; 124 resets = <&display_clocks RST_MIXER0>; 125 126 ports { 127 #address-cells = <1>; 128 #size-cells = <0>; 129 130 mixer0_out: port@1 { 131 reg = <1>; 132 133 mixer0_out_tcon_top_mixer0: endpoint { 134 remote-endpoint = <&tcon_top_mixer0_in_mixer0>; 135 }; 136 }; 137 }; 138 }; 139 }; 140 141 video-codec@1c0e000 { 142 compatible = "allwinner,sun50i-h6-video-engine"; 143 reg = <0x01c0e000 0x2000>; 144 clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>, 145 <&ccu CLK_MBUS_VE>; 146 clock-names = "ahb", "mod", "ram"; 147 resets = <&ccu RST_BUS_VE>; 148 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; 149 allwinner,sram = <&ve_sram 1>; 150 }; 151 152 syscon: syscon@3000000 { 153 compatible = "allwinner,sun50i-h6-system-control", 154 "allwinner,sun50i-a64-system-control"; 155 reg = <0x03000000 0x1000>; 156 #address-cells = <1>; 157 #size-cells = <1>; 158 ranges; 159 160 sram_c: sram@28000 { 161 compatible = "mmio-sram"; 162 reg = <0x00028000 0x1e000>; 163 #address-cells = <1>; 164 #size-cells = <1>; 165 ranges = <0 0x00028000 0x1e000>; 166 167 de2_sram: sram-section@0 { 168 compatible = "allwinner,sun50i-h6-sram-c", 169 "allwinner,sun50i-a64-sram-c"; 170 reg = <0x0000 0x1e000>; 171 }; 172 }; 173 174 sram_c1: sram@1a00000 { 175 compatible = "mmio-sram"; 176 reg = <0x01a00000 0x200000>; 177 #address-cells = <1>; 178 #size-cells = <1>; 179 ranges = <0 0x01a00000 0x200000>; 180 181 ve_sram: sram-section@0 { 182 compatible = "allwinner,sun50i-h6-sram-c1", 183 "allwinner,sun4i-a10-sram-c1"; 184 reg = <0x000000 0x200000>; 185 }; 186 }; 187 }; 188 189 ccu: clock@3001000 { 190 compatible = "allwinner,sun50i-h6-ccu"; 191 reg = <0x03001000 0x1000>; 192 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>; 193 clock-names = "hosc", "losc", "iosc"; 194 #clock-cells = <1>; 195 #reset-cells = <1>; 196 }; 197 198 dma: dma-controller@3002000 { 199 compatible = "allwinner,sun50i-h6-dma"; 200 reg = <0x03002000 0x1000>; 201 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>; 202 clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>; 203 clock-names = "bus", "mbus"; 204 dma-channels = <16>; 205 dma-requests = <46>; 206 resets = <&ccu RST_BUS_DMA>; 207 #dma-cells = <1>; 208 }; 209 210 sid: efuse@3006000 { 211 compatible = "allwinner,sun50i-h6-sid"; 212 reg = <0x03006000 0x400>; 213 }; 214 215 watchdog: watchdog@30090a0 { 216 compatible = "allwinner,sun50i-h6-wdt", 217 "allwinner,sun6i-a31-wdt"; 218 reg = <0x030090a0 0x20>; 219 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 220 clocks = <&osc24M>; 221 /* Broken on some H6 boards */ 222 status = "disabled"; 223 }; 224 225 pio: pinctrl@300b000 { 226 compatible = "allwinner,sun50i-h6-pinctrl"; 227 reg = <0x0300b000 0x400>; 228 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>, 229 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, 230 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>, 231 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>; 232 clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc 0>; 233 clock-names = "apb", "hosc", "losc"; 234 gpio-controller; 235 #gpio-cells = <3>; 236 interrupt-controller; 237 #interrupt-cells = <3>; 238 239 ext_rgmii_pins: rgmii-pins { 240 pins = "PD0", "PD1", "PD2", "PD3", "PD4", 241 "PD5", "PD7", "PD8", "PD9", "PD10", 242 "PD11", "PD12", "PD13", "PD19", "PD20"; 243 function = "emac"; 244 drive-strength = <40>; 245 }; 246 247 hdmi_pins: hdmi-pins { 248 pins = "PH8", "PH9", "PH10"; 249 function = "hdmi"; 250 }; 251 252 i2c0_pins: i2c0-pins { 253 pins = "PD25", "PD26"; 254 function = "i2c0"; 255 }; 256 257 i2c1_pins: i2c1-pins { 258 pins = "PH5", "PH6"; 259 function = "i2c1"; 260 }; 261 262 i2c2_pins: i2c2-pins { 263 pins = "PD23", "PD24"; 264 function = "i2c2"; 265 }; 266 267 mmc0_pins: mmc0-pins { 268 pins = "PF0", "PF1", "PF2", "PF3", 269 "PF4", "PF5"; 270 function = "mmc0"; 271 drive-strength = <30>; 272 bias-pull-up; 273 }; 274 275 /omit-if-no-ref/ 276 mmc1_pins: mmc1-pins { 277 pins = "PG0", "PG1", "PG2", "PG3", 278 "PG4", "PG5"; 279 function = "mmc1"; 280 drive-strength = <30>; 281 bias-pull-up; 282 }; 283 284 mmc2_pins: mmc2-pins { 285 pins = "PC1", "PC4", "PC5", "PC6", 286 "PC7", "PC8", "PC9", "PC10", 287 "PC11", "PC12", "PC13", "PC14"; 288 function = "mmc2"; 289 drive-strength = <30>; 290 bias-pull-up; 291 }; 292 293 spdif_tx_pin: spdif-tx-pin { 294 pins = "PH7"; 295 function = "spdif"; 296 }; 297 298 uart0_ph_pins: uart0-ph-pins { 299 pins = "PH0", "PH1"; 300 function = "uart0"; 301 }; 302 }; 303 304 gic: interrupt-controller@3021000 { 305 compatible = "arm,gic-400"; 306 reg = <0x03021000 0x1000>, 307 <0x03022000 0x2000>, 308 <0x03024000 0x2000>, 309 <0x03026000 0x2000>; 310 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 311 interrupt-controller; 312 #interrupt-cells = <3>; 313 }; 314 315 mmc0: mmc@4020000 { 316 compatible = "allwinner,sun50i-h6-mmc", 317 "allwinner,sun50i-a64-mmc"; 318 reg = <0x04020000 0x1000>; 319 clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>; 320 clock-names = "ahb", "mmc"; 321 resets = <&ccu RST_BUS_MMC0>; 322 reset-names = "ahb"; 323 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; 324 pinctrl-names = "default"; 325 pinctrl-0 = <&mmc0_pins>; 326 status = "disabled"; 327 #address-cells = <1>; 328 #size-cells = <0>; 329 }; 330 331 mmc1: mmc@4021000 { 332 compatible = "allwinner,sun50i-h6-mmc", 333 "allwinner,sun50i-a64-mmc"; 334 reg = <0x04021000 0x1000>; 335 clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>; 336 clock-names = "ahb", "mmc"; 337 resets = <&ccu RST_BUS_MMC1>; 338 reset-names = "ahb"; 339 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 340 pinctrl-names = "default"; 341 pinctrl-0 = <&mmc1_pins>; 342 status = "disabled"; 343 #address-cells = <1>; 344 #size-cells = <0>; 345 }; 346 347 mmc2: mmc@4022000 { 348 compatible = "allwinner,sun50i-h6-emmc", 349 "allwinner,sun50i-a64-emmc"; 350 reg = <0x04022000 0x1000>; 351 clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>; 352 clock-names = "ahb", "mmc"; 353 resets = <&ccu RST_BUS_MMC2>; 354 reset-names = "ahb"; 355 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 356 pinctrl-names = "default"; 357 pinctrl-0 = <&mmc2_pins>; 358 status = "disabled"; 359 #address-cells = <1>; 360 #size-cells = <0>; 361 }; 362 363 uart0: serial@5000000 { 364 compatible = "snps,dw-apb-uart"; 365 reg = <0x05000000 0x400>; 366 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 367 reg-shift = <2>; 368 reg-io-width = <4>; 369 clocks = <&ccu CLK_BUS_UART0>; 370 resets = <&ccu RST_BUS_UART0>; 371 status = "disabled"; 372 }; 373 374 uart1: serial@5000400 { 375 compatible = "snps,dw-apb-uart"; 376 reg = <0x05000400 0x400>; 377 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 378 reg-shift = <2>; 379 reg-io-width = <4>; 380 clocks = <&ccu CLK_BUS_UART1>; 381 resets = <&ccu RST_BUS_UART1>; 382 status = "disabled"; 383 }; 384 385 uart2: serial@5000800 { 386 compatible = "snps,dw-apb-uart"; 387 reg = <0x05000800 0x400>; 388 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 389 reg-shift = <2>; 390 reg-io-width = <4>; 391 clocks = <&ccu CLK_BUS_UART2>; 392 resets = <&ccu RST_BUS_UART2>; 393 status = "disabled"; 394 }; 395 396 uart3: serial@5000c00 { 397 compatible = "snps,dw-apb-uart"; 398 reg = <0x05000c00 0x400>; 399 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 400 reg-shift = <2>; 401 reg-io-width = <4>; 402 clocks = <&ccu CLK_BUS_UART3>; 403 resets = <&ccu RST_BUS_UART3>; 404 status = "disabled"; 405 }; 406 407 i2c0: i2c@5002000 { 408 compatible = "allwinner,sun50i-h6-i2c", 409 "allwinner,sun6i-a31-i2c"; 410 reg = <0x05002000 0x400>; 411 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 412 clocks = <&ccu CLK_BUS_I2C0>; 413 resets = <&ccu RST_BUS_I2C0>; 414 pinctrl-names = "default"; 415 pinctrl-0 = <&i2c0_pins>; 416 status = "disabled"; 417 #address-cells = <1>; 418 #size-cells = <0>; 419 }; 420 421 i2c1: i2c@5002400 { 422 compatible = "allwinner,sun50i-h6-i2c", 423 "allwinner,sun6i-a31-i2c"; 424 reg = <0x05002400 0x400>; 425 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 426 clocks = <&ccu CLK_BUS_I2C1>; 427 resets = <&ccu RST_BUS_I2C1>; 428 pinctrl-names = "default"; 429 pinctrl-0 = <&i2c1_pins>; 430 status = "disabled"; 431 #address-cells = <1>; 432 #size-cells = <0>; 433 }; 434 435 i2c2: i2c@5002800 { 436 compatible = "allwinner,sun50i-h6-i2c", 437 "allwinner,sun6i-a31-i2c"; 438 reg = <0x05002800 0x400>; 439 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 440 clocks = <&ccu CLK_BUS_I2C2>; 441 resets = <&ccu RST_BUS_I2C2>; 442 pinctrl-names = "default"; 443 pinctrl-0 = <&i2c2_pins>; 444 status = "disabled"; 445 #address-cells = <1>; 446 #size-cells = <0>; 447 }; 448 449 emac: ethernet@5020000 { 450 compatible = "allwinner,sun50i-h6-emac", 451 "allwinner,sun50i-a64-emac"; 452 syscon = <&syscon>; 453 reg = <0x05020000 0x10000>; 454 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 455 interrupt-names = "macirq"; 456 resets = <&ccu RST_BUS_EMAC>; 457 reset-names = "stmmaceth"; 458 clocks = <&ccu CLK_BUS_EMAC>; 459 clock-names = "stmmaceth"; 460 status = "disabled"; 461 462 mdio: mdio { 463 compatible = "snps,dwmac-mdio"; 464 #address-cells = <1>; 465 #size-cells = <0>; 466 }; 467 }; 468 469 spdif: spdif@5093000 { 470 #sound-dai-cells = <0>; 471 compatible = "allwinner,sun50i-h6-spdif"; 472 reg = <0x05093000 0x400>; 473 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 474 clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>; 475 clock-names = "apb", "spdif"; 476 resets = <&ccu RST_BUS_SPDIF>; 477 dmas = <&dma 2>; 478 dma-names = "tx"; 479 pinctrl-names = "default"; 480 pinctrl-0 = <&spdif_tx_pin>; 481 status = "disabled"; 482 }; 483 484 usb2otg: usb@5100000 { 485 compatible = "allwinner,sun50i-h6-musb", 486 "allwinner,sun8i-a33-musb"; 487 reg = <0x05100000 0x0400>; 488 clocks = <&ccu CLK_BUS_OTG>; 489 resets = <&ccu RST_BUS_OTG>; 490 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 491 interrupt-names = "mc"; 492 phys = <&usb2phy 0>; 493 phy-names = "usb"; 494 extcon = <&usb2phy 0>; 495 status = "disabled"; 496 }; 497 498 usb2phy: phy@5100400 { 499 compatible = "allwinner,sun50i-h6-usb-phy"; 500 reg = <0x05100400 0x24>, 501 <0x05101800 0x4>, 502 <0x05311800 0x4>; 503 reg-names = "phy_ctrl", 504 "pmu0", 505 "pmu3"; 506 clocks = <&ccu CLK_USB_PHY0>, 507 <&ccu CLK_USB_PHY3>; 508 clock-names = "usb0_phy", 509 "usb3_phy"; 510 resets = <&ccu RST_USB_PHY0>, 511 <&ccu RST_USB_PHY3>; 512 reset-names = "usb0_reset", 513 "usb3_reset"; 514 status = "disabled"; 515 #phy-cells = <1>; 516 }; 517 518 ehci0: usb@5101000 { 519 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci"; 520 reg = <0x05101000 0x100>; 521 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; 522 clocks = <&ccu CLK_BUS_OHCI0>, 523 <&ccu CLK_BUS_EHCI0>, 524 <&ccu CLK_USB_OHCI0>; 525 resets = <&ccu RST_BUS_OHCI0>, 526 <&ccu RST_BUS_EHCI0>; 527 status = "disabled"; 528 }; 529 530 ohci0: usb@5101400 { 531 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci"; 532 reg = <0x05101400 0x100>; 533 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 534 clocks = <&ccu CLK_BUS_OHCI0>, 535 <&ccu CLK_USB_OHCI0>; 536 resets = <&ccu RST_BUS_OHCI0>; 537 status = "disabled"; 538 }; 539 540 ehci3: usb@5311000 { 541 compatible = "allwinner,sun50i-h6-ehci", "generic-ehci"; 542 reg = <0x05311000 0x100>; 543 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 544 clocks = <&ccu CLK_BUS_OHCI3>, 545 <&ccu CLK_BUS_EHCI3>, 546 <&ccu CLK_USB_OHCI3>; 547 resets = <&ccu RST_BUS_OHCI3>, 548 <&ccu RST_BUS_EHCI3>; 549 phys = <&usb2phy 3>; 550 phy-names = "usb"; 551 status = "disabled"; 552 }; 553 554 ohci3: usb@5311400 { 555 compatible = "allwinner,sun50i-h6-ohci", "generic-ohci"; 556 reg = <0x05311400 0x100>; 557 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 558 clocks = <&ccu CLK_BUS_OHCI3>, 559 <&ccu CLK_USB_OHCI3>; 560 resets = <&ccu RST_BUS_OHCI3>; 561 phys = <&usb2phy 3>; 562 phy-names = "usb"; 563 status = "disabled"; 564 }; 565 566 hdmi: hdmi@6000000 { 567 compatible = "allwinner,sun50i-h6-dw-hdmi"; 568 reg = <0x06000000 0x10000>; 569 reg-io-width = <1>; 570 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; 571 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>, 572 <&ccu CLK_HDMI>, <&ccu CLK_HDMI_CEC>, 573 <&ccu CLK_HDCP>, <&ccu CLK_BUS_HDCP>; 574 clock-names = "iahb", "isfr", "tmds", "cec", "hdcp", 575 "hdcp-bus"; 576 resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDCP>; 577 reset-names = "ctrl", "hdcp"; 578 phys = <&hdmi_phy>; 579 phy-names = "phy"; 580 pinctrl-names = "default"; 581 pinctrl-0 = <&hdmi_pins>; 582 status = "disabled"; 583 584 ports { 585 #address-cells = <1>; 586 #size-cells = <0>; 587 588 hdmi_in: port@0 { 589 reg = <0>; 590 591 hdmi_in_tcon_top: endpoint { 592 remote-endpoint = <&tcon_top_hdmi_out_hdmi>; 593 }; 594 }; 595 596 hdmi_out: port@1 { 597 reg = <1>; 598 }; 599 }; 600 }; 601 602 hdmi_phy: hdmi-phy@6010000 { 603 compatible = "allwinner,sun50i-h6-hdmi-phy"; 604 reg = <0x06010000 0x10000>; 605 clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_SLOW>; 606 clock-names = "bus", "mod"; 607 resets = <&ccu RST_BUS_HDMI>; 608 reset-names = "phy"; 609 #phy-cells = <0>; 610 }; 611 612 tcon_top: tcon-top@6510000 { 613 compatible = "allwinner,sun50i-h6-tcon-top"; 614 reg = <0x06510000 0x1000>; 615 clocks = <&ccu CLK_BUS_TCON_TOP>, 616 <&ccu CLK_TCON_TV0>; 617 clock-names = "bus", 618 "tcon-tv0"; 619 clock-output-names = "tcon-top-tv0"; 620 resets = <&ccu RST_BUS_TCON_TOP>; 621 reset-names = "rst"; 622 #clock-cells = <1>; 623 624 ports { 625 #address-cells = <1>; 626 #size-cells = <0>; 627 628 tcon_top_mixer0_in: port@0 { 629 #address-cells = <1>; 630 #size-cells = <0>; 631 reg = <0>; 632 633 tcon_top_mixer0_in_mixer0: endpoint@0 { 634 reg = <0>; 635 remote-endpoint = <&mixer0_out_tcon_top_mixer0>; 636 }; 637 }; 638 639 tcon_top_mixer0_out: port@1 { 640 #address-cells = <1>; 641 #size-cells = <0>; 642 reg = <1>; 643 644 tcon_top_mixer0_out_tcon_tv: endpoint@2 { 645 reg = <2>; 646 remote-endpoint = <&tcon_tv_in_tcon_top_mixer0>; 647 }; 648 }; 649 650 tcon_top_hdmi_in: port@4 { 651 #address-cells = <1>; 652 #size-cells = <0>; 653 reg = <4>; 654 655 tcon_top_hdmi_in_tcon_tv: endpoint@0 { 656 reg = <0>; 657 remote-endpoint = <&tcon_tv_out_tcon_top>; 658 }; 659 }; 660 661 tcon_top_hdmi_out: port@5 { 662 reg = <5>; 663 664 tcon_top_hdmi_out_hdmi: endpoint { 665 remote-endpoint = <&hdmi_in_tcon_top>; 666 }; 667 }; 668 }; 669 }; 670 671 tcon_tv: lcd-controller@6515000 { 672 compatible = "allwinner,sun50i-h6-tcon-tv", 673 "allwinner,sun8i-r40-tcon-tv"; 674 reg = <0x06515000 0x1000>; 675 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; 676 clocks = <&ccu CLK_BUS_TCON_TV0>, 677 <&tcon_top CLK_TCON_TOP_TV0>; 678 clock-names = "ahb", 679 "tcon-ch1"; 680 resets = <&ccu RST_BUS_TCON_TV0>; 681 reset-names = "lcd"; 682 683 ports { 684 #address-cells = <1>; 685 #size-cells = <0>; 686 687 tcon_tv_in: port@0 { 688 reg = <0>; 689 690 tcon_tv_in_tcon_top_mixer0: endpoint { 691 remote-endpoint = <&tcon_top_mixer0_out_tcon_tv>; 692 }; 693 }; 694 695 tcon_tv_out: port@1 { 696 #address-cells = <1>; 697 #size-cells = <0>; 698 reg = <1>; 699 700 tcon_tv_out_tcon_top: endpoint@1 { 701 reg = <1>; 702 remote-endpoint = <&tcon_top_hdmi_in_tcon_tv>; 703 }; 704 }; 705 }; 706 }; 707 708 rtc: rtc@7000000 { 709 compatible = "allwinner,sun50i-h6-rtc"; 710 reg = <0x07000000 0x400>; 711 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>, 712 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; 713 clock-output-names = "osc32k", "osc32k-out", "iosc"; 714 clocks = <&ext_osc32k>; 715 #clock-cells = <1>; 716 }; 717 718 r_ccu: clock@7010000 { 719 compatible = "allwinner,sun50i-h6-r-ccu"; 720 reg = <0x07010000 0x400>; 721 clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, 722 <&ccu CLK_PLL_PERIPH0>; 723 clock-names = "hosc", "losc", "iosc", "pll-periph"; 724 #clock-cells = <1>; 725 #reset-cells = <1>; 726 }; 727 728 r_watchdog: watchdog@7020400 { 729 compatible = "allwinner,sun50i-h6-wdt", 730 "allwinner,sun6i-a31-wdt"; 731 reg = <0x07020400 0x20>; 732 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 733 clocks = <&osc24M>; 734 }; 735 736 r_intc: interrupt-controller@7021000 { 737 compatible = "allwinner,sun50i-h6-r-intc", 738 "allwinner,sun6i-a31-r-intc"; 739 interrupt-controller; 740 #interrupt-cells = <2>; 741 reg = <0x07021000 0x400>; 742 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 743 }; 744 745 r_pio: pinctrl@7022000 { 746 compatible = "allwinner,sun50i-h6-r-pinctrl"; 747 reg = <0x07022000 0x400>; 748 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>, 749 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; 750 clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>; 751 clock-names = "apb", "hosc", "losc"; 752 gpio-controller; 753 #gpio-cells = <3>; 754 interrupt-controller; 755 #interrupt-cells = <3>; 756 757 r_i2c_pins: r-i2c-pins { 758 pins = "PL0", "PL1"; 759 function = "s_i2c"; 760 }; 761 762 r_ir_rx_pin: r-ir-rx-pin { 763 pins = "PL9"; 764 function = "s_cir_rx"; 765 }; 766 }; 767 768 r_ir: ir@7040000 { 769 compatible = "allwinner,sun50i-h6-ir", 770 "allwinner,sun6i-a31-ir"; 771 reg = <0x07040000 0x400>; 772 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; 773 clocks = <&r_ccu CLK_R_APB1_IR>, 774 <&r_ccu CLK_IR>; 775 clock-names = "apb", "ir"; 776 resets = <&r_ccu RST_R_APB1_IR>; 777 pinctrl-names = "default"; 778 pinctrl-0 = <&r_ir_rx_pin>; 779 status = "disabled"; 780 }; 781 782 r_i2c: i2c@7081400 { 783 compatible = "allwinner,sun50i-h6-i2c", 784 "allwinner,sun6i-a31-i2c"; 785 reg = <0x07081400 0x400>; 786 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; 787 clocks = <&r_ccu CLK_R_APB2_I2C>; 788 resets = <&r_ccu RST_R_APB2_I2C>; 789 pinctrl-names = "default"; 790 pinctrl-0 = <&r_i2c_pins>; 791 status = "disabled"; 792 #address-cells = <1>; 793 #size-cells = <0>; 794 }; 795 }; 796}; 797