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 snd_3p3v: regulator-snd_3p3v { 30 compatible = "regulator-fixed"; 31 regulator-name = "snd-3.3v"; 32 regulator-min-microvolt = <3300000>; 33 regulator-max-microvolt = <3300000>; 34 }; 35 36 snd_vcc5v: regulator-snd_vcc5v { 37 compatible = "regulator-fixed"; 38 regulator-name = "snd-vcc5v"; 39 regulator-min-microvolt = <5000000>; 40 regulator-max-microvolt = <5000000>; 41 }; 42 43 wlan_en: regulator-wlan_en { 44 compatible = "regulator-fixed"; 45 regulator-name = "wlan-en-regulator"; 46 47 regulator-min-microvolt = <3300000>; 48 regulator-max-microvolt = <3300000>; 49 50 gpio = <&gpio_exp_74 4 GPIO_ACTIVE_HIGH>; 51 startup-delay-us = <70000>; 52 enable-active-high; 53 }; 54}; 55 56&can0 { 57 pinctrl-0 = <&can0_pins>; 58 pinctrl-names = "default"; 59 status = "okay"; 60}; 61 62&can1 { 63 pinctrl-0 = <&can1_pins>; 64 pinctrl-names = "default"; 65 status = "okay"; 66}; 67 68&ehci0 { 69 dr_mode = "otg"; 70 status = "okay"; 71}; 72 73&hscif0 { 74 pinctrl-0 = <&hscif0_pins>; 75 pinctrl-names = "default"; 76 uart-has-rtscts; 77 78 status = "okay"; 79}; 80 81&hsusb { 82 dr_mode = "otg"; 83 status = "okay"; 84}; 85 86&i2c2 { 87 i2cswitch2: i2c-switch@71 { 88 compatible = "nxp,pca9548"; 89 #address-cells = <1>; 90 #size-cells = <0>; 91 reg = <0x71>; 92 reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; 93 94 /* Audio_SDA, Audio_SCL */ 95 i2c@7 { 96 #address-cells = <1>; 97 #size-cells = <0>; 98 reg = <7>; 99 100 pcm3168a: audio-codec@44 { 101 #sound-dai-cells = <0>; 102 compatible = "ti,pcm3168a"; 103 reg = <0x44>; 104 clocks = <&clksndsel>; 105 clock-names = "scki"; 106 107 VDD1-supply = <&snd_3p3v>; 108 VDD2-supply = <&snd_3p3v>; 109 VCCAD1-supply = <&snd_vcc5v>; 110 VCCAD2-supply = <&snd_vcc5v>; 111 VCCDA1-supply = <&snd_vcc5v>; 112 VCCDA2-supply = <&snd_vcc5v>; 113 114 ports { 115 #address-cells = <1>; 116 #size-cells = <0>; 117 mclk-fs = <512>; 118 port@0 { 119 reg = <0>; 120 pcm3168a_endpoint_p: endpoint { 121 remote-endpoint = <&rsnd_for_pcm3168a_play>; 122 clocks = <&clksndsel>; 123 }; 124 }; 125 port@1 { 126 reg = <1>; 127 pcm3168a_endpoint_c: endpoint { 128 remote-endpoint = <&rsnd_for_pcm3168a_capture>; 129 clocks = <&clksndsel>; 130 }; 131 }; 132 }; 133 }; 134 }; 135 }; 136 137 /* U11 */ 138 gpio_exp_74: gpio@74 { 139 compatible = "ti,tca9539"; 140 reg = <0x74>; 141 gpio-controller; 142 #gpio-cells = <2>; 143 interrupt-controller; 144 interrupt-parent = <&gpio6>; 145 interrupts = <8 IRQ_TYPE_EDGE_FALLING>; 146 147 audio-out-off-hog { 148 gpio-hog; 149 gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */ 150 output-high; 151 line-name = "Audio_Out_OFF"; 152 }; 153 154 hub-pwen-hog { 155 gpio-hog; 156 gpios = <6 GPIO_ACTIVE_HIGH>; 157 output-high; 158 line-name = "HUB pwen"; 159 }; 160 161 hub-rst-hog { 162 gpio-hog; 163 gpios = <7 GPIO_ACTIVE_HIGH>; 164 output-high; 165 line-name = "HUB rst"; 166 }; 167 168 otg-extlpn-hog { 169 gpio-hog; 170 gpios = <9 GPIO_ACTIVE_HIGH>; 171 output-high; 172 line-name = "OTG EXTLPn"; 173 }; 174 175 otg-offvbusn-hog { 176 gpio-hog; 177 gpios = <8 GPIO_ACTIVE_HIGH>; 178 output-low; 179 line-name = "OTG OFFVBUSn"; 180 }; 181 182 sd-wifi-mux-hog { 183 gpio-hog; 184 gpios = <5 GPIO_ACTIVE_HIGH>; 185 output-low; /* Connect WL1837 */ 186 line-name = "SD WiFi mux"; 187 }; 188 189 snd-rst-hog { 190 gpio-hog; 191 gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */ 192 output-high; 193 line-name = "SND_RST"; 194 }; 195 }; 196 197 /* U5 */ 198 gpio_exp_75: gpio@75 { 199 compatible = "ti,tca9539"; 200 reg = <0x75>; 201 gpio-controller; 202 #gpio-cells = <2>; 203 interrupt-controller; 204 interrupt-parent = <&gpio6>; 205 interrupts = <4 IRQ_TYPE_EDGE_FALLING>; 206 }; 207}; 208 209&i2c4 { 210 i2cswitch4: i2c-switch@71 { 211 compatible = "nxp,pca9548"; 212 #address-cells = <1>; 213 #size-cells = <0>; 214 reg = <0x71>; 215 reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; 216 }; 217 218 gpio_exp_76: gpio@76 { 219 compatible = "ti,tca9539"; 220 reg = <0x76>; 221 gpio-controller; 222 #gpio-cells = <2>; 223 interrupt-controller; 224 interrupt-parent = <&gpio7>; 225 interrupts = <3 IRQ_TYPE_EDGE_FALLING>; 226 }; 227 228 gpio_exp_77: gpio@77 { 229 compatible = "ti,tca9539"; 230 reg = <0x77>; 231 gpio-controller; 232 #gpio-cells = <2>; 233 interrupt-controller; 234 interrupt-parent = <&gpio5>; 235 interrupts = <9 IRQ_TYPE_EDGE_FALLING>; 236 }; 237}; 238 239&ohci0 { 240 dr_mode = "otg"; 241 status = "okay"; 242}; 243 244&pcie_bus_clk { 245 clock-frequency = <100000000>; 246}; 247 248&pciec0 { 249 status = "okay"; 250}; 251 252&pciec1 { 253 status = "okay"; 254}; 255 256&pfc { 257 can0_pins: can0 { 258 groups = "can0_data_a"; 259 function = "can0"; 260 }; 261 262 can1_pins: can1 { 263 groups = "can1_data"; 264 function = "can1"; 265 }; 266 267 hscif0_pins: hscif0 { 268 groups = "hscif0_data", "hscif0_ctrl"; 269 function = "hscif0"; 270 }; 271 272 scif1_pins: scif1 { 273 groups = "scif1_data_b", "scif1_ctrl"; 274 function = "scif1"; 275 }; 276 277 sdhi3_pins: sdhi3 { 278 groups = "sdhi3_data4", "sdhi3_ctrl"; 279 function = "sdhi3"; 280 power-source = <3300>; 281 }; 282 283 sound_pcm_pins: sound-pcm { 284 groups = "ssi349_ctrl", "ssi3_data", "ssi4_data"; 285 function = "ssi"; 286 }; 287 288 usb0_pins: usb0 { 289 groups = "usb0"; 290 function = "usb0"; 291 }; 292}; 293 294&rcar_sound { 295 pinctrl-0 = <&sound_pins 296 &sound_clk_pins 297 &sound_pcm_pins>; 298 299 ports { 300 /* rsnd_port0/1 are on salvator-common */ 301 rsnd_port2: port@2 { 302 reg = <2>; 303 rsnd_for_pcm3168a_play: endpoint { 304 remote-endpoint = <&pcm3168a_endpoint_p>; 305 306 dai-format = "i2s"; 307 bitclock-master = <&rsnd_for_pcm3168a_play>; 308 frame-master = <&rsnd_for_pcm3168a_play>; 309 dai-tdm-slot-num = <8>; 310 311 playback = <&ssi3>; 312 }; 313 }; 314 rsnd_port3: port@3 { 315 reg = <3>; 316 rsnd_for_pcm3168a_capture: endpoint { 317 remote-endpoint = <&pcm3168a_endpoint_c>; 318 319 dai-format = "i2s"; 320 bitclock-master = <&rsnd_for_pcm3168a_capture>; 321 frame-master = <&rsnd_for_pcm3168a_capture>; 322 dai-tdm-slot-num = <6>; 323 324 capture = <&ssi4>; 325 }; 326 }; 327 }; 328}; 329 330&scif1 { 331 pinctrl-0 = <&scif1_pins>; 332 pinctrl-names = "default"; 333 uart-has-rtscts; 334 335 status = "okay"; 336}; 337 338&sdhi3 { 339 pinctrl-0 = <&sdhi3_pins>; 340 pinctrl-names = "default"; 341 342 vmmc-supply = <&wlan_en>; 343 vqmmc-supply = <&wlan_en>; 344 bus-width = <4>; 345 no-1-8-v; 346 non-removable; 347 cap-power-off-card; 348 keep-power-in-suspend; 349 max-frequency = <26000000>; 350 status = "okay"; 351 352 #address-cells = <1>; 353 #size-cells = <0>; 354 wlcore: wlcore@2 { 355 compatible = "ti,wl1837"; 356 reg = <2>; 357 interrupt-parent = <&gpio1>; 358 interrupts = <25 IRQ_TYPE_EDGE_FALLING>; 359 }; 360}; 361 362&sound_card { 363 dais = <&rsnd_port0 /* ak4613 */ 364 &rsnd_port1 /* HDMI0 */ 365 &rsnd_port2 /* pcm3168a playback */ 366 &rsnd_port3 /* pcm3168a capture */ 367 >; 368}; 369 370&ssi4 { 371 shared-pin; 372}; 373 374&usb2_phy0 { 375 pinctrl-0 = <&usb0_pins>; 376 pinctrl-names = "default"; 377 378 status = "okay"; 379}; 380 381&xhci0 { 382 status = "okay"; 383}; 384