1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree Source for the Kingfisher (ULCB extension) board 4 * 5 * Copyright (C) 2017 Renesas Electronics Corp. 6 * Copyright (C) 2017 Cogent Embedded, Inc. 7 */ 8 9/* 10 * SSI-PCM3168A 11 * aplay -D plughw:0,2 xxx.wav 12 * arecord -D plughw:0,3 xxx.wav 13 */ 14 15/ { 16 aliases { 17 serial1 = &hscif0; 18 serial2 = &scif1; 19 mmc2 = &sdhi3; 20 }; 21 22 clksndsel: clksndsel { 23 #clock-cells = <0>; 24 compatible = "gpio-mux-clock"; 25 clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */ 26 select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>; 27 }; 28 29 hdmi1-out { 30 compatible = "hdmi-connector"; 31 type = "a"; 32 33 port { 34 hdmi1_con: endpoint { 35 remote-endpoint = <&adv7513_out>; 36 }; 37 }; 38 }; 39 40 accel_3v3: regulator-acc-3v3 { 41 compatible = "regulator-fixed"; 42 regulator-name = "accel-3v3"; 43 regulator-min-microvolt = <3300000>; 44 regulator-max-microvolt = <3300000>; 45 }; 46 47 hdmi_1v8: regulator-hdmi-1v8 { 48 compatible = "regulator-fixed"; 49 regulator-name = "hdmi-1v8"; 50 regulator-min-microvolt = <1800000>; 51 regulator-max-microvolt = <1800000>; 52 }; 53 54 hdmi_3v3: regulator-hdmi-3v3 { 55 compatible = "regulator-fixed"; 56 regulator-name = "hdmi-3v3"; 57 regulator-min-microvolt = <3300000>; 58 regulator-max-microvolt = <3300000>; 59 }; 60 61 snd_3p3v: regulator-snd_3p3v { 62 compatible = "regulator-fixed"; 63 regulator-name = "snd-3.3v"; 64 regulator-min-microvolt = <3300000>; 65 regulator-max-microvolt = <3300000>; 66 }; 67 68 snd_vcc5v: regulator-snd_vcc5v { 69 compatible = "regulator-fixed"; 70 regulator-name = "snd-vcc5v"; 71 regulator-min-microvolt = <5000000>; 72 regulator-max-microvolt = <5000000>; 73 }; 74 75 wlan_en: regulator-wlan_en { 76 compatible = "regulator-fixed"; 77 regulator-name = "wlan-en-regulator"; 78 79 regulator-min-microvolt = <3300000>; 80 regulator-max-microvolt = <3300000>; 81 82 gpio = <&gpio_exp_74 4 GPIO_ACTIVE_HIGH>; 83 startup-delay-us = <70000>; 84 enable-active-high; 85 }; 86}; 87 88&can0 { 89 pinctrl-0 = <&can0_pins>; 90 pinctrl-names = "default"; 91 status = "okay"; 92}; 93 94&can1 { 95 pinctrl-0 = <&can1_pins>; 96 pinctrl-names = "default"; 97 status = "okay"; 98}; 99 100&du { 101 ports { 102 port@0 { 103 du_out_rgb: endpoint { 104 remote-endpoint = <&adv7513_in>; 105 }; 106 }; 107 }; 108}; 109 110&ehci0 { 111 dr_mode = "otg"; 112 status = "okay"; 113}; 114 115&hscif0 { 116 pinctrl-0 = <&hscif0_pins>; 117 pinctrl-names = "default"; 118 uart-has-rtscts; 119 120 status = "okay"; 121}; 122 123&hsusb { 124 dr_mode = "otg"; 125 status = "okay"; 126}; 127 128&i2c2 { 129 i2cswitch2: i2c-switch@71 { 130 compatible = "nxp,pca9548"; 131 #address-cells = <1>; 132 #size-cells = <0>; 133 reg = <0x71>; 134 reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; 135 136 /* HDMIoSDA, HDMIoSCL */ 137 i2c@4 { 138 #address-cells = <1>; 139 #size-cells = <0>; 140 reg = <4>; 141 142 hdmi@3d { 143 compatible = "adi,adv7513"; 144 reg = <0x3d>; 145 146 pinctrl-0 = <&hdmi1_pins>; 147 pinctrl-names = "default"; 148 149 interrupt-parent = <&gpio2>; 150 interrupts = <14 IRQ_TYPE_LEVEL_LOW>; 151 152 clocks = <&cs2000>; 153 clock-names = "cec"; 154 155 pd-gpios = <&gpio_exp_75 5 GPIO_ACTIVE_LOW>; 156 157 avdd-supply = <&hdmi_1v8>; 158 dvdd-supply = <&hdmi_1v8>; 159 pvdd-supply = <&hdmi_1v8>; 160 dvdd-3v-supply = <&hdmi_3v3>; 161 bgvdd-supply = <&hdmi_1v8>; 162 163 adi,input-depth = <8>; 164 adi,input-colorspace = "rgb"; 165 adi,input-clock = "1x"; 166 167 ports { 168 #address-cells = <1>; 169 #size-cells = <0>; 170 171 port@0 { 172 reg = <0>; 173 adv7513_in: endpoint { 174 remote-endpoint = <&du_out_rgb>; 175 }; 176 }; 177 178 port@1 { 179 reg = <1>; 180 adv7513_out: endpoint { 181 remote-endpoint = <&hdmi1_con>; 182 }; 183 }; 184 }; 185 }; 186 }; 187 188 /* Audio_SDA, Audio_SCL */ 189 i2c@7 { 190 #address-cells = <1>; 191 #size-cells = <0>; 192 reg = <7>; 193 194 accelerometer@1d { 195 compatible = "st,lsm9ds0-imu"; 196 reg = <0x1d>; 197 198 vdd-supply = <&accel_3v3>; 199 vddio-supply = <&accel_3v3>; 200 }; 201 202 pcm3168a: audio-codec@44 { 203 #sound-dai-cells = <0>; 204 compatible = "ti,pcm3168a"; 205 reg = <0x44>; 206 clocks = <&clksndsel>; 207 clock-names = "scki"; 208 209 VDD1-supply = <&snd_3p3v>; 210 VDD2-supply = <&snd_3p3v>; 211 VCCAD1-supply = <&snd_vcc5v>; 212 VCCAD2-supply = <&snd_vcc5v>; 213 VCCDA1-supply = <&snd_vcc5v>; 214 VCCDA2-supply = <&snd_vcc5v>; 215 216 ports { 217 #address-cells = <1>; 218 #size-cells = <0>; 219 mclk-fs = <512>; 220 port@0 { 221 reg = <0>; 222 pcm3168a_endpoint_p: endpoint { 223 remote-endpoint = <&rsnd_for_pcm3168a_play>; 224 clocks = <&clksndsel>; 225 }; 226 }; 227 port@1 { 228 reg = <1>; 229 pcm3168a_endpoint_c: endpoint { 230 remote-endpoint = <&rsnd_for_pcm3168a_capture>; 231 clocks = <&clksndsel>; 232 }; 233 }; 234 }; 235 }; 236 237 gyroscope@6b { 238 compatible = "st,lsm9ds0-gyro"; 239 reg = <0x6b>; 240 241 vdd-supply = <&accel_3v3>; 242 vddio-supply = <&accel_3v3>; 243 }; 244 }; 245 }; 246 247 /* U11 */ 248 gpio_exp_74: gpio@74 { 249 compatible = "ti,tca9539"; 250 reg = <0x74>; 251 gpio-controller; 252 #gpio-cells = <2>; 253 interrupt-controller; 254 interrupt-parent = <&gpio6>; 255 interrupts = <8 IRQ_TYPE_EDGE_FALLING>; 256 257 audio-out-off-hog { 258 gpio-hog; 259 gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */ 260 output-high; 261 line-name = "Audio_Out_OFF"; 262 }; 263 264 hub-pwen-hog { 265 gpio-hog; 266 gpios = <6 GPIO_ACTIVE_HIGH>; 267 output-high; 268 line-name = "HUB pwen"; 269 }; 270 271 hub-rst-hog { 272 gpio-hog; 273 gpios = <7 GPIO_ACTIVE_HIGH>; 274 output-high; 275 line-name = "HUB rst"; 276 }; 277 278 otg-extlpn-hog { 279 gpio-hog; 280 gpios = <9 GPIO_ACTIVE_HIGH>; 281 output-high; 282 line-name = "OTG EXTLPn"; 283 }; 284 285 otg-offvbusn-hog { 286 gpio-hog; 287 gpios = <8 GPIO_ACTIVE_HIGH>; 288 output-low; 289 line-name = "OTG OFFVBUSn"; 290 }; 291 292 sd-wifi-mux-hog { 293 gpio-hog; 294 gpios = <5 GPIO_ACTIVE_HIGH>; 295 output-low; /* Connect WL1837 */ 296 line-name = "SD WiFi mux"; 297 }; 298 299 snd-rst-hog { 300 gpio-hog; 301 gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */ 302 output-high; 303 line-name = "SND_RST"; 304 }; 305 }; 306 307 /* U5 */ 308 gpio_exp_75: gpio@75 { 309 compatible = "ti,tca9539"; 310 reg = <0x75>; 311 gpio-controller; 312 #gpio-cells = <2>; 313 interrupt-controller; 314 interrupt-parent = <&gpio6>; 315 interrupts = <4 IRQ_TYPE_EDGE_FALLING>; 316 }; 317}; 318 319&i2c4 { 320 i2cswitch4: i2c-switch@71 { 321 compatible = "nxp,pca9548"; 322 #address-cells = <1>; 323 #size-cells = <0>; 324 reg = <0x71>; 325 reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; 326 }; 327 328 gpio_exp_76: gpio@76 { 329 compatible = "ti,tca9539"; 330 reg = <0x76>; 331 gpio-controller; 332 #gpio-cells = <2>; 333 interrupt-controller; 334 interrupt-parent = <&gpio7>; 335 interrupts = <3 IRQ_TYPE_EDGE_FALLING>; 336 }; 337 338 gpio_exp_77: gpio@77 { 339 compatible = "ti,tca9539"; 340 reg = <0x77>; 341 gpio-controller; 342 #gpio-cells = <2>; 343 interrupt-controller; 344 interrupt-parent = <&gpio5>; 345 interrupts = <9 IRQ_TYPE_EDGE_FALLING>; 346 }; 347}; 348 349&ohci0 { 350 dr_mode = "otg"; 351 status = "okay"; 352}; 353 354&pcie_bus_clk { 355 clock-frequency = <100000000>; 356}; 357 358&pciec0 { 359 status = "okay"; 360}; 361 362&pciec1 { 363 status = "okay"; 364}; 365 366&pfc { 367 can0_pins: can0 { 368 groups = "can0_data_a"; 369 function = "can0"; 370 }; 371 372 can1_pins: can1 { 373 groups = "can1_data"; 374 function = "can1"; 375 }; 376 377 hdmi1_pins: hdmi1 { 378 adv7513-interrupt { 379 pins = "GP_2_14"; 380 bias-pull-up; 381 }; 382 383 du { 384 groups = "du_rgb888", "du_sync", "du_clk_out_0", 385 "du_disp"; 386 function = "du"; 387 }; 388 }; 389 390 hscif0_pins: hscif0 { 391 groups = "hscif0_data", "hscif0_ctrl"; 392 function = "hscif0"; 393 }; 394 395 scif1_pins: scif1 { 396 groups = "scif1_data_b", "scif1_ctrl"; 397 function = "scif1"; 398 }; 399 400 sdhi3_pins: sdhi3 { 401 groups = "sdhi3_data4", "sdhi3_ctrl"; 402 function = "sdhi3"; 403 power-source = <3300>; 404 }; 405 406 sound_pcm_pins: sound-pcm { 407 groups = "ssi349_ctrl", "ssi3_data", "ssi4_data"; 408 function = "ssi"; 409 }; 410 411 usb0_pins: usb0 { 412 groups = "usb0"; 413 function = "usb0"; 414 }; 415}; 416 417&rcar_sound { 418 pinctrl-0 = <&sound_pins 419 &sound_clk_pins 420 &sound_pcm_pins>; 421 422 ports { 423 /* rsnd_port0/1 are defined in ulcb.dtsi */ 424 rsnd_port2: port@2 { 425 reg = <2>; 426 rsnd_for_pcm3168a_play: endpoint { 427 remote-endpoint = <&pcm3168a_endpoint_p>; 428 bitclock-master; 429 frame-master; 430 dai-tdm-slot-num = <8>; 431 playback = <&ssi3>; 432 }; 433 }; 434 rsnd_port3: port@3 { 435 reg = <3>; 436 rsnd_for_pcm3168a_capture: endpoint { 437 remote-endpoint = <&pcm3168a_endpoint_c>; 438 bitclock-master; 439 frame-master; 440 dai-tdm-slot-num = <6>; 441 capture = <&ssi4>; 442 }; 443 }; 444 }; 445}; 446 447&scif1 { 448 pinctrl-0 = <&scif1_pins>; 449 pinctrl-names = "default"; 450 uart-has-rtscts; 451 452 status = "okay"; 453}; 454 455&sdhi3 { 456 pinctrl-0 = <&sdhi3_pins>; 457 pinctrl-names = "default"; 458 459 vmmc-supply = <&wlan_en>; 460 vqmmc-supply = <&wlan_en>; 461 bus-width = <4>; 462 no-1-8-v; 463 non-removable; 464 cap-power-off-card; 465 keep-power-in-suspend; 466 max-frequency = <26000000>; 467 status = "okay"; 468 469 #address-cells = <1>; 470 #size-cells = <0>; 471 wlcore: wlcore@2 { 472 compatible = "ti,wl1837"; 473 reg = <2>; 474 interrupt-parent = <&gpio1>; 475 interrupts = <25 IRQ_TYPE_EDGE_FALLING>; 476 }; 477}; 478 479&sound_card { 480 links = <&rsnd_port0 /* ak4613 */ 481 &rsnd_port1 /* HDMI0 */ 482 &rsnd_port2 /* pcm3168a playback */ 483 &rsnd_port3 /* pcm3168a capture */ 484 >; 485}; 486 487&ssi4 { 488 shared-pin; 489}; 490 491&usb2_phy0 { 492 pinctrl-0 = <&usb0_pins>; 493 pinctrl-names = "default"; 494 495 status = "okay"; 496}; 497 498&xhci0 { 499 status = "okay"; 500}; 501