1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree Source for common parts of Salvator-X board variants 4 * 5 * Copyright (C) 2015-2016 Renesas Electronics Corp. 6 */ 7 8/* 9 * SSI-AK4613 10 * 11 * This command is required when Playback/Capture 12 * 13 * amixer set "DVC Out" 100% 14 * amixer set "DVC In" 100% 15 * 16 * You can use Mute 17 * 18 * amixer set "DVC Out Mute" on 19 * amixer set "DVC In Mute" on 20 * 21 * You can use Volume Ramp 22 * 23 * amixer set "DVC Out Ramp Up Rate" "0.125 dB/64 steps" 24 * amixer set "DVC Out Ramp Down Rate" "0.125 dB/512 steps" 25 * amixer set "DVC Out Ramp" on 26 * aplay xxx.wav & 27 * amixer set "DVC Out" 80% // Volume Down 28 * amixer set "DVC Out" 100% // Volume Up 29 */ 30 31#include <dt-bindings/gpio/gpio.h> 32 33/ { 34 aliases { 35 serial0 = &scif2; 36 serial1 = &hscif1; 37 ethernet0 = &avb; 38 }; 39 40 chosen { 41 bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp"; 42 stdout-path = "serial0:115200n8"; 43 }; 44 45 audio_clkout: audio-clkout { 46 /* 47 * This is same as <&rcar_sound 0> 48 * but needed to avoid cs2000/rcar_sound probe dead-lock 49 */ 50 compatible = "fixed-clock"; 51 #clock-cells = <0>; 52 clock-frequency = <12288000>; 53 }; 54 55 backlight: backlight { 56 compatible = "pwm-backlight"; 57 pwms = <&pwm1 0 50000>; 58 59 brightness-levels = <256 128 64 16 8 4 0>; 60 default-brightness-level = <6>; 61 62 power-supply = <®_12v>; 63 enable-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>; 64 }; 65 66 cvbs-in { 67 compatible = "composite-video-connector"; 68 label = "CVBS IN"; 69 70 port { 71 cvbs_con: endpoint { 72 remote-endpoint = <&adv7482_ain7>; 73 }; 74 }; 75 }; 76 77 hdmi-in { 78 compatible = "hdmi-connector"; 79 label = "HDMI IN"; 80 type = "a"; 81 82 port { 83 hdmi_in_con: endpoint { 84 remote-endpoint = <&adv7482_hdmi>; 85 }; 86 }; 87 }; 88 89 reg_1p8v: regulator0 { 90 compatible = "regulator-fixed"; 91 regulator-name = "fixed-1.8V"; 92 regulator-min-microvolt = <1800000>; 93 regulator-max-microvolt = <1800000>; 94 regulator-boot-on; 95 regulator-always-on; 96 }; 97 98 reg_3p3v: regulator1 { 99 compatible = "regulator-fixed"; 100 regulator-name = "fixed-3.3V"; 101 regulator-min-microvolt = <3300000>; 102 regulator-max-microvolt = <3300000>; 103 regulator-boot-on; 104 regulator-always-on; 105 }; 106 107 reg_12v: regulator2 { 108 compatible = "regulator-fixed"; 109 regulator-name = "fixed-12V"; 110 regulator-min-microvolt = <12000000>; 111 regulator-max-microvolt = <12000000>; 112 regulator-boot-on; 113 regulator-always-on; 114 }; 115 116 sound_card: sound { 117 compatible = "audio-graph-card"; 118 119 label = "rcar-sound"; 120 121 dais = <&rsnd_port0>; 122 }; 123 124 vbus0_usb2: regulator-vbus0-usb2 { 125 compatible = "regulator-fixed"; 126 127 regulator-name = "USB20_VBUS0"; 128 regulator-min-microvolt = <5000000>; 129 regulator-max-microvolt = <5000000>; 130 131 gpio = <&gpio6 16 GPIO_ACTIVE_HIGH>; 132 enable-active-high; 133 }; 134 135 vcc_sdhi0: regulator-vcc-sdhi0 { 136 compatible = "regulator-fixed"; 137 138 regulator-name = "SDHI0 Vcc"; 139 regulator-min-microvolt = <3300000>; 140 regulator-max-microvolt = <3300000>; 141 142 gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>; 143 enable-active-high; 144 }; 145 146 vccq_sdhi0: regulator-vccq-sdhi0 { 147 compatible = "regulator-gpio"; 148 149 regulator-name = "SDHI0 VccQ"; 150 regulator-min-microvolt = <1800000>; 151 regulator-max-microvolt = <3300000>; 152 153 gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>; 154 gpios-states = <1>; 155 states = <3300000 1 156 1800000 0>; 157 }; 158 159 vcc_sdhi3: regulator-vcc-sdhi3 { 160 compatible = "regulator-fixed"; 161 162 regulator-name = "SDHI3 Vcc"; 163 regulator-min-microvolt = <3300000>; 164 regulator-max-microvolt = <3300000>; 165 166 gpio = <&gpio3 15 GPIO_ACTIVE_HIGH>; 167 enable-active-high; 168 }; 169 170 vccq_sdhi3: regulator-vccq-sdhi3 { 171 compatible = "regulator-gpio"; 172 173 regulator-name = "SDHI3 VccQ"; 174 regulator-min-microvolt = <1800000>; 175 regulator-max-microvolt = <3300000>; 176 177 gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>; 178 gpios-states = <1>; 179 states = <3300000 1 180 1800000 0>; 181 }; 182 183 hdmi0-out { 184 compatible = "hdmi-connector"; 185 label = "HDMI0 OUT"; 186 type = "a"; 187 188 port { 189 hdmi0_con: endpoint { 190 }; 191 }; 192 }; 193 194 hdmi1-out { 195 compatible = "hdmi-connector"; 196 label = "HDMI1 OUT"; 197 type = "a"; 198 199 port { 200 hdmi1_con: endpoint { 201 }; 202 }; 203 }; 204 205 vga { 206 compatible = "vga-connector"; 207 208 port { 209 vga_in: endpoint { 210 remote-endpoint = <&adv7123_out>; 211 }; 212 }; 213 }; 214 215 vga-encoder { 216 compatible = "adi,adv7123"; 217 218 ports { 219 #address-cells = <1>; 220 #size-cells = <0>; 221 222 port@0 { 223 reg = <0>; 224 adv7123_in: endpoint { 225 remote-endpoint = <&du_out_rgb>; 226 }; 227 }; 228 port@1 { 229 reg = <1>; 230 adv7123_out: endpoint { 231 remote-endpoint = <&vga_in>; 232 }; 233 }; 234 }; 235 }; 236 237 x12_clk: x12 { 238 compatible = "fixed-clock"; 239 #clock-cells = <0>; 240 clock-frequency = <24576000>; 241 }; 242 243 /* External DU dot clocks */ 244 x21_clk: x21-clock { 245 compatible = "fixed-clock"; 246 #clock-cells = <0>; 247 clock-frequency = <33000000>; 248 }; 249 250 x22_clk: x22-clock { 251 compatible = "fixed-clock"; 252 #clock-cells = <0>; 253 clock-frequency = <33000000>; 254 }; 255 256 x23_clk: x23-clock { 257 compatible = "fixed-clock"; 258 #clock-cells = <0>; 259 clock-frequency = <25000000>; 260 }; 261}; 262 263&audio_clk_a { 264 clock-frequency = <22579200>; 265}; 266 267&avb { 268 pinctrl-0 = <&avb_pins>; 269 pinctrl-names = "default"; 270 phy-handle = <&phy0>; 271 phy-mode = "rgmii-txid"; 272 status = "okay"; 273 274 phy0: ethernet-phy@0 { 275 rxc-skew-ps = <1500>; 276 reg = <0>; 277 interrupt-parent = <&gpio2>; 278 interrupts = <11 IRQ_TYPE_LEVEL_LOW>; 279 reset-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; 280 }; 281}; 282 283&csi20 { 284 status = "okay"; 285 286 ports { 287 port@0 { 288 reg = <0>; 289 csi20_in: endpoint { 290 clock-lanes = <0>; 291 data-lanes = <1>; 292 remote-endpoint = <&adv7482_txb>; 293 }; 294 }; 295 }; 296}; 297 298&csi40 { 299 status = "okay"; 300 301 ports { 302 port@0 { 303 reg = <0>; 304 305 csi40_in: endpoint { 306 clock-lanes = <0>; 307 data-lanes = <1 2 3 4>; 308 remote-endpoint = <&adv7482_txa>; 309 }; 310 }; 311 }; 312}; 313 314&du { 315 pinctrl-0 = <&du_pins>; 316 pinctrl-names = "default"; 317 status = "okay"; 318 319 ports { 320 port@0 { 321 endpoint { 322 remote-endpoint = <&adv7123_in>; 323 }; 324 }; 325 }; 326}; 327 328&ehci0 { 329 dr_mode = "otg"; 330 status = "okay"; 331}; 332 333&ehci1 { 334 status = "okay"; 335}; 336 337&extalr_clk { 338 clock-frequency = <32768>; 339}; 340 341&hscif1 { 342 pinctrl-0 = <&hscif1_pins>; 343 pinctrl-names = "default"; 344 345 uart-has-rtscts; 346 /* Please only enable hscif1 or scif1 */ 347 status = "okay"; 348}; 349 350&hsusb { 351 dr_mode = "otg"; 352 status = "okay"; 353}; 354 355&i2c2 { 356 pinctrl-0 = <&i2c2_pins>; 357 pinctrl-names = "default"; 358 359 status = "okay"; 360 361 clock-frequency = <100000>; 362 363 ak4613: codec@10 { 364 compatible = "asahi-kasei,ak4613"; 365 #sound-dai-cells = <0>; 366 reg = <0x10>; 367 clocks = <&rcar_sound 3>; 368 369 asahi-kasei,in1-single-end; 370 asahi-kasei,in2-single-end; 371 asahi-kasei,out1-single-end; 372 asahi-kasei,out2-single-end; 373 asahi-kasei,out3-single-end; 374 asahi-kasei,out4-single-end; 375 asahi-kasei,out5-single-end; 376 asahi-kasei,out6-single-end; 377 378 port { 379 ak4613_endpoint: endpoint { 380 remote-endpoint = <&rsnd_endpoint0>; 381 }; 382 }; 383 }; 384 385 cs2000: clk_multiplier@4f { 386 #clock-cells = <0>; 387 compatible = "cirrus,cs2000-cp"; 388 reg = <0x4f>; 389 clocks = <&audio_clkout>, <&x12_clk>; 390 clock-names = "clk_in", "ref_clk"; 391 392 assigned-clocks = <&cs2000>; 393 assigned-clock-rates = <24576000>; /* 1/1 divide */ 394 }; 395}; 396 397&i2c4 { 398 status = "okay"; 399 400 pca9654: gpio@20 { 401 compatible = "onnn,pca9654"; 402 reg = <0x20>; 403 gpio-controller; 404 #gpio-cells = <2>; 405 }; 406 407 csa_vdd: adc@7c { 408 compatible = "maxim,max9611"; 409 reg = <0x7c>; 410 411 shunt-resistor-micro-ohms = <5000>; 412 }; 413 414 csa_dvfs: adc@7f { 415 compatible = "maxim,max9611"; 416 reg = <0x7f>; 417 418 shunt-resistor-micro-ohms = <5000>; 419 }; 420 421 video-receiver@70 { 422 compatible = "adi,adv7482"; 423 reg = <0x70>; 424 425 #address-cells = <1>; 426 #size-cells = <0>; 427 428 interrupt-parent = <&gpio6>; 429 interrupt-names = "intrq1", "intrq2"; 430 interrupts = <30 IRQ_TYPE_LEVEL_LOW>, 431 <31 IRQ_TYPE_LEVEL_LOW>; 432 433 port@7 { 434 reg = <7>; 435 436 adv7482_ain7: endpoint { 437 remote-endpoint = <&cvbs_con>; 438 }; 439 }; 440 441 port@8 { 442 reg = <8>; 443 444 adv7482_hdmi: endpoint { 445 remote-endpoint = <&hdmi_in_con>; 446 }; 447 }; 448 449 port@a { 450 reg = <10>; 451 452 adv7482_txa: endpoint { 453 clock-lanes = <0>; 454 data-lanes = <1 2 3 4>; 455 remote-endpoint = <&csi40_in>; 456 }; 457 }; 458 459 port@b { 460 reg = <11>; 461 462 adv7482_txb: endpoint { 463 clock-lanes = <0>; 464 data-lanes = <1>; 465 remote-endpoint = <&csi20_in>; 466 }; 467 }; 468 }; 469}; 470 471&i2c_dvfs { 472 status = "okay"; 473 474 pmic: pmic@30 { 475 pinctrl-0 = <&irq0_pins>; 476 pinctrl-names = "default"; 477 478 compatible = "rohm,bd9571mwv"; 479 reg = <0x30>; 480 interrupt-parent = <&intc_ex>; 481 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 482 interrupt-controller; 483 #interrupt-cells = <2>; 484 gpio-controller; 485 #gpio-cells = <2>; 486 rohm,ddr-backup-power = <0xf>; 487 rohm,rstbmode-level; 488 489 regulators { 490 dvfs: dvfs { 491 regulator-name = "dvfs"; 492 regulator-min-microvolt = <750000>; 493 regulator-max-microvolt = <1030000>; 494 regulator-boot-on; 495 regulator-always-on; 496 }; 497 }; 498 }; 499 500 eeprom@50 { 501 compatible = "rohm,br24t01", "atmel,24c01"; 502 reg = <0x50>; 503 pagesize = <8>; 504 }; 505}; 506 507&ohci0 { 508 dr_mode = "otg"; 509 status = "okay"; 510}; 511 512&ohci1 { 513 status = "okay"; 514}; 515 516&pcie_bus_clk { 517 clock-frequency = <100000000>; 518}; 519 520&pciec0 { 521 status = "okay"; 522}; 523 524&pciec1 { 525 status = "okay"; 526}; 527 528&pfc { 529 pinctrl-0 = <&scif_clk_pins>; 530 pinctrl-names = "default"; 531 532 avb_pins: avb { 533 mux { 534 groups = "avb_link", "avb_mdio", "avb_mii"; 535 function = "avb"; 536 }; 537 538 pins_mdio { 539 groups = "avb_mdio"; 540 drive-strength = <24>; 541 }; 542 543 pins_mii_tx { 544 pins = "PIN_AVB_TX_CTL", "PIN_AVB_TXC", "PIN_AVB_TD0", 545 "PIN_AVB_TD1", "PIN_AVB_TD2", "PIN_AVB_TD3"; 546 drive-strength = <12>; 547 }; 548 }; 549 550 du_pins: du { 551 groups = "du_rgb888", "du_sync", "du_oddf", "du_clk_out_0"; 552 function = "du"; 553 }; 554 555 hscif1_pins: hscif1 { 556 groups = "hscif1_data_a", "hscif1_ctrl_a"; 557 function = "hscif1"; 558 }; 559 560 i2c2_pins: i2c2 { 561 groups = "i2c2_a"; 562 function = "i2c2"; 563 }; 564 565 irq0_pins: irq0 { 566 groups = "intc_ex_irq0"; 567 function = "intc_ex"; 568 }; 569 570 pwm1_pins: pwm1 { 571 groups = "pwm1_a"; 572 function = "pwm1"; 573 }; 574 575 scif1_pins: scif1 { 576 groups = "scif1_data_a", "scif1_ctrl"; 577 function = "scif1"; 578 }; 579 580 scif2_pins: scif2 { 581 groups = "scif2_data_a"; 582 function = "scif2"; 583 }; 584 585 scif_clk_pins: scif_clk { 586 groups = "scif_clk_a"; 587 function = "scif_clk"; 588 }; 589 590 sdhi0_pins: sd0 { 591 groups = "sdhi0_data4", "sdhi0_ctrl"; 592 function = "sdhi0"; 593 power-source = <3300>; 594 }; 595 596 sdhi0_pins_uhs: sd0_uhs { 597 groups = "sdhi0_data4", "sdhi0_ctrl"; 598 function = "sdhi0"; 599 power-source = <1800>; 600 }; 601 602 sdhi2_pins: sd2 { 603 groups = "sdhi2_data8", "sdhi2_ctrl", "sdhi2_ds"; 604 function = "sdhi2"; 605 power-source = <3300>; 606 }; 607 608 sdhi2_pins_uhs: sd2_uhs { 609 groups = "sdhi2_data8", "sdhi2_ctrl", "sdhi2_ds"; 610 function = "sdhi2"; 611 power-source = <1800>; 612 }; 613 614 sdhi3_pins: sd3 { 615 groups = "sdhi3_data4", "sdhi3_ctrl"; 616 function = "sdhi3"; 617 power-source = <3300>; 618 }; 619 620 sdhi3_pins_uhs: sd3_uhs { 621 groups = "sdhi3_data4", "sdhi3_ctrl"; 622 function = "sdhi3"; 623 power-source = <1800>; 624 }; 625 626 sound_pins: sound { 627 groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a"; 628 function = "ssi"; 629 }; 630 631 sound_clk_pins: sound_clk { 632 groups = "audio_clk_a_a", "audio_clk_b_a", "audio_clk_c_a", 633 "audio_clkout_a", "audio_clkout3_a"; 634 function = "audio_clk"; 635 }; 636 637 usb0_pins: usb0 { 638 groups = "usb0"; 639 function = "usb0"; 640 }; 641 642 usb1_pins: usb1 { 643 mux { 644 groups = "usb1"; 645 function = "usb1"; 646 }; 647 648 ovc { 649 pins = "GP_6_27"; 650 bias-pull-up; 651 }; 652 653 pwen { 654 pins = "GP_6_26"; 655 bias-pull-down; 656 }; 657 }; 658 659 usb30_pins: usb30 { 660 groups = "usb30"; 661 function = "usb30"; 662 }; 663}; 664 665&pwm1 { 666 pinctrl-0 = <&pwm1_pins>; 667 pinctrl-names = "default"; 668 669 status = "okay"; 670}; 671 672&rcar_sound { 673 pinctrl-0 = <&sound_pins &sound_clk_pins>; 674 pinctrl-names = "default"; 675 676 /* Single DAI */ 677 #sound-dai-cells = <0>; 678 679 /* audio_clkout0/1/2/3 */ 680 #clock-cells = <1>; 681 clock-frequency = <12288000 11289600>; 682 683 status = "okay"; 684 685 /* update <audio_clk_b> to <cs2000> */ 686 clocks = <&cpg CPG_MOD 1005>, 687 <&cpg CPG_MOD 1006>, <&cpg CPG_MOD 1007>, 688 <&cpg CPG_MOD 1008>, <&cpg CPG_MOD 1009>, 689 <&cpg CPG_MOD 1010>, <&cpg CPG_MOD 1011>, 690 <&cpg CPG_MOD 1012>, <&cpg CPG_MOD 1013>, 691 <&cpg CPG_MOD 1014>, <&cpg CPG_MOD 1015>, 692 <&cpg CPG_MOD 1022>, <&cpg CPG_MOD 1023>, 693 <&cpg CPG_MOD 1024>, <&cpg CPG_MOD 1025>, 694 <&cpg CPG_MOD 1026>, <&cpg CPG_MOD 1027>, 695 <&cpg CPG_MOD 1028>, <&cpg CPG_MOD 1029>, 696 <&cpg CPG_MOD 1030>, <&cpg CPG_MOD 1031>, 697 <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, 698 <&cpg CPG_MOD 1020>, <&cpg CPG_MOD 1021>, 699 <&cpg CPG_MOD 1019>, <&cpg CPG_MOD 1018>, 700 <&audio_clk_a>, <&cs2000>, 701 <&audio_clk_c>, 702 <&cpg CPG_CORE CPG_AUDIO_CLK_I>; 703 704 ports { 705 rsnd_port0: port@0 { 706 rsnd_endpoint0: endpoint { 707 remote-endpoint = <&ak4613_endpoint>; 708 709 dai-format = "left_j"; 710 bitclock-master = <&rsnd_endpoint0>; 711 frame-master = <&rsnd_endpoint0>; 712 713 playback = <&ssi0 &src0 &dvc0>; 714 capture = <&ssi1 &src1 &dvc1>; 715 }; 716 }; 717 }; 718}; 719 720&scif1 { 721 pinctrl-0 = <&scif1_pins>; 722 pinctrl-names = "default"; 723 724 uart-has-rtscts; 725 /* Please only enable hscif1 or scif1 */ 726 /* status = "okay"; */ 727}; 728 729&scif2 { 730 pinctrl-0 = <&scif2_pins>; 731 pinctrl-names = "default"; 732 733 status = "okay"; 734}; 735 736&scif_clk { 737 clock-frequency = <14745600>; 738}; 739 740&sdhi0 { 741 pinctrl-0 = <&sdhi0_pins>; 742 pinctrl-1 = <&sdhi0_pins_uhs>; 743 pinctrl-names = "default", "state_uhs"; 744 745 vmmc-supply = <&vcc_sdhi0>; 746 vqmmc-supply = <&vccq_sdhi0>; 747 cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>; 748 wp-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 749 bus-width = <4>; 750 sd-uhs-sdr50; 751 status = "okay"; 752}; 753 754&sdhi2 { 755 /* used for on-board 8bit eMMC */ 756 pinctrl-0 = <&sdhi2_pins>; 757 pinctrl-1 = <&sdhi2_pins_uhs>; 758 pinctrl-names = "default", "state_uhs"; 759 760 vmmc-supply = <®_3p3v>; 761 vqmmc-supply = <®_1p8v>; 762 bus-width = <8>; 763 mmc-hs200-1_8v; 764 non-removable; 765 fixed-emmc-driver-type = <1>; 766 status = "okay"; 767}; 768 769&sdhi3 { 770 pinctrl-0 = <&sdhi3_pins>; 771 pinctrl-1 = <&sdhi3_pins_uhs>; 772 pinctrl-names = "default", "state_uhs"; 773 774 vmmc-supply = <&vcc_sdhi3>; 775 vqmmc-supply = <&vccq_sdhi3>; 776 cd-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>; 777 wp-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>; 778 bus-width = <4>; 779 sd-uhs-sdr50; 780 status = "okay"; 781}; 782 783&ssi1 { 784 shared-pin; 785}; 786 787&usb_extal_clk { 788 clock-frequency = <50000000>; 789}; 790 791&usb2_phy0 { 792 pinctrl-0 = <&usb0_pins>; 793 pinctrl-names = "default"; 794 795 vbus-supply = <&vbus0_usb2>; 796 status = "okay"; 797}; 798 799&usb2_phy1 { 800 pinctrl-0 = <&usb1_pins>; 801 pinctrl-names = "default"; 802 803 status = "okay"; 804}; 805 806&usb3_peri0 { 807 phys = <&usb3_phy0>; 808 phy-names = "usb"; 809 810 status = "okay"; 811}; 812 813&usb3_phy0 { 814 status = "okay"; 815}; 816 817&usb3s0_clk { 818 clock-frequency = <100000000>; 819}; 820 821&vin0 { 822 status = "okay"; 823}; 824 825&vin1 { 826 status = "okay"; 827}; 828 829&vin2 { 830 status = "okay"; 831}; 832 833&vin3 { 834 status = "okay"; 835}; 836 837&vin4 { 838 status = "okay"; 839}; 840 841&vin5 { 842 status = "okay"; 843}; 844 845&vin6 { 846 status = "okay"; 847}; 848 849&vin7 { 850 status = "okay"; 851}; 852 853&rwdt { 854 timeout-sec = <60>; 855 status = "okay"; 856}; 857 858&xhci0 { 859 pinctrl-0 = <&usb30_pins>; 860 pinctrl-names = "default"; 861 862 status = "okay"; 863}; 864