1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright 2020, Compass Electronics Group, LLC 4 */ 5 6#include <dt-bindings/gpio/gpio.h> 7#include <dt-bindings/input/input.h> 8#include <dt-bindings/clock/versaclock.h> 9 10/ { 11 backlight_lvds: backlight-lvds { 12 compatible = "pwm-backlight"; 13 power-supply = <®_lcd>; 14 enable-gpios = <&gpio_exp1 3 GPIO_ACTIVE_HIGH>; 15 pwms = <&pwm2 0 25000>; 16 brightness-levels = <0 4 8 16 32 64 128 255>; 17 default-brightness-level = <6>; 18 }; 19 20 backlight_dpi: backlight-dpi { 21 compatible = "pwm-backlight"; 22 power-supply = <®_lcd>; 23 enable-gpios = <&gpio_exp1 7 GPIO_ACTIVE_LOW>; 24 pwms = <&pwm0 0 25000>; 25 brightness-levels = <0 25 33 50 63 75 88 100>; 26 default-brightness-level = <6>; 27 }; 28 29 hdmi0-out { 30 compatible = "hdmi-connector"; 31 type = "a"; 32 33 port { 34 hdmi0_con: endpoint { 35 remote-endpoint = <&rcar_dw_hdmi0_out>; 36 }; 37 }; 38 }; 39 40 keys { 41 compatible = "gpio-keys"; 42 43 key-1 { /* S19 */ 44 gpios = <&gpio4 6 GPIO_ACTIVE_LOW>; 45 linux,code = <KEY_UP>; 46 label = "Up"; 47 wakeup-source; 48 debounce-interval = <20>; 49 }; 50 key-2 { /*S20 */ 51 gpios = <&gpio3 13 GPIO_ACTIVE_LOW>; 52 linux,code = <KEY_LEFT>; 53 label = "Left"; 54 wakeup-source; 55 debounce-interval = <20>; 56 }; 57 key-3 { /* S21 */ 58 gpios = <&gpio5 17 GPIO_ACTIVE_LOW>; 59 linux,code = <KEY_DOWN>; 60 label = "Down"; 61 wakeup-source; 62 debounce-interval = <20>; 63 }; 64 key-4 { /* S22 */ 65 gpios = <&gpio5 20 GPIO_ACTIVE_LOW>; 66 linux,code = <KEY_RIGHT>; 67 label = "Right"; 68 wakeup-source; 69 debounce-interval = <20>; 70 }; 71 key-5 { /* S23 */ 72 gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; 73 linux,code = <KEY_ENTER>; 74 label = "Center"; 75 wakeup-source; 76 debounce-interval = <20>; 77 }; 78 }; 79 80 leds { 81 compatible = "gpio-leds"; 82 pinctrl-0 = <&led_pins>; 83 pinctrl-names = "default"; 84 85 led0 { 86 gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>; 87 label = "LED0"; 88 linux,default-trigger = "heartbeat"; 89 }; 90 led1 { 91 gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>; 92 label = "LED1"; 93 }; 94 led2 { 95 gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>; 96 label = "LED2"; 97 }; 98 led3 { 99 gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>; 100 label = "LED3"; 101 }; 102 }; 103 104 lvds { 105 compatible = "panel-lvds"; 106 power-supply = <®_lcd_reset>; 107 width-mm = <223>; 108 height-mm = <125>; 109 backlight = <&backlight_lvds>; 110 data-mapping = "vesa-24"; 111 112 panel-timing { 113 /* 800x480@60Hz */ 114 clock-frequency = <30000000>; 115 hactive = <800>; 116 vactive = <480>; 117 hsync-len = <48>; 118 hfront-porch = <40>; 119 hback-porch = <40>; 120 vfront-porch = <13>; 121 vback-porch = <29>; 122 vsync-len = <1>; 123 hsync-active = <1>; 124 vsync-active = <3>; 125 de-active = <1>; 126 pixelclk-active = <0>; 127 }; 128 129 port { 130 panel_in: endpoint { 131 remote-endpoint = <&lvds0_out>; 132 }; 133 }; 134 }; 135 136 rgb { 137 /* Different LCD with compatible timings */ 138 compatible = "rocktech,rk070er9427"; 139 backlight = <&backlight_dpi>; 140 enable-gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>; 141 power-supply = <®_lcd>; 142 port { 143 rgb_panel: endpoint { 144 remote-endpoint = <&du_out_rgb>; 145 }; 146 }; 147 }; 148 149 reg_audio: regulator-audio { 150 compatible = "regulator-fixed"; 151 regulator-name = "audio-1.8V"; 152 regulator-min-microvolt = <1800000>; 153 regulator-max-microvolt = <1800000>; 154 gpio = <&gpio_exp4 1 GPIO_ACTIVE_HIGH>; 155 enable-active-high; 156 }; 157 158 reg_lcd: regulator-lcd { 159 compatible = "regulator-fixed"; 160 regulator-name = "lcd_panel_pwr"; 161 regulator-min-microvolt = <3300000>; 162 regulator-max-microvolt = <3300000>; 163 gpio = <&gpio_exp1 1 GPIO_ACTIVE_HIGH>; 164 enable-active-high; 165 }; 166 167 reg_lcd_reset: regulator-lcd-reset { 168 compatible = "regulator-fixed"; 169 regulator-name = "nLCD_RESET"; 170 regulator-min-microvolt = <3300000>; 171 regulator-max-microvolt = <3300000>; 172 gpio = <&gpio5 3 GPIO_ACTIVE_HIGH>; 173 enable-active-high; 174 vin-supply = <®_lcd>; 175 }; 176 177 reg_cam0: regulator-cam0 { 178 compatible = "regulator-fixed"; 179 regulator-name = "reg_cam0"; 180 regulator-min-microvolt = <1800000>; 181 regulator-max-microvolt = <1800000>; 182 gpio = <&gpio_exp2 2 GPIO_ACTIVE_HIGH>; 183 enable-active-high; 184 }; 185 186 reg_cam1: regulator-cam1 { 187 compatible = "regulator-fixed"; 188 regulator-name = "reg_cam1"; 189 regulator-min-microvolt = <1800000>; 190 regulator-max-microvolt = <1800000>; 191 gpio = <&gpio_exp2 5 GPIO_ACTIVE_HIGH>; 192 enable-active-high; 193 startup-delay-us = <100000>; 194 }; 195 196 sound_card { 197 compatible = "audio-graph-card"; 198 label = "rcar-sound"; 199 dais = <&rsnd_port0>, <&rsnd_port1>; 200 widgets = "Microphone", "Mic Jack", 201 "Line", "Line In Jack", 202 "Headphone", "Headphone Jack"; 203 mic-det-gpio = <&gpio0 2 GPIO_ACTIVE_LOW>; 204 routing = "Headphone Jack", "HPOUTL", 205 "Headphone Jack", "HPOUTR", 206 "IN3R", "MICBIAS", 207 "Mic Jack", "IN3R"; 208 }; 209 210 vccq_sdhi0: regulator-vccq-sdhi0 { 211 compatible = "regulator-gpio"; 212 regulator-name = "SDHI0 VccQ"; 213 regulator-min-microvolt = <1800000>; 214 regulator-max-microvolt = <3300000>; 215 gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>; 216 gpios-states = <1>; 217 states = <3300000 1>, <1800000 0>; 218 }; 219 220 /* External DU dot clocks */ 221 x302_clk: x302-clock { 222 compatible = "fixed-clock"; 223 #clock-cells = <0>; 224 clock-frequency = <33000000>; 225 }; 226 227 x304_clk: x304-clock { 228 compatible = "fixed-clock"; 229 #clock-cells = <0>; 230 clock-frequency = <25000000>; 231 }; 232 233 connector { 234 compatible = "usb-c-connector"; 235 label = "USB-C"; 236 data-role = "dual"; 237 238 ports { 239 #address-cells = <1>; 240 #size-cells = <0>; 241 port@0 { 242 reg = <0>; 243 hs_ep: endpoint { 244 remote-endpoint = <&usb3_hs_ep>; 245 }; 246 }; 247 port@1 { 248 reg = <1>; 249 ss_ep: endpoint { 250 remote-endpoint = <&hd3ss3220_in_ep>; 251 }; 252 }; 253 }; 254 }; 255}; 256 257&audio_clk_b { 258 clock-frequency = <22579200>; 259}; 260 261&can0 { 262 pinctrl-0 = <&can0_pins>; 263 pinctrl-names = "default"; 264 renesas,can-clock-select = <0x0>; 265 status = "okay"; 266}; 267 268&can1 { 269 pinctrl-0 = <&can1_pins>; 270 pinctrl-names = "default"; 271 renesas,can-clock-select = <0x0>; 272 status = "okay"; 273}; 274 275&du { 276 ports { 277 port@0 { 278 du_out_rgb: endpoint { 279 remote-endpoint = <&rgb_panel>; 280 }; 281 }; 282 }; 283}; 284 285&ehci0 { 286 dr_mode = "otg"; 287 status = "okay"; 288 clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&usb2_clksel>, <&versaclock5 3>; 289}; 290 291&ehci1 { 292 status = "okay"; 293 clocks = <&cpg CPG_MOD 703>, <&cpg CPG_MOD 704>, <&usb2_clksel>, <&versaclock5 3>; 294}; 295 296&hdmi0 { 297 status = "okay"; 298 ports { 299 #address-cells = <1>; 300 #size-cells = <0>; 301 port@0 { 302 reg = <0>; 303 dw_hdmi0_in: endpoint { 304 remote-endpoint = <&du_out_hdmi0>; 305 }; 306 }; 307 port@1 { 308 reg = <1>; 309 rcar_dw_hdmi0_out: endpoint { 310 remote-endpoint = <&hdmi0_con>; 311 }; 312 }; 313 port@2 { 314 reg = <2>; 315 dw_hdmi0_snd_in: endpoint { 316 remote-endpoint = <&rsnd_endpoint1>; 317 }; 318 }; 319 }; 320}; 321 322&hscif1 { 323 pinctrl-0 = <&hscif1_pins>; 324 pinctrl-names = "default"; 325 uart-has-rtscts; 326 status = "okay"; 327}; 328 329&hsusb { 330 dr_mode = "otg"; 331 status = "okay"; 332}; 333 334&i2c2 { 335 status = "okay"; 336 clock-frequency = <400000>; 337 pinctrl-0 = <&i2c2_pins>; 338 pinctrl-names = "default"; 339 340 gpio_exp2: gpio@21 { 341 compatible = "onnn,pca9654"; 342 reg = <0x21>; 343 gpio-controller; 344 #gpio-cells = <2>; 345 }; 346 347 gpio_exp3: gpio@22 { 348 compatible = "onnn,pca9654"; 349 reg = <0x22>; 350 gpio-controller; 351 #gpio-cells = <2>; 352 }; 353 354 gpio_exp4: gpio@23 { 355 compatible = "onnn,pca9654"; 356 reg = <0x23>; 357 gpio-controller; 358 #gpio-cells = <2>; 359 }; 360 361 versaclock6_bb: clock-controller@6a { 362 compatible = "idt,5p49v6965"; 363 reg = <0x6a>; 364 #clock-cells = <1>; 365 clocks = <&x304_clk>; 366 clock-names = "xin"; 367 368 assigned-clocks = <&versaclock6_bb 1>, <&versaclock6_bb 2>, 369 <&versaclock6_bb 3>, <&versaclock6_bb 4>; 370 assigned-clock-rates = <24000000>, <24000000>, <24000000>, 371 <24576000>; 372 373 OUT1 { 374 idt,mode = <VC5_CMOS>; 375 idt,voltage-microvolt = <1800000>; 376 idt,slew-percent = <100>; 377 }; 378 379 OUT2 { 380 idt,mode = <VC5_CMOS>; 381 idt,voltage-microvolt = <1800000>; 382 idt,slew-percent = <100>; 383 }; 384 385 OUT3 { 386 idt,mode = <VC5_CMOS>; 387 idt,voltage-microvolt = <3300000>; 388 idt,slew-percent = <100>; 389 }; 390 391 OUT4 { 392 idt,mode = <VC5_CMOS>; 393 idt,voltage-microvolt = <3300000>; 394 idt,slew-percent = <100>; 395 }; 396 }; 397}; 398 399&i2c0 { 400 status = "okay"; 401 clock-frequency = <400000>; 402 403 pinctrl-0 = <&i2c0_pins>; 404 pinctrl-names = "default"; 405}; 406 407&i2c5 { 408 status = "okay"; 409 clock-frequency = <400000>; 410 pinctrl-0 = <&i2c5_pins>; 411 pinctrl-names = "default"; 412 413 codec: wm8962@1a { 414 compatible = "wlf,wm8962"; 415 reg = <0x1a>; 416 clocks = <&versaclock6_bb 3>; 417 DCVDD-supply = <®_audio>; 418 DBVDD-supply = <®_audio>; 419 AVDD-supply = <®_audio>; 420 CPVDD-supply = <®_audio>; 421 MICVDD-supply = <®_audio>; 422 PLLVDD-supply = <®_audio>; 423 SPKVDD1-supply = <®_audio>; 424 SPKVDD2-supply = <®_audio>; 425 gpio-cfg = < 426 0x0000 /* 0:Default */ 427 0x0000 /* 1:Default */ 428 0x0000 /* 2:Default */ 429 0x0000 /* 3:Default */ 430 0x0000 /* 4:Default */ 431 0x0000 /* 5:Default */ 432 >; 433 port { 434 wm8962_endpoint: endpoint { 435 remote-endpoint = <&rsnd_endpoint0>; 436 }; 437 }; 438 }; 439 440 /* 0 - lcd_reset */ 441 /* 1 - lcd_pwr */ 442 /* 2 - lcd_select */ 443 /* 3 - backlight-enable */ 444 /* 4 - Touch_shdwn */ 445 /* 5 - LCD_H_pol */ 446 /* 6 - lcd_V_pol */ 447 gpio_exp1: gpio@20 { 448 compatible = "onnn,pca9654"; 449 reg = <0x20>; 450 gpio-controller; 451 #gpio-cells = <2>; 452 }; 453 454 touchscreen@26 { 455 compatible = "ilitek,ili2117"; 456 reg = <0x26>; 457 interrupt-parent = <&gpio5>; 458 interrupts = <9 IRQ_TYPE_EDGE_RISING>; 459 wakeup-source; 460 }; 461 462 hd3ss3220@47 { 463 compatible = "ti,hd3ss3220"; 464 reg = <0x47>; 465 interrupt-parent = <&gpio6>; 466 interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 467 468 ports { 469 #address-cells = <1>; 470 #size-cells = <0>; 471 port@0 { 472 reg = <0>; 473 hd3ss3220_in_ep: endpoint { 474 remote-endpoint = <&ss_ep>; 475 }; 476 }; 477 port@1 { 478 reg = <1>; 479 hd3ss3220_out_ep: endpoint { 480 remote-endpoint = <&usb3_role_switch>; 481 }; 482 }; 483 }; 484 }; 485}; 486 487&lvds0 { 488 status = "okay"; 489 490 ports { 491 port@1 { 492 lvds0_out: endpoint { 493 remote-endpoint = <&panel_in>; 494 }; 495 }; 496 }; 497}; 498 499&msiof1 { 500 pinctrl-0 = <&msiof1_pins>; 501 pinctrl-names = "default"; 502 status = "okay"; 503 cs-gpios = <&gpio3 10 GPIO_ACTIVE_LOW>; 504}; 505 506&ohci0 { 507 dr_mode = "otg"; 508 status = "okay"; 509}; 510 511&ohci1 { 512 status = "okay"; 513}; 514 515&pciec0 { 516 status = "okay"; 517}; 518 519&pciec1 { 520 status = "okay"; 521}; 522 523&pcie_bus_clk { 524 clock-frequency = <100000000>; 525}; 526 527&pfc { 528 can0_pins: can0 { 529 groups = "can0_data_a"; 530 function = "can0"; 531 }; 532 533 can1_pins: can1 { 534 groups = "can1_data"; 535 function = "can1"; 536 }; 537 538 du_pins: du { 539 groups = "du_rgb888", "du_sync", "du_clk_out_1", "du_disp"; 540 function = "du"; 541 }; 542 543 i2c2_pins: i2c2 { 544 groups = "i2c2_a"; 545 function = "i2c2"; 546 }; 547 548 i2c5_pins: i2c5 { 549 groups = "i2c5"; 550 function = "i2c5"; 551 }; 552 553 led_pins: leds { 554 /* GP_0_4 , AVS1, AVS2, GP_7_3 */ 555 pins = "GP_0_4", "GP_7_0", "GP_7_1", "GP_7_3"; 556 bias-pull-down; 557 }; 558 559 msiof1_pins: msiof1 { 560 groups = "msiof1_clk_g", "msiof1_rxd_g", "msiof1_txd_g"; 561 function = "msiof1"; 562 }; 563 564 pwm0_pins: pwm0 { 565 groups = "pwm0"; 566 function = "pwm0"; 567 }; 568 569 pwm2_pins: pwm2 { 570 groups = "pwm2_a"; 571 function = "pwm2"; 572 }; 573 574 sdhi0_pins: sd0 { 575 groups = "sdhi0_data4", "sdhi0_ctrl"; 576 function = "sdhi0"; 577 power-source = <3300>; 578 }; 579 580 sdhi0_pins_uhs: sd0_uhs { 581 groups = "sdhi0_data4", "sdhi0_ctrl"; 582 function = "sdhi0"; 583 power-source = <1800>; 584 }; 585 586 sound_pins: sound { 587 groups = "ssi01239_ctrl", "ssi0_data", "ssi1_data_a"; 588 function = "ssi"; 589 }; 590 591 sound_clk_pins: sound_clk { 592 groups = "audio_clk_a_a", "audio_clk_b_a"; 593 function = "audio_clk"; 594 }; 595 596 usb0_pins: usb0 { 597 mux { 598 groups = "usb0"; 599 function = "usb0"; 600 }; 601 }; 602 603 usb1_pins: usb1 { 604 mux { 605 groups = "usb1"; 606 function = "usb1"; 607 }; 608 }; 609 610 usb30_pins: usb30 { 611 mux { 612 groups = "usb30"; 613 function = "usb30"; 614 }; 615 }; 616}; 617 618&pwm0 { 619 pinctrl-0 = <&pwm0_pins>; 620 pinctrl-names = "default"; 621 status = "okay"; 622}; 623 624&pwm2 { 625 pinctrl-0 = <&pwm2_pins>; 626 pinctrl-names = "default"; 627 status = "okay"; 628}; 629 630&rcar_sound { 631 pinctrl-0 = <&sound_pins>, <&sound_clk_pins>; 632 pinctrl-names = "default"; 633 634 /* Single DAI */ 635 #sound-dai-cells = <0>; 636 637 /* audio_clkout0/1/2/3 */ 638 #clock-cells = <1>; 639 clock-frequency = <11289600>; 640 641 status = "okay"; 642 643 ports { 644 #address-cells = <1>; 645 #size-cells = <0>; 646 rsnd_port0: port@0 { 647 reg = <0>; 648 rsnd_endpoint0: endpoint { 649 remote-endpoint = <&wm8962_endpoint>; 650 651 dai-format = "i2s"; 652 bitclock-master = <&rsnd_endpoint0>; 653 frame-master = <&rsnd_endpoint0>; 654 655 playback = <&ssi1>, <&dvc1>, <&src1>; 656 capture = <&ssi0>; 657 }; 658 }; 659 rsnd_port1: port@1 { 660 reg = <0x01>; 661 rsnd_endpoint1: endpoint { 662 remote-endpoint = <&dw_hdmi0_snd_in>; 663 664 dai-format = "i2s"; 665 bitclock-master = <&rsnd_endpoint1>; 666 frame-master = <&rsnd_endpoint1>; 667 668 playback = <&ssi2>; 669 }; 670 }; 671 }; 672}; 673 674&rwdt { 675 status = "okay"; 676 timeout-sec = <60>; 677}; 678 679&scif0 { 680 pinctrl-0 = <&scif0_pins>; 681 pinctrl-names = "default"; 682 status = "okay"; 683}; 684 685&scif5 { 686 pinctrl-0 = <&scif5_pins>; 687 pinctrl-names = "default"; 688 status = "okay"; 689}; 690 691&scif_clk { 692 clock-frequency = <14745600>; 693}; 694 695&sdhi0 { 696 pinctrl-0 = <&sdhi0_pins>; 697 pinctrl-1 = <&sdhi0_pins_uhs>; 698 pinctrl-names = "default", "state_uhs"; 699 vmmc-supply = <®_3p3v>; 700 vqmmc-supply = <&vccq_sdhi0>; 701 cd-gpios = <&gpio3 12 GPIO_ACTIVE_LOW>; 702 bus-width = <4>; 703 sd-uhs-sdr50; 704 sd-uhs-sdr104; 705 status = "okay"; 706}; 707 708&ssi1 { 709 shared-pin; 710}; 711 712&tmu0 { 713 status = "okay"; 714}; 715 716&tmu1 { 717 status = "okay"; 718}; 719 720&tmu2 { 721 status = "okay"; 722}; 723 724&tmu3 { 725 status = "okay"; 726}; 727 728&tmu4 { 729 status = "okay"; 730}; 731 732&usb2_phy0 { 733 pinctrl-0 = <&usb0_pins>; 734 pinctrl-names = "default"; 735 status = "okay"; 736}; 737 738&usb2_phy1 { 739 pinctrl-0 = <&usb1_pins>; 740 pinctrl-names = "default"; 741 status = "okay"; 742}; 743 744&usb3_peri0 { 745 companion = <&xhci0>; 746 status = "okay"; 747 usb-role-switch; 748 749 ports { 750 #address-cells = <1>; 751 #size-cells = <0>; 752 port@0 { 753 reg = <0>; 754 usb3_hs_ep: endpoint { 755 remote-endpoint = <&hs_ep>; 756 }; 757 }; 758 port@1 { 759 reg = <1>; 760 usb3_role_switch: endpoint { 761 remote-endpoint = <&hd3ss3220_out_ep>; 762 }; 763 }; 764 }; 765}; 766 767&usb3_phy0 { 768 status = "okay"; 769}; 770 771&vin0 { 772 status = "okay"; 773}; 774&vin1 { 775 status = "okay"; 776}; 777&vin2 { 778 status = "okay"; 779}; 780&vin3 { 781 status = "okay"; 782}; 783&vin4 { 784 status = "okay"; 785}; 786&vin5 { 787 status = "okay"; 788}; 789&vin6 { 790 status = "okay"; 791}; 792&vin7 { 793 status = "okay"; 794}; 795 796&xhci0 797{ 798 pinctrl-0 = <&usb30_pins>; 799 pinctrl-names = "default"; 800 status = "okay"; 801}; 802