Message ID | 5A3B5EFE.8070606@mentor.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Jiada > diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi > b/arch/arm64/boot/dts/renesas/salvator-common.dtsi > index a298df7..16f3214 100644 > --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi > +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi > @@ -94,14 +94,24 @@ > }; > > rsnd_ak4613: sound { > - compatible = "simple-audio-card"; > + compatible = "simple-scu-audio-card"; > > simple-audio-card,format = "left_j"; > simple-audio-card,bitclock-master = <&sndcpu>; > simple-audio-card,frame-master = <&sndcpu>; > > - sndcpu: simple-audio-card,cpu { > - sound-dai = <&rcar_sound>; > + simple-audio-card,prefix = "ak4613"; > + simple-audio-card,routing = > + "ak4613 Playback", "DAI0 Playback", > + "DAI0 Capture", "ak4613 Capture", > + "ak4613 Playback", "DAI1 Playback"; > + > + sndcpu: simple-audio-card,cpu@0 { > + sound-dai = <&rcar_sound 0>; > + }; > + > + simple-audio-card,cpu@1 { > + sound-dai = <&rcar_sound 1>; > }; > > sndcodec: simple-audio-card,codec { > @@ -517,7 +527,7 @@ > pinctrl-names = "default"; > > /* Single DAI */ > - #sound-dai-cells = <0>; > + #sound-dai-cells = <1>; > > /* audio_clkout0/1/2/3 */ > #clock-cells = <1>; > @@ -549,6 +559,9 @@ > playback = <&ssi0 &src0 &dvc0>; > capture = <&ssi1 &src1 &dvc1>; > }; > + dai1 { > + playback = <&ssi0>; > + }; > }; > }; > > playing with dai1 will have issue. I guess so because you are using strange settings... What do you want to do ? Best regards --- Kuninori Morimoto
Hi Morimoto-san On 12/20/2017 11:39 PM, Kuninori Morimoto wrote: > Hi Jiada > >> diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi >> b/arch/arm64/boot/dts/renesas/salvator-common.dtsi >> index a298df7..16f3214 100644 >> --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi >> +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi >> @@ -94,14 +94,24 @@ >> }; >> >> rsnd_ak4613: sound { >> - compatible = "simple-audio-card"; >> + compatible = "simple-scu-audio-card"; >> >> simple-audio-card,format = "left_j"; >> simple-audio-card,bitclock-master =<&sndcpu>; >> simple-audio-card,frame-master =<&sndcpu>; >> >> - sndcpu: simple-audio-card,cpu { >> - sound-dai =<&rcar_sound>; >> + simple-audio-card,prefix = "ak4613"; >> + simple-audio-card,routing = >> + "ak4613 Playback", "DAI0 Playback", >> + "DAI0 Capture", "ak4613 Capture", >> + "ak4613 Playback", "DAI1 Playback"; >> + >> + sndcpu: simple-audio-card,cpu@0 { >> + sound-dai =<&rcar_sound 0>; >> + }; >> + >> + simple-audio-card,cpu@1 { >> + sound-dai =<&rcar_sound 1>; >> }; >> >> sndcodec: simple-audio-card,codec { >> @@ -517,7 +527,7 @@ >> pinctrl-names = "default"; >> >> /* Single DAI */ >> - #sound-dai-cells =<0>; >> + #sound-dai-cells =<1>; >> >> /* audio_clkout0/1/2/3 */ >> #clock-cells =<1>; >> @@ -549,6 +559,9 @@ >> playback =<&ssi0&src0&dvc0>; >> capture =<&ssi1&src1&dvc1>; >> }; >> + dai1 { >> + playback =<&ssi0>; >> + }; >> }; >> }; >> >> playing with dai1 will have issue. > I guess so because you are using strange settings... > What do you want to do ? this is just an example setting to reproduce the issue with current mainline kernel, We have enabled TDM Split and Ex-Split mode in our kernel, and SSI(U)'s dma address diffs based on the BUSIF it is using, so have a single dma data struct per rsnd_ssi will cause issue when SSI isn't working with BUSIF0. Do you have any suggestion to address this issue? Thanks, Jiada > Best regards > --- > Kuninori Morimoto
Hi Jiada Thank you for your feedback I understand your situation > We have enabled TDM Split and Ex-Split mode in our kernel, > and SSI(U)'s dma address diffs based on the BUSIF it is using, > so have a single dma data struct per rsnd_ssi will cause issue when > SSI isn't working with BUSIF0. First of all, "TDM (Ex) Split mode" is not yet supported. And unfortunately, your patch is not enough for it. I guess you enabled it with many local patches, and posted one of them ? It is very advanced feature, we need to consider about channel/sampling rate/data width/settings/address etc etc etc... Lots of things we need to solve/care ! DMA pointer is one of them. If we focus only to DMA, your patch is still wrong I think. "Playback/Capture direction" is not related to this topic. 1 DMA on 1 DAI is enough ? And we need to update rsnd_gen2_dma_addr() too for DMA address. > Do you have any suggestion to address this issue? I have no idea at this point. Missing part for TDM (Ex) Split mode is not only DMA pointer. Why do you want to use it ? If you want to do is only "use 2 DAIs for playback", how about to use MIXer ? It is already supported on upstream. Best regards --- Kuninori Morimoto
Hi Morimoto-san On 12/21/2017 04:43 PM, Kuninori Morimoto wrote: > Hi Jiada > > Thank you for your feedback > I understand your situation > >> We have enabled TDM Split and Ex-Split mode in our kernel, >> and SSI(U)'s dma address diffs based on the BUSIF it is using, >> so have a single dma data struct per rsnd_ssi will cause issue when >> SSI isn't working with BUSIF0. > First of all, "TDM (Ex) Split mode" is not yet supported. > And unfortunately, your patch is not enough for it. > I guess you enabled it with many local patches, > and posted one of them ? > > It is very advanced feature, we need to consider about > channel/sampling rate/data width/settings/address etc etc etc... > Lots of things we need to solve/care ! > DMA pointer is one of them. > > If we focus only to DMA, your patch is still wrong I think. > "Playback/Capture direction" is not related to this topic. > 1 DMA on 1 DAI is enough ? > And we need to update rsnd_gen2_dma_addr() too for DMA address. Yes, this patch is only one of a serial patch set to enable TDM (Ex) Split mode, I submitted it alone because think it is independent, but you are right, to make the background more clear, I will submit the whole patch set together with this single patch in v2, (this probably will take some time) Thanks, Jiada >> Do you have any suggestion to address this issue? > I have no idea at this point. > Missing part for TDM (Ex) Split mode is not only DMA pointer. > > Why do you want to use it ? > If you want to do is only "use 2 DAIs for playback", > how about to use MIXer ? It is already supported on upstream. > Best regards > --- > Kuninori Morimoto
diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi index a298df7..16f3214 100644 --- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi +++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi @@ -94,14 +94,24 @@ }; rsnd_ak4613: sound { - compatible = "simple-audio-card"; + compatible = "simple-scu-audio-card"; simple-audio-card,format = "left_j"; simple-audio-card,bitclock-master = <&sndcpu>; simple-audio-card,frame-master = <&sndcpu>; - sndcpu: simple-audio-card,cpu { - sound-dai = <&rcar_sound>; + simple-audio-card,prefix = "ak4613"; + simple-audio-card,routing = + "ak4613 Playback", "DAI0 Playback", + "DAI0 Capture", "ak4613 Capture", + "ak4613 Playback", "DAI1 Playback"; + + sndcpu: simple-audio-card,cpu@0 { + sound-dai = <&rcar_sound 0>; + }; + + simple-audio-card,cpu@1 { + sound-dai = <&rcar_sound 1>; }; sndcodec: simple-audio-card,codec { @@ -517,7 +527,7 @@ pinctrl-names = "default"; /* Single DAI */ - #sound-dai-cells = <0>; + #sound-dai-cells = <1>; /* audio_clkout0/1/2/3 */ #clock-cells = <1>; @@ -549,6 +559,9 @@ playback = <&ssi0 &src0 &dvc0>; capture = <&ssi1 &src1 &dvc1>; }; + dai1 { + playback = <&ssi0>; + }; }; };