Re: [PATCH 3/4] arm64: renesas: ulcb-kf: add pcm3168 sound codec
Hi Jiada > >> + > >> + clk8snd: clk8snd { > >> + compatible = "fixed-clock"; > >> + #clock-cells = <0>; > >> + clock-frequency = <24576000>; > >> + }; > > This is the same clock as cs2000, why not directly refer to &cs2000 > > from clksndsel, > > otherwise, if snd_soc_rcar is loaded after snd_soc_pcm3168a_i2c, > > load of snd_soc_pcm3168a_i2c fails with > > "[ 8.412356] pcm3168a 15-0044: Failed to reset device: -6" > > and sound cards can not be created > > > > Could you let me know your thoughts on this? Thank you for pointing it. I will fix it in v2 Best regards --- Kuninori Morimoto
Re: [PATCH 3/4] arm64: renesas: ulcb-kf: add pcm3168 sound codec
Hi Morimoto-san On 2018/11/08 22:36, Jiada Wang wrote: Hi Morimoto-san with the TDM Split patch-set you sent earlier in community, together with this DTS change set, I am able to test TDM Split mode, just some minor findings. On 2018/11/08 10:59, Kuninori Morimoto wrote: From: Kuninori Morimoto KingFisher has pcm3168 sound codec. This patch enables it. Because pcm3168 can't handle symmetric channel on playback/ capture, we need to handle it as different DAI. Signed-off-by: Kuninori Morimoto --- arch/arm64/boot/dts/renesas/ulcb-kf.dtsi | 151 +++ 1 file changed, 151 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi index 1b316d79..fdd625d 100644 --- a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi @@ -6,11 +6,50 @@ * 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; }; + + clk8snd: clk8snd { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24576000>; + }; This is the same clock as cs2000, why not directly refer to &cs2000 from clksndsel, otherwise, if snd_soc_rcar is loaded after snd_soc_pcm3168a_i2c, load of snd_soc_pcm3168a_i2c fails with "[ 8.412356] pcm3168a 15-0044: Failed to reset device: -6" and sound cards can not be created Could you let me know your thoughts on this? thanks, Jiada Thanks, Jiada + + clksnd: clksnd { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <22579200>; + }; + + clksndsel: clksndsel { + #clock-cells = <0>; + compatible = "gpio-mux-clock"; + clocks = <&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 = <330>; + regulator-max-microvolt = <330>; + }; + + snd_vcc5v: regulator-snd_vcc5v { + compatible = "regulator-fixed"; + regulator-name = "snd-vcc5v"; + regulator-min-microvolt = <500>; + regulator-max-microvolt = <500>; + }; }; &can0 { @@ -44,6 +83,7 @@ }; &i2c2 { + /* U11 */ gpio_exp_74: gpio@74 { compatible = "ti,tca9539"; reg = <0x74>; @@ -53,6 +93,13 @@ 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>; @@ -80,8 +127,16 @@ output-high; line-name = "OTG EXTLPn"; }; + + 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>; @@ -98,6 +153,49 @@ #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>; + port@0 { + reg = <0>; + pcm3168a_endpoint_p: endpoint { + remote-endpoint = <&rsnd_endpoint2>; + clocks = <&clksndsel>; + mclk-fs = <512>; + }; + }; + port@1 { + reg = <1>; + pcm3168a_endpoint_c: endpoint { + remote-endpoint = <&rsnd_endpoint3>; + clocks = <&clksndsel>; + mclk-fs = <512>; + }; + }; + }; + }; + }; }; }; @@ -173,6
Re: [PATCH 3/4] arm64: renesas: ulcb-kf: add pcm3168 sound codec
Hi Morimoto-san with the TDM Split patch-set you sent earlier in community, together with this DTS change set, I am able to test TDM Split mode, just some minor findings. On 2018/11/08 10:59, Kuninori Morimoto wrote: From: Kuninori Morimoto KingFisher has pcm3168 sound codec. This patch enables it. Because pcm3168 can't handle symmetric channel on playback/ capture, we need to handle it as different DAI. Signed-off-by: Kuninori Morimoto --- arch/arm64/boot/dts/renesas/ulcb-kf.dtsi | 151 +++ 1 file changed, 151 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi index 1b316d79..fdd625d 100644 --- a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi @@ -6,11 +6,50 @@ * 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; }; + + clk8snd: clk8snd { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24576000>; + }; This is the same clock as cs2000, why not directly refer to &cs2000 from clksndsel, otherwise, if snd_soc_rcar is loaded after snd_soc_pcm3168a_i2c, load of snd_soc_pcm3168a_i2c fails with "[ 8.412356] pcm3168a 15-0044: Failed to reset device: -6" and sound cards can not be created Thanks, Jiada + + clksnd: clksnd { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <22579200>; + }; + + clksndsel: clksndsel { + #clock-cells = <0>; + compatible = "gpio-mux-clock"; + clocks = <&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 = <330>; + regulator-max-microvolt = <330>; + }; + + snd_vcc5v: regulator-snd_vcc5v { + compatible = "regulator-fixed"; + regulator-name = "snd-vcc5v"; + regulator-min-microvolt = <500>; + regulator-max-microvolt = <500>; + }; }; &can0 { @@ -44,6 +83,7 @@ }; &i2c2 { + /* U11 */ gpio_exp_74: gpio@74 { compatible = "ti,tca9539"; reg = <0x74>; @@ -53,6 +93,13 @@ 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>; @@ -80,8 +127,16 @@ output-high; line-name = "OTG EXTLPn"; }; + + 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>; @@ -98,6 +153,49 @@ #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>; + port@0 { + reg = <0>; + pcm3168a_endpoint_p: endpoint { +
[PATCH 3/4] arm64: renesas: ulcb-kf: add pcm3168 sound codec
From: Kuninori Morimoto KingFisher has pcm3168 sound codec. This patch enables it. Because pcm3168 can't handle symmetric channel on playback/ capture, we need to handle it as different DAI. Signed-off-by: Kuninori Morimoto --- arch/arm64/boot/dts/renesas/ulcb-kf.dtsi | 151 +++ 1 file changed, 151 insertions(+) diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi index 1b316d79..fdd625d 100644 --- a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi @@ -6,11 +6,50 @@ * 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; }; + + clk8snd: clk8snd { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24576000>; + }; + + clksnd: clksnd { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <22579200>; + }; + + clksndsel: clksndsel { + #clock-cells = <0>; + compatible = "gpio-mux-clock"; + clocks = <&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 = <330>; + regulator-max-microvolt = <330>; + }; + + snd_vcc5v: regulator-snd_vcc5v { + compatible = "regulator-fixed"; + regulator-name = "snd-vcc5v"; + regulator-min-microvolt = <500>; + regulator-max-microvolt = <500>; + }; }; &can0 { @@ -44,6 +83,7 @@ }; &i2c2 { + /* U11 */ gpio_exp_74: gpio@74 { compatible = "ti,tca9539"; reg = <0x74>; @@ -53,6 +93,13 @@ 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>; @@ -80,8 +127,16 @@ output-high; line-name = "OTG EXTLPn"; }; + + 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>; @@ -98,6 +153,49 @@ #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>; + port@0 { + reg = <0>; + pcm3168a_endpoint_p: endpoint { + remote-endpoint = <&rsnd_endpoint2>; + clocks = <&clksndsel>; + mclk-fs = <512>; + }; + }; + port@1 { + reg = <1>; + pcm3168a_endpoint_c: endpoint { +