Hi JiadaYes, only when SSI works in Split/Ex-Split mode, BUSIFx other than 0 is necessary
Thank you for your patch
in GEN3 SSI may use different BUSIF for data transfer,If my understanding was correct, the chance to use BUSIFx is when TDM split mode.
this patch adds busif property to each dai stream,
to indicate the BUSIF used by playback/capture stream.
Also adds rsnd_ssi_select_busif() to automatically select
BUSIF (currently only BUSIF0 is selected)
Signed-off-by: Jiada Wang <jiada_wang@xxxxxxxxxx>
---
sound/soc/sh/rcar/core.c | 3 +++
sound/soc/sh/rcar/dma.c | 31 +++++++++++++++++++++++++++++++
sound/soc/sh/rcar/rsnd.h | 3 +++
sound/soc/sh/rcar/ssi.c | 30 +++++++++++++++++++++++++++++-
4 files changed, 66 insertions(+), 1 deletion(-)
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 40d7dc4f7839..5e3e6e65bcdf 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -1158,6 +1158,9 @@ static int rsnd_hw_params(struct snd_pcm_substream *substream,
struct rsnd_dai *rdai = rsnd_dai_to_rdai(dai);
struct rsnd_dai_stream *io = rsnd_rdai_to_io(rdai, substream);
int ret;
+ int chan = rsnd_runtime_channel_for_ssi_with_params(io, hw_params);
+
+ rsnd_ssi_select_busif(io, chan);
And this patch selects it on runtime (= hw_param) ?Because, in order to automatically determine BUSIF number,
But, I think we can/should select it on probe timing from DT connection.with the above reasoning, BUSIF is selected on runtime.
Am I misunderstanding ?
I'm not sure how to select, but adding new ssiuX0 - ssiuX7
is realistic idea (parse sound card is not realistic...) ?
If so, your rxu/txu DMA can be more simple ?