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 /* U11 */ 87 gpio_exp_74: gpio@74 { 88 compatible = "ti,tca9539"; 89 reg = <0x74>; 90 gpio-controller; 91 #gpio-cells = <2>; 92 interrupt-controller; 93 interrupt-parent = <&gpio6>; 94 interrupts = <8 IRQ_TYPE_EDGE_FALLING>; 95 96 audio_out_off { 97 gpio-hog; 98 gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */ 99 output-high; 100 line-name = "Audio_Out_OFF"; 101 }; 102 103 sd-wifi-mux { 104 gpio-hog; 105 gpios = <5 GPIO_ACTIVE_HIGH>; 106 output-low; /* Connect WL1837 */ 107 line-name = "SD WiFi mux"; 108 }; 109 110 hub_pwen { 111 gpio-hog; 112 gpios = <6 GPIO_ACTIVE_HIGH>; 113 output-high; 114 line-name = "HUB pwen"; 115 }; 116 117 hub_rst { 118 gpio-hog; 119 gpios = <7 GPIO_ACTIVE_HIGH>; 120 output-high; 121 line-name = "HUB rst"; 122 }; 123 124 otg_offvbusn { 125 gpio-hog; 126 gpios = <8 GPIO_ACTIVE_HIGH>; 127 output-low; 128 line-name = "OTG OFFVBUSn"; 129 }; 130 131 otg_extlpn { 132 gpio-hog; 133 gpios = <9 GPIO_ACTIVE_HIGH>; 134 output-high; 135 line-name = "OTG EXTLPn"; 136 }; 137 138 snd_rst { 139 gpio-hog; 140 gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */ 141 output-high; 142 line-name = "SND_RST"; 143 }; 144 }; 145 146 /* U5 */ 147 gpio_exp_75: gpio@75 { 148 compatible = "ti,tca9539"; 149 reg = <0x75>; 150 gpio-controller; 151 #gpio-cells = <2>; 152 interrupt-controller; 153 interrupt-parent = <&gpio6>; 154 interrupts = <4 IRQ_TYPE_EDGE_FALLING>; 155 }; 156 157 i2cswitch2: i2c-switch@71 { 158 compatible = "nxp,pca9548"; 159 #address-cells = <1>; 160 #size-cells = <0>; 161 reg = <0x71>; 162 reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; 163 164 /* Audio_SDA, Audio_SCL */ 165 i2c@7 { 166 #address-cells = <1>; 167 #size-cells = <0>; 168 reg = <7>; 169 170 pcm3168a: audio-codec@44 { 171 #sound-dai-cells = <0>; 172 compatible = "ti,pcm3168a"; 173 reg = <0x44>; 174 clocks = <&clksndsel>; 175 clock-names = "scki"; 176 177 VDD1-supply = <&snd_3p3v>; 178 VDD2-supply = <&snd_3p3v>; 179 VCCAD1-supply = <&snd_vcc5v>; 180 VCCAD2-supply = <&snd_vcc5v>; 181 VCCDA1-supply = <&snd_vcc5v>; 182 VCCDA2-supply = <&snd_vcc5v>; 183 184 ports { 185 #address-cells = <1>; 186 #size-cells = <0>; 187 mclk-fs = <512>; 188 port@0 { 189 reg = <0>; 190 pcm3168a_endpoint_p: endpoint { 191 remote-endpoint = <&rsnd_for_pcm3168a_play>; 192 clocks = <&clksndsel>; 193 }; 194 }; 195 port@1 { 196 reg = <1>; 197 pcm3168a_endpoint_c: endpoint { 198 remote-endpoint = <&rsnd_for_pcm3168a_capture>; 199 clocks = <&clksndsel>; 200 }; 201 }; 202 }; 203 }; 204 }; 205 }; 206}; 207 208&i2c4 { 209 gpio_exp_76: gpio@76 { 210 compatible = "ti,tca9539"; 211 reg = <0x76>; 212 gpio-controller; 213 #gpio-cells = <2>; 214 interrupt-controller; 215 interrupt-parent = <&gpio7>; 216 interrupts = <3 IRQ_TYPE_EDGE_FALLING>; 217 }; 218 219 gpio_exp_77: gpio@77 { 220 compatible = "ti,tca9539"; 221 reg = <0x77>; 222 gpio-controller; 223 #gpio-cells = <2>; 224 interrupt-controller; 225 interrupt-parent = <&gpio5>; 226 interrupts = <9 IRQ_TYPE_EDGE_FALLING>; 227 }; 228 229 i2cswitch4: i2c-switch@71 { 230 compatible = "nxp,pca9548"; 231 #address-cells = <1>; 232 #size-cells = <0>; 233 reg = <0x71>; 234 reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; 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 usb0_pins: usb0 { 283 groups = "usb0"; 284 function = "usb0"; 285 }; 286 287 sound_pcm_pins: sound-pcm { 288 groups = "ssi349_ctrl", "ssi3_data", "ssi4_data"; 289 function = "ssi"; 290 }; 291}; 292 293&scif1 { 294 pinctrl-0 = <&scif1_pins>; 295 pinctrl-names = "default"; 296 uart-has-rtscts; 297 298 status = "okay"; 299}; 300 301&sdhi3 { 302 pinctrl-0 = <&sdhi3_pins>; 303 pinctrl-names = "default"; 304 305 vmmc-supply = <&wlan_en>; 306 vqmmc-supply = <&wlan_en>; 307 bus-width = <4>; 308 no-1-8-v; 309 non-removable; 310 cap-power-off-card; 311 keep-power-in-suspend; 312 max-frequency = <26000000>; 313 status = "okay"; 314 315 #address-cells = <1>; 316 #size-cells = <0>; 317 wlcore: wlcore@2 { 318 compatible = "ti,wl1837"; 319 reg = <2>; 320 interrupt-parent = <&gpio1>; 321 interrupts = <25 IRQ_TYPE_EDGE_FALLING>; 322 }; 323}; 324 325&usb2_phy0 { 326 pinctrl-0 = <&usb0_pins>; 327 pinctrl-names = "default"; 328 329 status = "okay"; 330}; 331 332&xhci0 { 333 status = "okay"; 334}; 335 336&sound_card { 337 dais = <&rsnd_port0 /* ak4613 */ 338 &rsnd_port1 /* HDMI0 */ 339 &rsnd_port2 /* pcm3168a playback */ 340 &rsnd_port3 /* pcm3168a capture */ 341 >; 342}; 343 344&rcar_sound { 345 pinctrl-0 = <&sound_pins 346 &sound_clk_pins 347 &sound_pcm_pins>; 348 349 ports { 350 /* rsnd_port0/1 are on salvator-common */ 351 rsnd_port2: port@2 { 352 reg = <2>; 353 rsnd_for_pcm3168a_play: endpoint { 354 remote-endpoint = <&pcm3168a_endpoint_p>; 355 356 dai-format = "i2s"; 357 bitclock-master = <&rsnd_for_pcm3168a_play>; 358 frame-master = <&rsnd_for_pcm3168a_play>; 359 dai-tdm-slot-num = <8>; 360 361 playback = <&ssi3>; 362 }; 363 }; 364 rsnd_port3: port@3 { 365 reg = <3>; 366 rsnd_for_pcm3168a_capture: endpoint { 367 remote-endpoint = <&pcm3168a_endpoint_c>; 368 369 dai-format = "i2s"; 370 bitclock-master = <&rsnd_for_pcm3168a_capture>; 371 frame-master = <&rsnd_for_pcm3168a_capture>; 372 dai-tdm-slot-num = <6>; 373 374 capture = <&ssi4>; 375 }; 376 }; 377 }; 378}; 379 380&ssi4 { 381 shared-pin; 382}; 383