RE: [PATCH v2 06/25] ASoC: sh: rz-ssi: Terminate all the DMA transactions

From: Biju Das
Date: Sun Nov 10 2024 - 03:38:06 EST




> -----Original Message-----
> From: Claudiu <claudiu.beznea@xxxxxxxxx>
> Sent: 08 November 2024 10:50
> To: geert+renesas@xxxxxxxxx; mturquette@xxxxxxxxxxxx; sboyd@xxxxxxxxxx; robh@xxxxxxxxxx;
> krzk+dt@xxxxxxxxxx; conor+dt@xxxxxxxxxx; Biju Das <biju.das.jz@xxxxxxxxxxxxxx>; Prabhakar Mahadev Lad
> <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>; lgirdwood@xxxxxxxxx; broonie@xxxxxxxxxx;
> magnus.damm@xxxxxxxxx; linus.walleij@xxxxxxxxxx; perex@xxxxxxxx; tiwai@xxxxxxxx;
> p.zabel@xxxxxxxxxxxxxx
> Cc: linux-renesas-soc@xxxxxxxxxxxxxxx; linux-clk@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; linux-sound@xxxxxxxxxxxxxxx; linux-gpio@xxxxxxxxxxxxxxx; Claudiu.Beznea
> <claudiu.beznea@xxxxxxxxx>; Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>; stable@xxxxxxxxxxxxxxx
> Subject: [PATCH v2 06/25] ASoC: sh: rz-ssi: Terminate all the DMA transactions
>
> From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
>
> In case of full duplex the 1st closed stream doesn't benefit from the dmaengine_terminate_async().
> Call it after the companion stream is closed.
>
> Fixes: 26ac471c5354 ("ASoC: sh: rz-ssi: Add SSI DMAC support")

Maybe add fixes tag for full duplex case as the separation of
Playback/ Capture is introduced in that patch.

> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>

Reviewed-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>

Cheers,
Biju

> ---
>
> Changes in v2:
> - none
>
> sound/soc/renesas/rz-ssi.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/renesas/rz-ssi.c b/sound/soc/renesas/rz-ssi.c index 6efd017aaa7f..2d8721156099
> 100644
> --- a/sound/soc/renesas/rz-ssi.c
> +++ b/sound/soc/renesas/rz-ssi.c
> @@ -415,8 +415,12 @@ static int rz_ssi_stop(struct rz_ssi_priv *ssi, struct rz_ssi_stream *strm)
> rz_ssi_reg_mask_setl(ssi, SSICR, SSICR_TEN | SSICR_REN, 0);
>
> /* Cancel all remaining DMA transactions */
> - if (rz_ssi_is_dma_enabled(ssi))
> - dmaengine_terminate_async(strm->dma_ch);
> + if (rz_ssi_is_dma_enabled(ssi)) {
> + if (ssi->playback.dma_ch)
> + dmaengine_terminate_async(ssi->playback.dma_ch);
> + if (ssi->capture.dma_ch)
> + dmaengine_terminate_async(ssi->capture.dma_ch);
> + }
>
> rz_ssi_set_idle(ssi);
>
> --
> 2.39.2