Re: [PATCH 3/4] arm64: renesas: ulcb-kf: add pcm3168 sound codec

2018-11-20 Thread Jiada Wang

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 = 
  serial2 = 
  };
+
+    clk8snd: clk8snd {
+    compatible = "fixed-clock";
+    #clock-cells = <0>;
+    clock-frequency = <24576000>;
+    };
This is the same clock as cs2000, why not directly refer to  
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 = <>, <>;
+    select-gpios = <_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>;
+    };
  };
     {
@@ -44,6 +83,7 @@
  };
     {
+    /* U11 */
  gpio_exp_74: gpio@74 {
  compatible = "ti,tca9539";
  reg = <0x74>;
@@ -53,6 +93,13 @@
  interrupt-parent = <>;
  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 = < 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 = <>;
+    clock-names = "scki";
+
+    VDD1-supply    = <_3p3v>;
+    VDD2-supply    = <_3p3v>;
+    VCCAD1-supply    = <_vcc5v>;
+    VCCAD2-supply    = <_vcc5v>;
+    VCCDA1-supply    = <_vcc5v>;
+    VCCDA2-supply    = <_vcc5v>;
+
+    ports {
+    #address-cells = <1>;
+    #size-cells = <0>;
+    port@0 {
+    reg = <0>;
+    pcm3168a_endpoint_p: endpoint {
+    remote-endpoint = <_endpoint2>;
+    clocks = <>;
+    mclk-fs = <512>;
+    };
+    };
+    port@1 {
+    reg = <1>;
+    pcm3168a_endpoint_c: endpoint {
+

Re: [PATCH 3/4] arm64: renesas: ulcb-kf: add pcm3168 sound codec

2018-11-08 Thread Jiada Wang

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 = 
serial2 = 
};
+
+   clk8snd: clk8snd {
+   compatible = "fixed-clock";
+   #clock-cells = <0>;
+   clock-frequency = <24576000>;
+   };
This is the same clock as cs2000, why not directly refer to  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 = <>, <>;
+   select-gpios = <_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>;
+   };
  };
  
   {

@@ -44,6 +83,7 @@
  };
  
   {

+   /* U11 */
gpio_exp_74: gpio@74 {
compatible = "ti,tca9539";
reg = <0x74>;
@@ -53,6 +93,13 @@
interrupt-parent = <>;
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 = < 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 = <>;
+   clock-names = "scki";
+
+   VDD1-supply = <_3p3v>;
+   VDD2-supply = <_3p3v>;
+   VCCAD1-supply   = <_vcc5v>;
+   VCCAD2-supply   = <_vcc5v>;
+   VCCDA1-supply   = <_vcc5v>;
+   VCCDA2-supply   = <_vcc5v>;
+
+   ports {
+   #address-cells = <1>;
+   #size-cells = <0>;
+   port@0 {
+   reg = <0>;
+   pcm3168a_endpoint_p: endpoint {
+   remote-endpoint = 
<_endpoint2>;
+