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