1// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2/* 3 * Copyright (c) 2016 Endless Computers, Inc. 4 * Author: Carlo Caione <carlo@endlessm.com> 5 */ 6 7#include "meson-gx.dtsi" 8#include <dt-bindings/clock/gxbb-clkc.h> 9#include <dt-bindings/clock/gxbb-aoclkc.h> 10#include <dt-bindings/gpio/meson-gxl-gpio.h> 11#include <dt-bindings/reset/amlogic,meson-gxbb-reset.h> 12 13/ { 14 compatible = "amlogic,meson-gxl"; 15 16 reserved-memory { 17 /* Alternate 3 MiB reserved for ARM Trusted Firmware (BL31) */ 18 secmon_reserved_alt: secmon@5000000 { 19 reg = <0x0 0x05000000 0x0 0x300000>; 20 no-map; 21 }; 22 }; 23 24 soc { 25 usb0: usb@c9000000 { 26 status = "disabled"; 27 compatible = "amlogic,meson-gxl-dwc3"; 28 #address-cells = <2>; 29 #size-cells = <2>; 30 ranges; 31 32 clocks = <&clkc CLKID_USB>; 33 clock-names = "usb_general"; 34 resets = <&reset RESET_USB_OTG>; 35 reset-names = "usb_otg"; 36 37 dwc3: dwc3@c9000000 { 38 compatible = "snps,dwc3"; 39 reg = <0x0 0xc9000000 0x0 0x100000>; 40 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; 41 dr_mode = "host"; 42 maximum-speed = "high-speed"; 43 snps,dis_u2_susphy_quirk; 44 phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>; 45 }; 46 }; 47 }; 48}; 49 50&apb { 51 usb2_phy0: phy@78000 { 52 compatible = "amlogic,meson-gxl-usb2-phy"; 53 #phy-cells = <0>; 54 reg = <0x0 0x78000 0x0 0x20>; 55 clocks = <&clkc CLKID_USB>; 56 clock-names = "phy"; 57 resets = <&reset RESET_USB_OTG>; 58 reset-names = "phy"; 59 status = "okay"; 60 }; 61 62 usb2_phy1: phy@78020 { 63 compatible = "amlogic,meson-gxl-usb2-phy"; 64 #phy-cells = <0>; 65 reg = <0x0 0x78020 0x0 0x20>; 66 clocks = <&clkc CLKID_USB>; 67 clock-names = "phy"; 68 resets = <&reset RESET_USB_OTG>; 69 reset-names = "phy"; 70 status = "okay"; 71 }; 72 73 usb3_phy: phy@78080 { 74 compatible = "amlogic,meson-gxl-usb3-phy"; 75 #phy-cells = <0>; 76 reg = <0x0 0x78080 0x0 0x20>; 77 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 78 clocks = <&clkc CLKID_USB>, <&clkc_AO CLKID_AO_CEC_32K>; 79 clock-names = "phy", "peripheral"; 80 resets = <&reset RESET_USB_OTG>, <&reset RESET_USB_OTG>; 81 reset-names = "phy", "peripheral"; 82 status = "okay"; 83 }; 84}; 85 86ðmac { 87 reg = <0x0 0xc9410000 0x0 0x10000 88 0x0 0xc8834540 0x0 0x4>; 89 90 clocks = <&clkc CLKID_ETH>, 91 <&clkc CLKID_FCLK_DIV2>, 92 <&clkc CLKID_MPLL2>; 93 clock-names = "stmmaceth", "clkin0", "clkin1"; 94 95 mdio0: mdio { 96 #address-cells = <1>; 97 #size-cells = <0>; 98 compatible = "snps,dwmac-mdio"; 99 }; 100}; 101 102&aobus { 103 pinctrl_aobus: pinctrl@14 { 104 compatible = "amlogic,meson-gxl-aobus-pinctrl"; 105 #address-cells = <2>; 106 #size-cells = <2>; 107 ranges; 108 109 gpio_ao: bank@14 { 110 reg = <0x0 0x00014 0x0 0x8>, 111 <0x0 0x0002c 0x0 0x4>, 112 <0x0 0x00024 0x0 0x8>; 113 reg-names = "mux", "pull", "gpio"; 114 gpio-controller; 115 #gpio-cells = <2>; 116 gpio-ranges = <&pinctrl_aobus 0 0 14>; 117 }; 118 119 uart_ao_a_pins: uart_ao_a { 120 mux { 121 groups = "uart_tx_ao_a", "uart_rx_ao_a"; 122 function = "uart_ao"; 123 }; 124 }; 125 126 uart_ao_a_cts_rts_pins: uart_ao_a_cts_rts { 127 mux { 128 groups = "uart_cts_ao_a", 129 "uart_rts_ao_a"; 130 function = "uart_ao"; 131 }; 132 }; 133 134 uart_ao_b_pins: uart_ao_b { 135 mux { 136 groups = "uart_tx_ao_b", "uart_rx_ao_b"; 137 function = "uart_ao_b"; 138 }; 139 }; 140 141 uart_ao_b_0_1_pins: uart_ao_b_0_1 { 142 mux { 143 groups = "uart_tx_ao_b_0", "uart_rx_ao_b_1"; 144 function = "uart_ao_b"; 145 }; 146 }; 147 148 uart_ao_b_cts_rts_pins: uart_ao_b_cts_rts { 149 mux { 150 groups = "uart_cts_ao_b", 151 "uart_rts_ao_b"; 152 function = "uart_ao_b"; 153 }; 154 }; 155 156 remote_input_ao_pins: remote_input_ao { 157 mux { 158 groups = "remote_input_ao"; 159 function = "remote_input_ao"; 160 }; 161 }; 162 163 i2c_ao_pins: i2c_ao { 164 mux { 165 groups = "i2c_sck_ao", 166 "i2c_sda_ao"; 167 function = "i2c_ao"; 168 }; 169 }; 170 171 pwm_ao_a_3_pins: pwm_ao_a_3 { 172 mux { 173 groups = "pwm_ao_a_3"; 174 function = "pwm_ao_a"; 175 }; 176 }; 177 178 pwm_ao_a_8_pins: pwm_ao_a_8 { 179 mux { 180 groups = "pwm_ao_a_8"; 181 function = "pwm_ao_a"; 182 }; 183 }; 184 185 pwm_ao_b_pins: pwm_ao_b { 186 mux { 187 groups = "pwm_ao_b"; 188 function = "pwm_ao_b"; 189 }; 190 }; 191 192 pwm_ao_b_6_pins: pwm_ao_b_6 { 193 mux { 194 groups = "pwm_ao_b_6"; 195 function = "pwm_ao_b"; 196 }; 197 }; 198 199 i2s_out_ch23_ao_pins: i2s_out_ch23_ao { 200 mux { 201 groups = "i2s_out_ch23_ao"; 202 function = "i2s_out_ao"; 203 }; 204 }; 205 206 i2s_out_ch45_ao_pins: i2s_out_ch45_ao { 207 mux { 208 groups = "i2s_out_ch45_ao"; 209 function = "i2s_out_ao"; 210 }; 211 }; 212 213 spdif_out_ao_6_pins: spdif_out_ao_6 { 214 mux { 215 groups = "spdif_out_ao_6"; 216 function = "spdif_out_ao"; 217 }; 218 }; 219 220 spdif_out_ao_9_pins: spdif_out_ao_9 { 221 mux { 222 groups = "spdif_out_ao_9"; 223 function = "spdif_out_ao"; 224 }; 225 }; 226 227 ao_cec_pins: ao_cec { 228 mux { 229 groups = "ao_cec"; 230 function = "cec_ao"; 231 }; 232 }; 233 234 ee_cec_pins: ee_cec { 235 mux { 236 groups = "ee_cec"; 237 function = "cec_ao"; 238 }; 239 }; 240 }; 241}; 242 243&cec_AO { 244 clocks = <&clkc_AO CLKID_AO_CEC_32K>; 245 clock-names = "core"; 246}; 247 248&clkc_AO { 249 compatible = "amlogic,meson-gxl-aoclkc", "amlogic,meson-gx-aoclkc"; 250}; 251 252&gpio_intc { 253 compatible = "amlogic,meson-gpio-intc", 254 "amlogic,meson-gxl-gpio-intc"; 255 status = "okay"; 256}; 257 258&hdmi_tx { 259 compatible = "amlogic,meson-gxl-dw-hdmi", "amlogic,meson-gx-dw-hdmi"; 260 resets = <&reset RESET_HDMITX_CAPB3>, 261 <&reset RESET_HDMI_SYSTEM_RESET>, 262 <&reset RESET_HDMI_TX>; 263 reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy"; 264 clocks = <&clkc CLKID_HDMI_PCLK>, 265 <&clkc CLKID_CLK81>, 266 <&clkc CLKID_GCLK_VENCI_INT0>; 267 clock-names = "isfr", "iahb", "venci"; 268}; 269 270&hiubus { 271 clkc: clock-controller@0 { 272 compatible = "amlogic,gxl-clkc", "amlogic,gxbb-clkc"; 273 #clock-cells = <1>; 274 reg = <0x0 0x0 0x0 0x3db>; 275 }; 276}; 277 278&i2c_A { 279 clocks = <&clkc CLKID_I2C>; 280}; 281 282&i2c_AO { 283 clocks = <&clkc CLKID_AO_I2C>; 284}; 285 286&i2c_B { 287 clocks = <&clkc CLKID_I2C>; 288}; 289 290&i2c_C { 291 clocks = <&clkc CLKID_I2C>; 292}; 293 294&periphs { 295 pinctrl_periphs: pinctrl@4b0 { 296 compatible = "amlogic,meson-gxl-periphs-pinctrl"; 297 #address-cells = <2>; 298 #size-cells = <2>; 299 ranges; 300 301 gpio: bank@4b0 { 302 reg = <0x0 0x004b0 0x0 0x28>, 303 <0x0 0x004e8 0x0 0x14>, 304 <0x0 0x00520 0x0 0x14>, 305 <0x0 0x00430 0x0 0x40>; 306 reg-names = "mux", "pull", "pull-enable", "gpio"; 307 gpio-controller; 308 #gpio-cells = <2>; 309 gpio-ranges = <&pinctrl_periphs 0 0 100>; 310 }; 311 312 emmc_pins: emmc { 313 mux { 314 groups = "emmc_nand_d07", 315 "emmc_cmd", 316 "emmc_clk"; 317 function = "emmc"; 318 }; 319 }; 320 321 emmc_ds_pins: emmc-ds { 322 mux { 323 groups = "emmc_ds"; 324 function = "emmc"; 325 }; 326 }; 327 328 emmc_clk_gate_pins: emmc_clk_gate { 329 mux { 330 groups = "BOOT_8"; 331 function = "gpio_periphs"; 332 }; 333 cfg-pull-down { 334 pins = "BOOT_8"; 335 bias-pull-down; 336 }; 337 }; 338 339 nor_pins: nor { 340 mux { 341 groups = "nor_d", 342 "nor_q", 343 "nor_c", 344 "nor_cs"; 345 function = "nor"; 346 }; 347 }; 348 349 spi_pins: spi { 350 mux { 351 groups = "spi_miso", 352 "spi_mosi", 353 "spi_sclk"; 354 function = "spi"; 355 }; 356 }; 357 358 spi_ss0_pins: spi-ss0 { 359 mux { 360 groups = "spi_ss0"; 361 function = "spi"; 362 }; 363 }; 364 365 sdcard_pins: sdcard { 366 mux { 367 groups = "sdcard_d0", 368 "sdcard_d1", 369 "sdcard_d2", 370 "sdcard_d3", 371 "sdcard_cmd", 372 "sdcard_clk"; 373 function = "sdcard"; 374 }; 375 }; 376 377 sdcard_clk_gate_pins: sdcard_clk_gate { 378 mux { 379 groups = "CARD_2"; 380 function = "gpio_periphs"; 381 }; 382 cfg-pull-down { 383 pins = "CARD_2"; 384 bias-pull-down; 385 }; 386 }; 387 388 sdio_pins: sdio { 389 mux { 390 groups = "sdio_d0", 391 "sdio_d1", 392 "sdio_d2", 393 "sdio_d3", 394 "sdio_cmd", 395 "sdio_clk"; 396 function = "sdio"; 397 }; 398 }; 399 400 sdio_clk_gate_pins: sdio_clk_gate { 401 mux { 402 groups = "GPIOX_4"; 403 function = "gpio_periphs"; 404 }; 405 cfg-pull-down { 406 pins = "GPIOX_4"; 407 bias-pull-down; 408 }; 409 }; 410 411 sdio_irq_pins: sdio_irq { 412 mux { 413 groups = "sdio_irq"; 414 function = "sdio"; 415 }; 416 }; 417 418 uart_a_pins: uart_a { 419 mux { 420 groups = "uart_tx_a", 421 "uart_rx_a"; 422 function = "uart_a"; 423 }; 424 }; 425 426 uart_a_cts_rts_pins: uart_a_cts_rts { 427 mux { 428 groups = "uart_cts_a", 429 "uart_rts_a"; 430 function = "uart_a"; 431 }; 432 }; 433 434 uart_b_pins: uart_b { 435 mux { 436 groups = "uart_tx_b", 437 "uart_rx_b"; 438 function = "uart_b"; 439 }; 440 }; 441 442 uart_b_cts_rts_pins: uart_b_cts_rts { 443 mux { 444 groups = "uart_cts_b", 445 "uart_rts_b"; 446 function = "uart_b"; 447 }; 448 }; 449 450 uart_c_pins: uart_c { 451 mux { 452 groups = "uart_tx_c", 453 "uart_rx_c"; 454 function = "uart_c"; 455 }; 456 }; 457 458 uart_c_cts_rts_pins: uart_c_cts_rts { 459 mux { 460 groups = "uart_cts_c", 461 "uart_rts_c"; 462 function = "uart_c"; 463 }; 464 }; 465 466 i2c_a_pins: i2c_a { 467 mux { 468 groups = "i2c_sck_a", 469 "i2c_sda_a"; 470 function = "i2c_a"; 471 }; 472 }; 473 474 i2c_b_pins: i2c_b { 475 mux { 476 groups = "i2c_sck_b", 477 "i2c_sda_b"; 478 function = "i2c_b"; 479 }; 480 }; 481 482 i2c_c_pins: i2c_c { 483 mux { 484 groups = "i2c_sck_c", 485 "i2c_sda_c"; 486 function = "i2c_c"; 487 }; 488 }; 489 490 eth_pins: eth_c { 491 mux { 492 groups = "eth_mdio", 493 "eth_mdc", 494 "eth_clk_rx_clk", 495 "eth_rx_dv", 496 "eth_rxd0", 497 "eth_rxd1", 498 "eth_rxd2", 499 "eth_rxd3", 500 "eth_rgmii_tx_clk", 501 "eth_tx_en", 502 "eth_txd0", 503 "eth_txd1", 504 "eth_txd2", 505 "eth_txd3"; 506 function = "eth"; 507 }; 508 }; 509 510 eth_link_led_pins: eth_link_led { 511 mux { 512 groups = "eth_link_led"; 513 function = "eth_led"; 514 }; 515 }; 516 517 eth_act_led_pins: eth_act_led { 518 mux { 519 groups = "eth_act_led"; 520 function = "eth_led"; 521 }; 522 }; 523 524 pwm_a_pins: pwm_a { 525 mux { 526 groups = "pwm_a"; 527 function = "pwm_a"; 528 }; 529 }; 530 531 pwm_b_pins: pwm_b { 532 mux { 533 groups = "pwm_b"; 534 function = "pwm_b"; 535 }; 536 }; 537 538 pwm_c_pins: pwm_c { 539 mux { 540 groups = "pwm_c"; 541 function = "pwm_c"; 542 }; 543 }; 544 545 pwm_d_pins: pwm_d { 546 mux { 547 groups = "pwm_d"; 548 function = "pwm_d"; 549 }; 550 }; 551 552 pwm_e_pins: pwm_e { 553 mux { 554 groups = "pwm_e"; 555 function = "pwm_e"; 556 }; 557 }; 558 559 pwm_f_clk_pins: pwm_f_clk { 560 mux { 561 groups = "pwm_f_clk"; 562 function = "pwm_f"; 563 }; 564 }; 565 566 pwm_f_x_pins: pwm_f_x { 567 mux { 568 groups = "pwm_f_x"; 569 function = "pwm_f"; 570 }; 571 }; 572 573 hdmi_hpd_pins: hdmi_hpd { 574 mux { 575 groups = "hdmi_hpd"; 576 function = "hdmi_hpd"; 577 }; 578 }; 579 580 hdmi_i2c_pins: hdmi_i2c { 581 mux { 582 groups = "hdmi_sda", "hdmi_scl"; 583 function = "hdmi_i2c"; 584 }; 585 }; 586 587 i2s_am_clk_pins: i2s_am_clk { 588 mux { 589 groups = "i2s_am_clk"; 590 function = "i2s_out"; 591 }; 592 }; 593 594 i2s_out_ao_clk_pins: i2s_out_ao_clk { 595 mux { 596 groups = "i2s_out_ao_clk"; 597 function = "i2s_out"; 598 }; 599 }; 600 601 i2s_out_lr_clk_pins: i2s_out_lr_clk { 602 mux { 603 groups = "i2s_out_lr_clk"; 604 function = "i2s_out"; 605 }; 606 }; 607 608 i2s_out_ch01_pins: i2s_out_ch01 { 609 mux { 610 groups = "i2s_out_ch01"; 611 function = "i2s_out"; 612 }; 613 }; 614 i2sout_ch23_z_pins: i2sout_ch23_z { 615 mux { 616 groups = "i2sout_ch23_z"; 617 function = "i2s_out"; 618 }; 619 }; 620 621 i2sout_ch45_z_pins: i2sout_ch45_z { 622 mux { 623 groups = "i2sout_ch45_z"; 624 function = "i2s_out"; 625 }; 626 }; 627 628 i2sout_ch67_z_pins: i2sout_ch67_z { 629 mux { 630 groups = "i2sout_ch67_z"; 631 function = "i2s_out"; 632 }; 633 }; 634 635 spdif_out_h_pins: spdif_out_ao_h { 636 mux { 637 groups = "spdif_out_h"; 638 function = "spdif_out"; 639 }; 640 }; 641 }; 642 643 eth-phy-mux { 644 compatible = "mdio-mux-mmioreg", "mdio-mux"; 645 #address-cells = <1>; 646 #size-cells = <0>; 647 reg = <0x0 0x55c 0x0 0x4>; 648 mux-mask = <0xffffffff>; 649 mdio-parent-bus = <&mdio0>; 650 651 internal_mdio: mdio@e40908ff { 652 reg = <0xe40908ff>; 653 #address-cells = <1>; 654 #size-cells = <0>; 655 656 internal_phy: ethernet-phy@8 { 657 compatible = "ethernet-phy-id0181.4400", "ethernet-phy-ieee802.3-c22"; 658 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 659 reg = <8>; 660 max-speed = <100>; 661 }; 662 }; 663 664 external_mdio: mdio@2009087f { 665 reg = <0x2009087f>; 666 #address-cells = <1>; 667 #size-cells = <0>; 668 }; 669 }; 670}; 671 672&pwrc_vpu { 673 resets = <&reset RESET_VIU>, 674 <&reset RESET_VENC>, 675 <&reset RESET_VCBUS>, 676 <&reset RESET_BT656>, 677 <&reset RESET_DVIN_RESET>, 678 <&reset RESET_RDMA>, 679 <&reset RESET_VENCI>, 680 <&reset RESET_VENCP>, 681 <&reset RESET_VDAC>, 682 <&reset RESET_VDI6>, 683 <&reset RESET_VENCL>, 684 <&reset RESET_VID_LOCK>; 685 clocks = <&clkc CLKID_VPU>, 686 <&clkc CLKID_VAPB>; 687 clock-names = "vpu", "vapb"; 688 /* 689 * VPU clocking is provided by two identical clock paths 690 * VPU_0 and VPU_1 muxed to a single clock by a glitch 691 * free mux to safely change frequency while running. 692 * Same for VAPB but with a final gate after the glitch free mux. 693 */ 694 assigned-clocks = <&clkc CLKID_VPU_0_SEL>, 695 <&clkc CLKID_VPU_0>, 696 <&clkc CLKID_VPU>, /* Glitch free mux */ 697 <&clkc CLKID_VAPB_0_SEL>, 698 <&clkc CLKID_VAPB_0>, 699 <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */ 700 assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>, 701 <0>, /* Do Nothing */ 702 <&clkc CLKID_VPU_0>, 703 <&clkc CLKID_FCLK_DIV4>, 704 <0>, /* Do Nothing */ 705 <&clkc CLKID_VAPB_0>; 706 assigned-clock-rates = <0>, /* Do Nothing */ 707 <666666666>, 708 <0>, /* Do Nothing */ 709 <0>, /* Do Nothing */ 710 <250000000>, 711 <0>; /* Do Nothing */ 712}; 713 714&saradc { 715 compatible = "amlogic,meson-gxl-saradc", "amlogic,meson-saradc"; 716 clocks = <&xtal>, 717 <&clkc CLKID_SAR_ADC>, 718 <&clkc CLKID_SAR_ADC_CLK>, 719 <&clkc CLKID_SAR_ADC_SEL>; 720 clock-names = "clkin", "core", "adc_clk", "adc_sel"; 721}; 722 723&sd_emmc_a { 724 clocks = <&clkc CLKID_SD_EMMC_A>, 725 <&clkc CLKID_SD_EMMC_A_CLK0>, 726 <&clkc CLKID_FCLK_DIV2>; 727 clock-names = "core", "clkin0", "clkin1"; 728}; 729 730&sd_emmc_b { 731 clocks = <&clkc CLKID_SD_EMMC_B>, 732 <&clkc CLKID_SD_EMMC_B_CLK0>, 733 <&clkc CLKID_FCLK_DIV2>; 734 clock-names = "core", "clkin0", "clkin1"; 735}; 736 737&sd_emmc_c { 738 clocks = <&clkc CLKID_SD_EMMC_C>, 739 <&clkc CLKID_SD_EMMC_C_CLK0>, 740 <&clkc CLKID_FCLK_DIV2>; 741 clock-names = "core", "clkin0", "clkin1"; 742}; 743 744&spicc { 745 clocks = <&clkc CLKID_SPICC>; 746 clock-names = "core"; 747 resets = <&reset RESET_PERIPHS_SPICC>; 748 num-cs = <1>; 749}; 750 751&spifc { 752 clocks = <&clkc CLKID_SPI>; 753}; 754 755&uart_A { 756 clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>; 757 clock-names = "xtal", "pclk", "baud"; 758}; 759 760&uart_AO { 761 clocks = <&xtal>, <&clkc CLKID_CLK81>, <&xtal>; 762 clock-names = "xtal", "pclk", "baud"; 763}; 764 765&uart_AO_B { 766 clocks = <&xtal>, <&clkc CLKID_CLK81>, <&xtal>; 767 clock-names = "xtal", "pclk", "baud"; 768}; 769 770&uart_B { 771 clocks = <&xtal>, <&clkc CLKID_UART1>, <&xtal>; 772 clock-names = "xtal", "pclk", "baud"; 773}; 774 775&uart_C { 776 clocks = <&xtal>, <&clkc CLKID_UART2>, <&xtal>; 777 clock-names = "xtal", "pclk", "baud"; 778}; 779 780&vpu { 781 compatible = "amlogic,meson-gxl-vpu", "amlogic,meson-gx-vpu"; 782 power-domains = <&pwrc_vpu>; 783}; 784