1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree Source for the Lager board 4 * 5 * Copyright (C) 2013-2014 Renesas Solutions Corp. 6 * Copyright (C) 2014 Cogent Embedded, Inc. 7 * Copyright (C) 2015-2016 Renesas Electronics Corporation 8 */ 9 10/* 11 * SSI-AK4643 12 * 13 * SW1: 1: AK4643 14 * 2: CN22 15 * 3: ADV7511 16 * 17 * This command is required when Playback/Capture 18 * 19 * amixer set "LINEOUT Mixer DACL" on 20 * amixer set "DVC Out" 100% 21 * amixer set "DVC In" 100% 22 * 23 * You can use Mute 24 * 25 * amixer set "DVC Out Mute" on 26 * amixer set "DVC In Mute" on 27 * 28 * You can use Volume Ramp 29 * 30 * amixer set "DVC Out Ramp Up Rate" "0.125 dB/64 steps" 31 * amixer set "DVC Out Ramp Down Rate" "0.125 dB/512 steps" 32 * amixer set "DVC Out Ramp" on 33 * aplay xxx.wav & 34 * amixer set "DVC Out" 80% // Volume Down 35 * amixer set "DVC Out" 100% // Volume Up 36 */ 37 38/dts-v1/; 39#include "r8a7790.dtsi" 40#include <dt-bindings/gpio/gpio.h> 41#include <dt-bindings/input/input.h> 42 43/ { 44 model = "Lager"; 45 compatible = "renesas,lager", "renesas,r8a7790"; 46 47 aliases { 48 serial0 = &scif0; 49 serial1 = &scifa1; 50 i2c8 = &gpioi2c1; 51 i2c10 = &i2cexio0; 52 i2c11 = &i2cexio1; 53 }; 54 55 chosen { 56 bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp"; 57 stdout-path = "serial0:115200n8"; 58 }; 59 60 memory@40000000 { 61 device_type = "memory"; 62 reg = <0 0x40000000 0 0x40000000>; 63 }; 64 65 memory@140000000 { 66 device_type = "memory"; 67 reg = <1 0x40000000 0 0xc0000000>; 68 }; 69 70 lbsc { 71 #address-cells = <1>; 72 #size-cells = <1>; 73 }; 74 75 keyboard { 76 compatible = "gpio-keys"; 77 78 one { 79 linux,code = <KEY_1>; 80 label = "SW2-1"; 81 wakeup-source; 82 debounce-interval = <20>; 83 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; 84 }; 85 two { 86 linux,code = <KEY_2>; 87 label = "SW2-2"; 88 wakeup-source; 89 debounce-interval = <20>; 90 gpios = <&gpio1 24 GPIO_ACTIVE_LOW>; 91 }; 92 three { 93 linux,code = <KEY_3>; 94 label = "SW2-3"; 95 wakeup-source; 96 debounce-interval = <20>; 97 gpios = <&gpio1 26 GPIO_ACTIVE_LOW>; 98 }; 99 four { 100 linux,code = <KEY_4>; 101 label = "SW2-4"; 102 wakeup-source; 103 debounce-interval = <20>; 104 gpios = <&gpio1 28 GPIO_ACTIVE_LOW>; 105 }; 106 }; 107 108 leds { 109 compatible = "gpio-leds"; 110 led6 { 111 gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>; 112 }; 113 led7 { 114 gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>; 115 }; 116 led8 { 117 gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>; 118 }; 119 }; 120 121 fixedregulator3v3: regulator-3v3 { 122 compatible = "regulator-fixed"; 123 regulator-name = "fixed-3.3V"; 124 regulator-min-microvolt = <3300000>; 125 regulator-max-microvolt = <3300000>; 126 regulator-boot-on; 127 regulator-always-on; 128 }; 129 130 vcc_sdhi0: regulator-vcc-sdhi0 { 131 compatible = "regulator-fixed"; 132 133 regulator-name = "SDHI0 Vcc"; 134 regulator-min-microvolt = <3300000>; 135 regulator-max-microvolt = <3300000>; 136 137 gpio = <&gpio5 24 GPIO_ACTIVE_HIGH>; 138 enable-active-high; 139 }; 140 141 vccq_sdhi0: regulator-vccq-sdhi0 { 142 compatible = "regulator-gpio"; 143 144 regulator-name = "SDHI0 VccQ"; 145 regulator-min-microvolt = <1800000>; 146 regulator-max-microvolt = <3300000>; 147 148 gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; 149 gpios-states = <1>; 150 states = <3300000 1 151 1800000 0>; 152 }; 153 154 vcc_sdhi2: regulator-vcc-sdhi2 { 155 compatible = "regulator-fixed"; 156 157 regulator-name = "SDHI2 Vcc"; 158 regulator-min-microvolt = <3300000>; 159 regulator-max-microvolt = <3300000>; 160 161 gpio = <&gpio5 25 GPIO_ACTIVE_HIGH>; 162 enable-active-high; 163 }; 164 165 vccq_sdhi2: regulator-vccq-sdhi2 { 166 compatible = "regulator-gpio"; 167 168 regulator-name = "SDHI2 VccQ"; 169 regulator-min-microvolt = <1800000>; 170 regulator-max-microvolt = <3300000>; 171 172 gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>; 173 gpios-states = <1>; 174 states = <3300000 1 175 1800000 0>; 176 }; 177 178 audio_clock: audio_clock { 179 compatible = "fixed-clock"; 180 #clock-cells = <0>; 181 clock-frequency = <11289600>; 182 }; 183 184 rsnd_ak4643: sound { 185 compatible = "simple-audio-card"; 186 187 simple-audio-card,format = "left_j"; 188 simple-audio-card,bitclock-master = <&sndcodec>; 189 simple-audio-card,frame-master = <&sndcodec>; 190 191 sndcpu: simple-audio-card,cpu { 192 sound-dai = <&rcar_sound>; 193 }; 194 195 sndcodec: simple-audio-card,codec { 196 sound-dai = <&ak4643>; 197 clocks = <&audio_clock>; 198 }; 199 }; 200 201 vga-encoder { 202 compatible = "adi,adv7123"; 203 204 ports { 205 #address-cells = <1>; 206 #size-cells = <0>; 207 208 port@0 { 209 reg = <0>; 210 adv7123_in: endpoint { 211 remote-endpoint = <&du_out_rgb>; 212 }; 213 }; 214 port@1 { 215 reg = <1>; 216 adv7123_out: endpoint { 217 remote-endpoint = <&vga_in>; 218 }; 219 }; 220 }; 221 }; 222 223 vga { 224 compatible = "vga-connector"; 225 226 port { 227 vga_in: endpoint { 228 remote-endpoint = <&adv7123_out>; 229 }; 230 }; 231 }; 232 233 hdmi-in { 234 compatible = "hdmi-connector"; 235 type = "a"; 236 237 port { 238 hdmi_con_in: endpoint { 239 remote-endpoint = <&adv7612_in>; 240 }; 241 }; 242 }; 243 244 hdmi-out { 245 compatible = "hdmi-connector"; 246 type = "a"; 247 248 port { 249 hdmi_con_out: endpoint { 250 remote-endpoint = <&adv7511_out>; 251 }; 252 }; 253 }; 254 255 x2_clk: x2-clock { 256 compatible = "fixed-clock"; 257 #clock-cells = <0>; 258 clock-frequency = <148500000>; 259 }; 260 261 x13_clk: x13-clock { 262 compatible = "fixed-clock"; 263 #clock-cells = <0>; 264 clock-frequency = <148500000>; 265 }; 266 267 gpioi2c1: i2c-8 { 268 #address-cells = <1>; 269 #size-cells = <0>; 270 compatible = "i2c-gpio"; 271 status = "disabled"; 272 gpios = <&gpio1 17 GPIO_ACTIVE_HIGH /* sda */ 273 &gpio1 16 GPIO_ACTIVE_HIGH /* scl */ 274 >; 275 i2c-gpio,delay-us = <5>; 276 }; 277 278 /* 279 * IIC0/I2C0 is routed to EXIO connector A, pins 114 (SCL) + 116 (SDA) only. 280 * We use the I2C demuxer, so the desired IP core can be selected at runtime 281 * depending on the use case (e.g. DMA with IIC0 or slave support with I2C0). 282 * Note: For testing the I2C slave feature, it is convenient to connect this 283 * bus with IIC3 on pins 110 (SCL) + 112 (SDA), select I2C0 at runtime, and 284 * instantiate the slave device at runtime according to the documentation. 285 * You can then communicate with the slave via IIC3. 286 * 287 * IIC0/I2C0 does not appear to support fallback to GPIO. 288 */ 289 i2cexio0: i2c-10 { 290 compatible = "i2c-demux-pinctrl"; 291 i2c-parent = <&iic0>, <&i2c0>; 292 i2c-bus-name = "i2c-exio0"; 293 #address-cells = <1>; 294 #size-cells = <0>; 295 }; 296 297 /* 298 * IIC1/I2C1 is routed to EXIO connector A, pins 78 (SCL) + 80 (SDA). 299 * This is similar to the arangement described for i2cexio0 (above) 300 * with a fallback to GPIO also provided. 301 */ 302 i2cexio1: i2c-11 { 303 compatible = "i2c-demux-pinctrl"; 304 i2c-parent = <&iic1>, <&i2c1>, <&gpioi2c1>; 305 i2c-bus-name = "i2c-exio1"; 306 #address-cells = <1>; 307 #size-cells = <0>; 308 }; 309}; 310 311&du { 312 pinctrl-0 = <&du_pins>; 313 pinctrl-names = "default"; 314 status = "okay"; 315 316 clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>, <&cpg CPG_MOD 722>, 317 <&cpg CPG_MOD 726>, <&cpg CPG_MOD 725>, 318 <&x13_clk>, <&x2_clk>; 319 clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1", 320 "dclkin.0", "dclkin.1"; 321 322 ports { 323 port@0 { 324 endpoint { 325 remote-endpoint = <&adv7123_in>; 326 }; 327 }; 328 port@1 { 329 endpoint { 330 remote-endpoint = <&adv7511_in>; 331 }; 332 }; 333 port@2 { 334 lvds_connector: endpoint { 335 }; 336 }; 337 }; 338}; 339 340&extal_clk { 341 clock-frequency = <20000000>; 342}; 343 344&pfc { 345 pinctrl-0 = <&scif_clk_pins>; 346 pinctrl-names = "default"; 347 348 du_pins: du { 349 groups = "du_rgb666", "du_sync_1", "du_clk_out_0"; 350 function = "du"; 351 }; 352 353 scif0_pins: scif0 { 354 groups = "scif0_data"; 355 function = "scif0"; 356 }; 357 358 scif_clk_pins: scif_clk { 359 groups = "scif_clk"; 360 function = "scif_clk"; 361 }; 362 363 ether_pins: ether { 364 groups = "eth_link", "eth_mdio", "eth_rmii"; 365 function = "eth"; 366 }; 367 368 phy1_pins: phy1 { 369 groups = "intc_irq0"; 370 function = "intc"; 371 }; 372 373 scifa1_pins: scifa1 { 374 groups = "scifa1_data"; 375 function = "scifa1"; 376 }; 377 378 sdhi0_pins: sd0 { 379 groups = "sdhi0_data4", "sdhi0_ctrl"; 380 function = "sdhi0"; 381 power-source = <3300>; 382 }; 383 384 sdhi0_pins_uhs: sd0_uhs { 385 groups = "sdhi0_data4", "sdhi0_ctrl"; 386 function = "sdhi0"; 387 power-source = <1800>; 388 }; 389 390 sdhi2_pins: sd2 { 391 groups = "sdhi2_data4", "sdhi2_ctrl"; 392 function = "sdhi2"; 393 power-source = <3300>; 394 }; 395 396 sdhi2_pins_uhs: sd2_uhs { 397 groups = "sdhi2_data4", "sdhi2_ctrl"; 398 function = "sdhi2"; 399 power-source = <1800>; 400 }; 401 402 mmc1_pins: mmc1 { 403 groups = "mmc1_data8", "mmc1_ctrl"; 404 function = "mmc1"; 405 }; 406 407 qspi_pins: qspi { 408 groups = "qspi_ctrl", "qspi_data4"; 409 function = "qspi"; 410 }; 411 412 msiof1_pins: msiof1 { 413 groups = "msiof1_clk", "msiof1_sync", "msiof1_rx", 414 "msiof1_tx"; 415 function = "msiof1"; 416 }; 417 418 i2c0_pins: i2c0 { 419 groups = "i2c0"; 420 function = "i2c0"; 421 }; 422 423 iic0_pins: iic0 { 424 groups = "iic0"; 425 function = "iic0"; 426 }; 427 428 i2c1_pins: i2c1 { 429 groups = "i2c1"; 430 function = "i2c1"; 431 }; 432 433 iic1_pins: iic1 { 434 groups = "iic1"; 435 function = "iic1"; 436 }; 437 438 iic2_pins: iic2 { 439 groups = "iic2"; 440 function = "iic2"; 441 }; 442 443 iic3_pins: iic3 { 444 groups = "iic3"; 445 function = "iic3"; 446 }; 447 448 hsusb_pins: hsusb { 449 groups = "usb0_ovc_vbus"; 450 function = "usb0"; 451 }; 452 453 usb0_pins: usb0 { 454 groups = "usb0"; 455 function = "usb0"; 456 }; 457 458 usb1_pins: usb1 { 459 groups = "usb1"; 460 function = "usb1"; 461 }; 462 463 usb2_pins: usb2 { 464 groups = "usb2"; 465 function = "usb2"; 466 }; 467 468 vin0_pins: vin0 { 469 groups = "vin0_data24", "vin0_sync", "vin0_clkenb", "vin0_clk"; 470 function = "vin0"; 471 }; 472 473 vin1_pins: vin1 { 474 groups = "vin1_data8", "vin1_clk"; 475 function = "vin1"; 476 }; 477 478 sound_pins: sound { 479 groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data"; 480 function = "ssi"; 481 }; 482 483 sound_clk_pins: sound_clk { 484 groups = "audio_clk_a"; 485 function = "audio_clk"; 486 }; 487}; 488 489ðer { 490 pinctrl-0 = <ðer_pins &phy1_pins>; 491 pinctrl-names = "default"; 492 493 phy-handle = <&phy1>; 494 renesas,ether-link-active-low; 495 status = "okay"; 496 497 phy1: ethernet-phy@1 { 498 reg = <1>; 499 interrupt-parent = <&irqc0>; 500 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 501 micrel,led-mode = <1>; 502 }; 503}; 504 505&cmt0 { 506 status = "okay"; 507}; 508 509&mmcif1 { 510 pinctrl-0 = <&mmc1_pins>; 511 pinctrl-names = "default"; 512 513 vmmc-supply = <&fixedregulator3v3>; 514 bus-width = <8>; 515 non-removable; 516 status = "okay"; 517}; 518 519&sata1 { 520 status = "okay"; 521}; 522 523&qspi { 524 pinctrl-0 = <&qspi_pins>; 525 pinctrl-names = "default"; 526 527 status = "okay"; 528 529 flash: flash@0 { 530 compatible = "spansion,s25fl512s", "jedec,spi-nor"; 531 reg = <0>; 532 spi-max-frequency = <30000000>; 533 spi-tx-bus-width = <4>; 534 spi-rx-bus-width = <4>; 535 spi-cpha; 536 spi-cpol; 537 m25p,fast-read; 538 539 partitions { 540 compatible = "fixed-partitions"; 541 #address-cells = <1>; 542 #size-cells = <1>; 543 544 partition@0 { 545 label = "loader"; 546 reg = <0x00000000 0x00040000>; 547 read-only; 548 }; 549 partition@40000 { 550 label = "user"; 551 reg = <0x00040000 0x00400000>; 552 read-only; 553 }; 554 partition@440000 { 555 label = "flash"; 556 reg = <0x00440000 0x03bc0000>; 557 }; 558 }; 559 }; 560}; 561 562&scif0 { 563 pinctrl-0 = <&scif0_pins>; 564 pinctrl-names = "default"; 565 566 status = "okay"; 567}; 568 569&scifa1 { 570 pinctrl-0 = <&scifa1_pins>; 571 pinctrl-names = "default"; 572 573 status = "okay"; 574}; 575 576&scif_clk { 577 clock-frequency = <14745600>; 578}; 579 580&msiof1 { 581 pinctrl-0 = <&msiof1_pins>; 582 pinctrl-names = "default"; 583 584 status = "okay"; 585 586 pmic: pmic@0 { 587 compatible = "renesas,r2a11302ft"; 588 reg = <0>; 589 spi-max-frequency = <6000000>; 590 spi-cpol; 591 spi-cpha; 592 }; 593}; 594 595&sdhi0 { 596 pinctrl-0 = <&sdhi0_pins>; 597 pinctrl-1 = <&sdhi0_pins_uhs>; 598 pinctrl-names = "default", "state_uhs"; 599 600 vmmc-supply = <&vcc_sdhi0>; 601 vqmmc-supply = <&vccq_sdhi0>; 602 cd-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>; 603 sd-uhs-sdr50; 604 sd-uhs-sdr104; 605 status = "okay"; 606}; 607 608&sdhi2 { 609 pinctrl-0 = <&sdhi2_pins>; 610 pinctrl-1 = <&sdhi2_pins_uhs>; 611 pinctrl-names = "default", "state_uhs"; 612 613 vmmc-supply = <&vcc_sdhi2>; 614 vqmmc-supply = <&vccq_sdhi2>; 615 cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>; 616 sd-uhs-sdr50; 617 status = "okay"; 618}; 619 620&cpu0 { 621 cpu0-supply = <&vdd_dvfs>; 622}; 623 624&i2c0 { 625 pinctrl-0 = <&i2c0_pins>; 626 pinctrl-names = "i2c-exio0"; 627}; 628 629&iic0 { 630 pinctrl-0 = <&iic0_pins>; 631 pinctrl-names = "i2c-exio0"; 632}; 633 634&i2c1 { 635 pinctrl-0 = <&i2c1_pins>; 636 pinctrl-names = "i2c-exio1"; 637}; 638 639&iic1 { 640 pinctrl-0 = <&iic1_pins>; 641 pinctrl-names = "i2c-exio1"; 642}; 643 644&iic2 { 645 status = "okay"; 646 pinctrl-0 = <&iic2_pins>; 647 pinctrl-names = "default"; 648 649 clock-frequency = <100000>; 650 651 ak4643: codec@12 { 652 compatible = "asahi-kasei,ak4643"; 653 #sound-dai-cells = <0>; 654 reg = <0x12>; 655 }; 656 657 composite-in@20 { 658 compatible = "adi,adv7180"; 659 reg = <0x20>; 660 remote = <&vin1>; 661 662 port { 663 adv7180: endpoint { 664 bus-width = <8>; 665 remote-endpoint = <&vin1ep0>; 666 }; 667 }; 668 }; 669 670 hdmi@39 { 671 compatible = "adi,adv7511w"; 672 reg = <0x39>; 673 interrupt-parent = <&gpio1>; 674 interrupts = <15 IRQ_TYPE_LEVEL_LOW>; 675 676 adi,input-depth = <8>; 677 adi,input-colorspace = "rgb"; 678 adi,input-clock = "1x"; 679 adi,input-style = <1>; 680 adi,input-justification = "evenly"; 681 682 ports { 683 #address-cells = <1>; 684 #size-cells = <0>; 685 686 port@0 { 687 reg = <0>; 688 adv7511_in: endpoint { 689 remote-endpoint = <&du_out_lvds0>; 690 }; 691 }; 692 693 port@1 { 694 reg = <1>; 695 adv7511_out: endpoint { 696 remote-endpoint = <&hdmi_con_out>; 697 }; 698 }; 699 }; 700 }; 701 702 hdmi-in@4c { 703 compatible = "adi,adv7612"; 704 reg = <0x4c>; 705 interrupt-parent = <&gpio1>; 706 interrupts = <20 IRQ_TYPE_LEVEL_LOW>; 707 default-input = <0>; 708 709 ports { 710 #address-cells = <1>; 711 #size-cells = <0>; 712 713 port@0 { 714 reg = <0>; 715 adv7612_in: endpoint { 716 remote-endpoint = <&hdmi_con_in>; 717 }; 718 }; 719 720 port@2 { 721 reg = <2>; 722 adv7612_out: endpoint { 723 remote-endpoint = <&vin0ep2>; 724 }; 725 }; 726 }; 727 }; 728}; 729 730&iic3 { 731 pinctrl-names = "default"; 732 pinctrl-0 = <&iic3_pins>; 733 status = "okay"; 734 735 pmic@58 { 736 compatible = "dlg,da9063"; 737 reg = <0x58>; 738 interrupt-parent = <&irqc0>; 739 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; 740 interrupt-controller; 741 742 rtc { 743 compatible = "dlg,da9063-rtc"; 744 }; 745 746 wdt { 747 compatible = "dlg,da9063-watchdog"; 748 }; 749 }; 750 751 vdd_dvfs: regulator@68 { 752 compatible = "dlg,da9210"; 753 reg = <0x68>; 754 interrupt-parent = <&irqc0>; 755 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; 756 757 regulator-min-microvolt = <1000000>; 758 regulator-max-microvolt = <1000000>; 759 regulator-boot-on; 760 regulator-always-on; 761 }; 762}; 763 764&pci0 { 765 status = "okay"; 766 pinctrl-0 = <&usb0_pins>; 767 pinctrl-names = "default"; 768}; 769 770&pci1 { 771 status = "okay"; 772 pinctrl-0 = <&usb1_pins>; 773 pinctrl-names = "default"; 774}; 775 776&xhci { 777 status = "okay"; 778 pinctrl-0 = <&usb2_pins>; 779 pinctrl-names = "default"; 780}; 781 782&pci2 { 783 status = "okay"; 784 pinctrl-0 = <&usb2_pins>; 785 pinctrl-names = "default"; 786}; 787 788&hsusb { 789 status = "okay"; 790 pinctrl-0 = <&hsusb_pins>; 791 pinctrl-names = "default"; 792 renesas,enable-gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>; 793}; 794 795&usbphy { 796 status = "okay"; 797}; 798 799/* HDMI video input */ 800&vin0 { 801 pinctrl-0 = <&vin0_pins>; 802 pinctrl-names = "default"; 803 804 status = "okay"; 805 806 port { 807 vin0ep2: endpoint { 808 remote-endpoint = <&adv7612_out>; 809 bus-width = <24>; 810 hsync-active = <0>; 811 vsync-active = <0>; 812 pclk-sample = <1>; 813 data-active = <1>; 814 }; 815 }; 816}; 817 818/* composite video input */ 819&vin1 { 820 pinctrl-0 = <&vin1_pins>; 821 pinctrl-names = "default"; 822 823 status = "okay"; 824 825 port { 826 #address-cells = <1>; 827 #size-cells = <0>; 828 829 vin1ep0: endpoint { 830 remote-endpoint = <&adv7180>; 831 bus-width = <8>; 832 }; 833 }; 834}; 835 836&rcar_sound { 837 pinctrl-0 = <&sound_pins &sound_clk_pins>; 838 pinctrl-names = "default"; 839 840 /* Single DAI */ 841 #sound-dai-cells = <0>; 842 843 status = "okay"; 844 845 rcar_sound,dai { 846 dai0 { 847 playback = <&ssi0 &src2 &dvc0>; 848 capture = <&ssi1 &src3 &dvc1>; 849 }; 850 }; 851}; 852 853&ssi1 { 854 shared-pin; 855}; 856