1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree Source for the SILK board 4 * 5 * Copyright (C) 2014 Renesas Electronics Corporation 6 * Copyright (C) 2014-2015 Renesas Solutions Corp. 7 * Copyright (C) 2014-2015 Cogent Embedded, Inc. 8 */ 9 10/* 11 * SSI-AK4643 12 * 13 * SW1: 2-1: AK4643 14 * 2-3: ADV7511 15 * 16 * This command is required before playback/capture: 17 * 18 * amixer set "LINEOUT Mixer DACL" on 19 */ 20 21/dts-v1/; 22#include "r8a7794.dtsi" 23#include <dt-bindings/gpio/gpio.h> 24#include <dt-bindings/input/input.h> 25 26/ { 27 model = "SILK"; 28 compatible = "renesas,silk", "renesas,r8a7794"; 29 30 aliases { 31 serial0 = &scif2; 32 i2c9 = &gpioi2c1; 33 i2c10 = &i2chdmi; 34 }; 35 36 chosen { 37 bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp"; 38 stdout-path = "serial0:115200n8"; 39 }; 40 41 memory@40000000 { 42 device_type = "memory"; 43 reg = <0 0x40000000 0 0x40000000>; 44 }; 45 46 gpio-keys { 47 compatible = "gpio-keys"; 48 49 key-3 { 50 gpios = <&gpio5 10 GPIO_ACTIVE_LOW>; 51 linux,code = <KEY_3>; 52 label = "SW3"; 53 wakeup-source; 54 debounce-interval = <20>; 55 }; 56 key-4 { 57 gpios = <&gpio5 11 GPIO_ACTIVE_LOW>; 58 linux,code = <KEY_4>; 59 label = "SW4"; 60 wakeup-source; 61 debounce-interval = <20>; 62 }; 63 key-6 { 64 gpios = <&gpio5 12 GPIO_ACTIVE_LOW>; 65 linux,code = <KEY_6>; 66 label = "SW6"; 67 wakeup-source; 68 debounce-interval = <20>; 69 }; 70 key-a { 71 gpios = <&gpio3 9 GPIO_ACTIVE_LOW>; 72 linux,code = <KEY_A>; 73 label = "SW12-1"; 74 wakeup-source; 75 debounce-interval = <20>; 76 }; 77 key-b { 78 gpios = <&gpio3 10 GPIO_ACTIVE_LOW>; 79 linux,code = <KEY_B>; 80 label = "SW12-2"; 81 wakeup-source; 82 debounce-interval = <20>; 83 }; 84 key-c { 85 gpios = <&gpio3 11 GPIO_ACTIVE_LOW>; 86 linux,code = <KEY_C>; 87 label = "SW12-3"; 88 wakeup-source; 89 debounce-interval = <20>; 90 }; 91 key-d { 92 gpios = <&gpio3 12 GPIO_ACTIVE_LOW>; 93 linux,code = <KEY_D>; 94 label = "SW12-4"; 95 wakeup-source; 96 debounce-interval = <20>; 97 }; 98 }; 99 100 d3_3v: regulator-d3-3v { 101 compatible = "regulator-fixed"; 102 regulator-name = "D3.3V"; 103 regulator-min-microvolt = <3300000>; 104 regulator-max-microvolt = <3300000>; 105 regulator-boot-on; 106 regulator-always-on; 107 }; 108 109 vcc_sdhi1: regulator-vcc-sdhi1 { 110 compatible = "regulator-fixed"; 111 112 regulator-name = "SDHI1 Vcc"; 113 regulator-min-microvolt = <3300000>; 114 regulator-max-microvolt = <3300000>; 115 116 gpio = <&gpio4 26 GPIO_ACTIVE_HIGH>; 117 enable-active-high; 118 }; 119 120 vccq_sdhi1: regulator-vccq-sdhi1 { 121 compatible = "regulator-gpio"; 122 123 regulator-name = "SDHI1 VccQ"; 124 regulator-min-microvolt = <1800000>; 125 regulator-max-microvolt = <3300000>; 126 127 gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>; 128 gpios-states = <1>; 129 states = <3300000 1 130 1800000 0>; 131 }; 132 133 vga-encoder { 134 compatible = "adi,adv7123"; 135 136 ports { 137 #address-cells = <1>; 138 #size-cells = <0>; 139 140 port@0 { 141 reg = <0>; 142 adv7123_in: endpoint { 143 remote-endpoint = <&du_out_rgb1>; 144 }; 145 }; 146 port@1 { 147 reg = <1>; 148 adv7123_out: endpoint { 149 remote-endpoint = <&vga_in>; 150 }; 151 }; 152 }; 153 }; 154 155 hdmi-out { 156 compatible = "hdmi-connector"; 157 type = "a"; 158 159 port { 160 hdmi_con: endpoint { 161 remote-endpoint = <&adv7511_out>; 162 }; 163 }; 164 }; 165 166 vga { 167 compatible = "vga-connector"; 168 169 port { 170 vga_in: endpoint { 171 remote-endpoint = <&adv7123_out>; 172 }; 173 }; 174 }; 175 176 x2_clk: x2-clock { 177 compatible = "fixed-clock"; 178 #clock-cells = <0>; 179 clock-frequency = <148500000>; 180 }; 181 182 x3_clk: x3-clock { 183 compatible = "fixed-clock"; 184 #clock-cells = <0>; 185 clock-frequency = <74250000>; 186 }; 187 188 x9_clk: audio_clock { 189 compatible = "fixed-clock"; 190 #clock-cells = <0>; 191 clock-frequency = <12288000>; 192 }; 193 194 sound { 195 compatible = "simple-audio-card"; 196 197 simple-audio-card,format = "left_j"; 198 simple-audio-card,bitclock-master = <&soundcodec>; 199 simple-audio-card,frame-master = <&soundcodec>; 200 201 simple-audio-card,cpu { 202 sound-dai = <&rcar_sound>; 203 }; 204 205 soundcodec: simple-audio-card,codec { 206 sound-dai = <&ak4643>; 207 clocks = <&x9_clk>; 208 }; 209 }; 210 211 gpioi2c1: i2c-9 { 212 #address-cells = <1>; 213 #size-cells = <0>; 214 compatible = "i2c-gpio"; 215 status = "disabled"; 216 scl-gpios = <&gpio4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; 217 sda-gpios = <&gpio4 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; 218 i2c-gpio,delay-us = <5>; 219 }; 220 221 /* 222 * A fallback to GPIO is provided for I2C1. 223 */ 224 i2chdmi: i2c-10 { 225 compatible = "i2c-demux-pinctrl"; 226 i2c-parent = <&i2c1>, <&gpioi2c1>; 227 i2c-bus-name = "i2c-hdmi"; 228 #address-cells = <1>; 229 #size-cells = <0>; 230 231 ak4643: codec@12 { 232 compatible = "asahi-kasei,ak4643"; 233 #sound-dai-cells = <0>; 234 reg = <0x12>; 235 }; 236 237 composite-in@20 { 238 compatible = "adi,adv7180"; 239 reg = <0x20>; 240 remote = <&vin0>; 241 242 port { 243 adv7180: endpoint { 244 bus-width = <8>; 245 remote-endpoint = <&vin0ep>; 246 }; 247 }; 248 }; 249 250 hdmi@39 { 251 compatible = "adi,adv7511w"; 252 reg = <0x39>; 253 interrupt-parent = <&gpio5>; 254 interrupts = <23 IRQ_TYPE_LEVEL_LOW>; 255 256 adi,input-depth = <8>; 257 adi,input-colorspace = "rgb"; 258 adi,input-clock = "1x"; 259 adi,input-style = <1>; 260 adi,input-justification = "evenly"; 261 262 ports { 263 #address-cells = <1>; 264 #size-cells = <0>; 265 266 port@0 { 267 reg = <0>; 268 adv7511_in: endpoint { 269 remote-endpoint = <&du_out_rgb0>; 270 }; 271 }; 272 273 port@1 { 274 reg = <1>; 275 adv7511_out: endpoint { 276 remote-endpoint = <&hdmi_con>; 277 }; 278 }; 279 }; 280 }; 281 282 eeprom@50 { 283 compatible = "renesas,r1ex24002", "atmel,24c02"; 284 reg = <0x50>; 285 pagesize = <16>; 286 }; 287 }; 288}; 289 290&extal_clk { 291 clock-frequency = <20000000>; 292}; 293 294&pfc { 295 pinctrl-0 = <&scif_clk_pins>; 296 pinctrl-names = "default"; 297 298 scif2_pins: scif2 { 299 groups = "scif2_data"; 300 function = "scif2"; 301 }; 302 303 scif_clk_pins: scif_clk { 304 groups = "scif_clk"; 305 function = "scif_clk"; 306 }; 307 308 ether_pins: ether { 309 groups = "eth_link", "eth_mdio", "eth_rmii"; 310 function = "eth"; 311 }; 312 313 phy1_pins: phy1 { 314 groups = "intc_irq8"; 315 function = "intc"; 316 }; 317 318 i2c1_pins: i2c1 { 319 groups = "i2c1"; 320 function = "i2c1"; 321 }; 322 323 mmcif0_pins: mmcif0 { 324 groups = "mmc_data8", "mmc_ctrl"; 325 function = "mmc"; 326 }; 327 328 sdhi1_pins: sd1 { 329 groups = "sdhi1_data4", "sdhi1_ctrl"; 330 function = "sdhi1"; 331 }; 332 333 qspi_pins: qspi { 334 groups = "qspi_ctrl", "qspi_data4"; 335 function = "qspi"; 336 }; 337 338 vin0_pins: vin0 { 339 groups = "vin0_data8", "vin0_clk"; 340 function = "vin0"; 341 }; 342 343 usb0_pins: usb0 { 344 groups = "usb0"; 345 function = "usb0"; 346 }; 347 348 usb1_pins: usb1 { 349 groups = "usb1"; 350 function = "usb1"; 351 }; 352 353 du0_pins: du0 { 354 groups = "du0_rgb888", "du0_sync", "du0_disp", "du0_clk0_out"; 355 function = "du0"; 356 }; 357 358 du1_pins: du1 { 359 groups = "du1_rgb666", "du1_sync", "du1_disp", "du1_clk0_out"; 360 function = "du1"; 361 }; 362 363 ssi_pins: sound { 364 groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data"; 365 function = "ssi"; 366 }; 367 368 audio_clk_pins: audio_clk { 369 groups = "audio_clkc"; 370 function = "audio_clk"; 371 }; 372}; 373 374&scif2 { 375 pinctrl-0 = <&scif2_pins>; 376 pinctrl-names = "default"; 377 378 status = "okay"; 379}; 380 381&scif_clk { 382 clock-frequency = <14745600>; 383}; 384 385ðer { 386 pinctrl-0 = <ðer_pins &phy1_pins>; 387 pinctrl-names = "default"; 388 389 phy-handle = <&phy1>; 390 renesas,ether-link-active-low; 391 status = "okay"; 392 393 phy1: ethernet-phy@1 { 394 reg = <1>; 395 interrupt-parent = <&irqc0>; 396 interrupts = <8 IRQ_TYPE_LEVEL_LOW>; 397 micrel,led-mode = <1>; 398 }; 399}; 400 401&i2c1 { 402 pinctrl-0 = <&i2c1_pins>; 403 pinctrl-names = "i2c-hdmi"; 404 405 clock-frequency = <400000>; 406}; 407 408&mmcif0 { 409 pinctrl-0 = <&mmcif0_pins>; 410 pinctrl-names = "default"; 411 412 vmmc-supply = <&d3_3v>; 413 vqmmc-supply = <&d3_3v>; 414 bus-width = <8>; 415 non-removable; 416 status = "okay"; 417}; 418 419&sdhi1 { 420 pinctrl-0 = <&sdhi1_pins>; 421 pinctrl-names = "default"; 422 423 vmmc-supply = <&vcc_sdhi1>; 424 vqmmc-supply = <&vccq_sdhi1>; 425 cd-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>; 426 status = "okay"; 427}; 428 429&qspi { 430 pinctrl-0 = <&qspi_pins>; 431 pinctrl-names = "default"; 432 433 status = "okay"; 434 435 flash@0 { 436 compatible = "spansion,s25fl512s", "jedec,spi-nor"; 437 reg = <0>; 438 spi-max-frequency = <30000000>; 439 spi-tx-bus-width = <4>; 440 spi-rx-bus-width = <4>; 441 spi-cpol; 442 spi-cpha; 443 m25p,fast-read; 444 445 partitions { 446 compatible = "fixed-partitions"; 447 #address-cells = <1>; 448 #size-cells = <1>; 449 450 partition@0 { 451 label = "loader"; 452 reg = <0x00000000 0x00040000>; 453 read-only; 454 }; 455 partition@40000 { 456 label = "user"; 457 reg = <0x00040000 0x00400000>; 458 read-only; 459 }; 460 partition@440000 { 461 label = "flash"; 462 reg = <0x00440000 0x03bc0000>; 463 }; 464 }; 465 }; 466}; 467 468/* composite video input */ 469&vin0 { 470 status = "okay"; 471 pinctrl-0 = <&vin0_pins>; 472 pinctrl-names = "default"; 473 474 port { 475 #address-cells = <1>; 476 #size-cells = <0>; 477 478 vin0ep: endpoint { 479 remote-endpoint = <&adv7180>; 480 bus-width = <8>; 481 }; 482 }; 483}; 484 485&pci0 { 486 status = "okay"; 487 pinctrl-0 = <&usb0_pins>; 488 pinctrl-names = "default"; 489}; 490 491&pci1 { 492 status = "okay"; 493 pinctrl-0 = <&usb1_pins>; 494 pinctrl-names = "default"; 495}; 496 497&usbphy { 498 status = "okay"; 499}; 500 501&du { 502 pinctrl-0 = <&du0_pins &du1_pins>; 503 pinctrl-names = "default"; 504 status = "okay"; 505 506 clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>, 507 <&x2_clk>, <&x3_clk>; 508 clock-names = "du.0", "du.1", "dclkin.0", "dclkin.1"; 509 510 ports { 511 port@0 { 512 endpoint { 513 remote-endpoint = <&adv7511_in>; 514 }; 515 }; 516 port@1 { 517 endpoint { 518 remote-endpoint = <&adv7123_in>; 519 }; 520 }; 521 }; 522}; 523 524&rcar_sound { 525 pinctrl-0 = <&ssi_pins &audio_clk_pins>; 526 pinctrl-names = "default"; 527 status = "okay"; 528 529 /* Single DAI */ 530 #sound-dai-cells = <0>; 531 532 rcar_sound,dai { 533 dai0 { 534 playback = <&ssi0>; 535 capture = <&ssi1>; 536 }; 537 }; 538}; 539 540&ssi1 { 541 shared-pin; 542}; 543