// SPDX-License-Identifier: GPL-2.0 /* * Device Tree Source for the Kingfisher (ULCB extension) board * * Copyright (C) 2017 Renesas Electronics Corp. * Copyright (C) 2017 Cogent Embedded, Inc. */ /* * SSI-PCM3168A * aplay -D plughw:0,2 xxx.wav * arecord -D plughw:0,3 xxx.wav */ / { aliases { serial1 = &hscif0; serial2 = &scif1; }; clksndsel: clksndsel { #clock-cells = <0>; compatible = "gpio-mux-clock"; clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */ select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>; }; snd_3p3v: regulator-snd_3p3v { compatible = "regulator-fixed"; regulator-name = "snd-3.3v"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; snd_vcc5v: regulator-snd_vcc5v { compatible = "regulator-fixed"; regulator-name = "snd-vcc5v"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; }; wlan_en: regulator-wlan_en { compatible = "regulator-fixed"; regulator-name = "wlan-en-regulator"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio_exp_74 4 GPIO_ACTIVE_HIGH>; startup-delay-us = <70000>; enable-active-high; }; }; &can0 { pinctrl-0 = <&can0_pins>; pinctrl-names = "default"; status = "okay"; }; &can1 { pinctrl-0 = <&can1_pins>; pinctrl-names = "default"; status = "okay"; }; &ehci0 { dr_mode = "otg"; status = "okay"; }; &hscif0 { pinctrl-0 = <&hscif0_pins>; pinctrl-names = "default"; uart-has-rtscts; status = "okay"; }; &hsusb { dr_mode = "otg"; status = "okay"; }; &i2c2 { i2cswitch2: i2c-switch@71 { compatible = "nxp,pca9548"; #address-cells = <1>; #size-cells = <0>; reg = <0x71>; reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; /* Audio_SDA, Audio_SCL */ i2c@7 { #address-cells = <1>; #size-cells = <0>; reg = <7>; pcm3168a: audio-codec@44 { #sound-dai-cells = <0>; compatible = "ti,pcm3168a"; reg = <0x44>; clocks = <&clksndsel>; clock-names = "scki"; VDD1-supply = <&snd_3p3v>; VDD2-supply = <&snd_3p3v>; VCCAD1-supply = <&snd_vcc5v>; VCCAD2-supply = <&snd_vcc5v>; VCCDA1-supply = <&snd_vcc5v>; VCCDA2-supply = <&snd_vcc5v>; ports { #address-cells = <1>; #size-cells = <0>; mclk-fs = <512>; port@0 { reg = <0>; pcm3168a_endpoint_p: endpoint { remote-endpoint = <&rsnd_for_pcm3168a_play>; clocks = <&clksndsel>; }; }; port@1 { reg = <1>; pcm3168a_endpoint_c: endpoint { remote-endpoint = <&rsnd_for_pcm3168a_capture>; clocks = <&clksndsel>; }; }; }; }; }; }; /* U11 */ gpio_exp_74: gpio@74 { compatible = "ti,tca9539"; reg = <0x74>; gpio-controller; #gpio-cells = <2>; interrupt-controller; interrupt-parent = <&gpio6>; interrupts = <8 IRQ_TYPE_EDGE_FALLING>; audio_out_off { gpio-hog; gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */ output-high; line-name = "Audio_Out_OFF"; }; hub_pwen { gpio-hog; gpios = <6 GPIO_ACTIVE_HIGH>; output-high; line-name = "HUB pwen"; }; hub_rst { gpio-hog; gpios = <7 GPIO_ACTIVE_HIGH>; output-high; line-name = "HUB rst"; }; otg_extlpn { gpio-hog; gpios = <9 GPIO_ACTIVE_HIGH>; output-high; line-name = "OTG EXTLPn"; }; otg_offvbusn { gpio-hog; gpios = <8 GPIO_ACTIVE_HIGH>; output-low; line-name = "OTG OFFVBUSn"; }; sd-wifi-mux { gpio-hog; gpios = <5 GPIO_ACTIVE_HIGH>; output-low; /* Connect WL1837 */ line-name = "SD WiFi mux"; }; snd_rst { gpio-hog; gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */ output-high; line-name = "SND_RST"; }; }; /* U5 */ gpio_exp_75: gpio@75 { compatible = "ti,tca9539"; reg = <0x75>; gpio-controller; #gpio-cells = <2>; interrupt-controller; interrupt-parent = <&gpio6>; interrupts = <4 IRQ_TYPE_EDGE_FALLING>; }; }; &i2c4 { i2cswitch4: i2c-switch@71 { compatible = "nxp,pca9548"; #address-cells = <1>; #size-cells = <0>; reg = <0x71>; reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; }; gpio_exp_76: gpio@76 { compatible = "ti,tca9539"; reg = <0x76>; gpio-controller; #gpio-cells = <2>; interrupt-controller; interrupt-parent = <&gpio7>; interrupts = <3 IRQ_TYPE_EDGE_FALLING>; }; gpio_exp_77: gpio@77 { compatible = "ti,tca9539"; reg = <0x77>; gpio-controller; #gpio-cells = <2>; interrupt-controller; interrupt-parent = <&gpio5>; interrupts = <9 IRQ_TYPE_EDGE_FALLING>; }; }; &ohci0 { dr_mode = "otg"; status = "okay"; }; &pcie_bus_clk { clock-frequency = <100000000>; }; &pciec0 { status = "okay"; }; &pciec1 { status = "okay"; }; &pfc { can0_pins: can0 { groups = "can0_data_a"; function = "can0"; }; can1_pins: can1 { groups = "can1_data"; function = "can1"; }; hscif0_pins: hscif0 { groups = "hscif0_data", "hscif0_ctrl"; function = "hscif0"; }; scif1_pins: scif1 { groups = "scif1_data_b", "scif1_ctrl"; function = "scif1"; }; sdhi3_pins: sdhi3 { groups = "sdhi3_data4", "sdhi3_ctrl"; function = "sdhi3"; power-source = <3300>; }; sound_pcm_pins: sound-pcm { groups = "ssi349_ctrl", "ssi3_data", "ssi4_data"; function = "ssi"; }; usb0_pins: usb0 { groups = "usb0"; function = "usb0"; }; }; &rcar_sound { pinctrl-0 = <&sound_pins &sound_clk_pins &sound_pcm_pins>; ports { /* rsnd_port0/1 are on salvator-common */ rsnd_port2: port@2 { reg = <2>; rsnd_for_pcm3168a_play: endpoint { remote-endpoint = <&pcm3168a_endpoint_p>; dai-format = "i2s"; bitclock-master = <&rsnd_for_pcm3168a_play>; frame-master = <&rsnd_for_pcm3168a_play>; dai-tdm-slot-num = <8>; playback = <&ssi3>; }; }; rsnd_port3: port@3 { reg = <3>; rsnd_for_pcm3168a_capture: endpoint { remote-endpoint = <&pcm3168a_endpoint_c>; dai-format = "i2s"; bitclock-master = <&rsnd_for_pcm3168a_capture>; frame-master = <&rsnd_for_pcm3168a_capture>; dai-tdm-slot-num = <6>; capture = <&ssi4>; }; }; }; }; &scif1 { pinctrl-0 = <&scif1_pins>; pinctrl-names = "default"; uart-has-rtscts; status = "okay"; }; &sdhi3 { pinctrl-0 = <&sdhi3_pins>; pinctrl-names = "default"; vmmc-supply = <&wlan_en>; vqmmc-supply = <&wlan_en>; bus-width = <4>; no-1-8-v; non-removable; cap-power-off-card; keep-power-in-suspend; max-frequency = <26000000>; status = "okay"; #address-cells = <1>; #size-cells = <0>; wlcore: wlcore@2 { compatible = "ti,wl1837"; reg = <2>; interrupt-parent = <&gpio1>; interrupts = <25 IRQ_TYPE_EDGE_FALLING>; }; }; &sound_card { dais = <&rsnd_port0 /* ak4613 */ &rsnd_port1 /* HDMI0 */ &rsnd_port2 /* pcm3168a playback */ &rsnd_port3 /* pcm3168a capture */ >; }; &ssi4 { shared-pin; }; &usb2_phy0 { pinctrl-0 = <&usb0_pins>; pinctrl-names = "default"; status = "okay"; }; &xhci0 { status = "okay"; };