From: Claudiu Beznea <claudiu.beznea@tuxon.dev>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: mturquette@baylibre.com, sboyd@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org,
biju.das.jz@bp.renesas.com,
prabhakar.mahadev-lad.rj@bp.renesas.com, lgirdwood@gmail.com,
broonie@kernel.org, magnus.damm@gmail.com,
linus.walleij@linaro.org, perex@perex.cz, tiwai@suse.com,
p.zabel@pengutronix.de, linux-renesas-soc@vger.kernel.org,
linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org,
linux-gpio@vger.kernel.org,
Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>,
stable@vger.kernel.org
Subject: Re: [PATCH v3 06/25] ASoC: renesas: rz-ssi: Terminate all the DMA transactions
Date: Mon, 9 Dec 2024 15:28:14 +0200 [thread overview]
Message-ID: <c65b8dd7-86e9-4a87-b9ec-bcbaae6dbe98@tuxon.dev> (raw)
In-Reply-To: <CAMuHMdUa9GnzOMOBhpQcX88Yy2qvgKmKMdeEwEVo-OXgr-3SMg@mail.gmail.com>
Hi, Geert,
On 09.12.2024 15:15, Geert Uytterhoeven wrote:
> Hi Claudiu,
>
> On Wed, Nov 13, 2024 at 2:35 PM Claudiu <claudiu.beznea@tuxon.dev> wrote:
>> From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>>
>> 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: 4f8cd05a4305 ("ASoC: sh: rz-ssi: Add full duplex support")
>> Cc: stable@vger.kernel.org
>> Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
>
> Thanks for your patch!
>
>> Changes in v3:
>> - collected tags
>> - use proper fixes commit SHA1 and description
>
> I am not sure which one is the correct one: the above, or commit> 26ac471c5354583c ("ASoC: sh: rz-ssi: Add SSI DMAC support")...
IIRC, I had this one on the previous version but in the review process it
has been proposed to used 4f8cd05a4305 ("ASoC: sh: rz-ssi: Add full duplex
support"). I think 4f8cd05a4305 ("ASoC: sh: rz-ssi: Add full duplex
support") is the right one as the issue is related to full duplex.
>
>> --- 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_stop() is called twice: once for capture, and a second time for
> playback. How come that doesn't stop both?
It is called from this path:
static int rz_ssi_dai_trigger(struct snd_pcm_substream *substream, int cmd,
struct snd_soc_dai *dai)
{
// ...
case SNDRV_PCM_TRIGGER_STOP:
rz_ssi_stop(ssi, strm);
rz_ssi_stream_quit(ssi, strm);
// ...
}
rz_ssi_stop() is as follow:
static int rz_ssi_stop(struct rz_ssi_priv *ssi, struct rz_ssi_stream *strm)
{
strm->running = 0;
if (rz_ssi_is_stream_running(&ssi->playback) ||
rz_ssi_is_stream_running(&ssi->capture))
return 0;
// ...
}
rz_ssi_is_stream_running() is as follows:
static inline bool rz_ssi_is_stream_running(struct rz_ssi_stream *strm)
{
return strm->substream && strm->running;
}
The strm->substream is set to NULL in:
static void rz_ssi_stream_quit(struct rz_ssi_priv *ssi,
struct rz_ssi_stream *strm)
{
struct snd_soc_dai *dai = rz_ssi_get_dai(strm->substream);
rz_ssi_set_substream(strm, NULL);
// ...
}
Thus, when the 1st full duplex stream is closed, as the companion stream is
still running it doesn't benefit from dmaengine_terminate_async().
I'll update the commit description in the next version.
Thank you for your review,
Claudiu
> Perhaps the checks at the top of rz_ssi_stop() are not correct?
> Disclaimer: I am no sound expert, so I may be missing something...
>
>>
>> rz_ssi_set_idle(ssi);
>
> Gr{oetje,eeting}s,
>
> Geert
>
next prev parent reply other threads:[~2024-12-09 13:28 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-13 13:35 [PATCH v3 00/25] Add audio support for the Renesas RZ/G3S SoC Claudiu
2024-11-13 13:35 ` [PATCH v3 01/25] clk: renesas: r9a08g045-cpg: Add clocks, resets and power domains support for SSI Claudiu
2024-11-27 14:46 ` Geert Uytterhoeven
2024-11-27 17:21 ` Claudiu Beznea
2024-11-13 13:35 ` [PATCH v3 02/25] clk: versaclock3: Prepare for the addition of 5L35023 device Claudiu
2024-12-09 10:57 ` Geert Uytterhoeven
2024-12-09 11:14 ` Claudiu Beznea
2024-12-09 12:16 ` Geert Uytterhoeven
2024-12-09 12:22 ` Claudiu Beznea
2024-12-09 12:23 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 03/25] dt-bindings: clock: versaclock3: Document 5L35023 Versa3 clock generator Claudiu
2024-12-09 12:48 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 04/25] clk: versaclock3: Add support for the 5L35023 variant Claudiu
2024-12-09 12:54 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 05/25] pinctrl: renesas: rzg2l: Add audio clock pins Claudiu
2024-11-18 22:54 ` Linus Walleij
2024-11-27 14:32 ` Geert Uytterhoeven
2024-11-27 17:22 ` Claudiu Beznea
2024-11-13 13:35 ` [PATCH v3 06/25] ASoC: renesas: rz-ssi: Terminate all the DMA transactions Claudiu
2024-12-09 13:15 ` Geert Uytterhoeven
2024-12-09 13:28 ` Claudiu Beznea [this message]
2024-11-13 13:35 ` [PATCH v3 07/25] ASoC: renesas: rz-ssi: Use only the proper amount of dividers Claudiu
2024-12-09 13:22 ` Geert Uytterhoeven
2024-12-09 13:31 ` Claudiu Beznea
2024-12-09 14:28 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 08/25] ASoC: renesas: rz-ssi: Fix typo on SSI_RATES macro comment Claudiu
2024-12-09 13:23 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 09/25] ASoC: renesas: rz-ssi: Remove pdev member of struct rz_ssi_priv Claudiu
2024-12-09 13:24 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 10/25] ASoC: renesas: rz-ssi: Remove the rz_ssi_get_dai() function Claudiu
2024-12-09 13:28 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 11/25] ASoC: renesas: rz-ssi: Remove the first argument of rz_ssi_stream_is_play() Claudiu
2024-12-09 13:29 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 12/25] ASoC: renesas: rz-ssi: Use readl_poll_timeout_atomic() Claudiu
2024-12-09 13:33 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 13/25] ASoC: renesas: rz-ssi: Use temporary variable for struct device Claudiu
2024-12-09 13:35 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 14/25] ASoC: renesas: rz-ssi: Use goto label names that specify their actions Claudiu
2024-12-09 13:51 ` Geert Uytterhoeven
2024-12-10 9:56 ` Claudiu Beznea
2024-12-10 10:01 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 15/25] ASoC: renesas: rz-ssi: Rely on the ASoC subsystem to runtime resume/suspend the SSI Claudiu
2024-12-09 13:55 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 16/25] ASoC: renesas: rz-ssi: Enable runtime PM autosuspend support Claudiu
2024-12-09 13:58 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 17/25] ASoC: renesas: rz-ssi: Add runtime PM support Claudiu
2024-12-09 14:07 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 18/25] ASoC: renesas: rz-ssi: Issue software reset in hw_params API Claudiu
2024-12-09 14:09 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 19/25] ASoC: renesas: rz-ssi: Add suspend to RAM support Claudiu
2024-11-13 13:35 ` [PATCH v3 20/25] ASoC: dt-bindings: renesas,rz-ssi: Document the Renesas RZ/G3S SoC Claudiu
2024-12-09 14:24 ` Geert Uytterhoeven
2024-12-09 14:36 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 21/25] arm64: dts: renesas: r9a08g045: Add SSI nodes Claudiu
2024-11-13 13:57 ` Biju Das
2024-12-09 15:12 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 22/25] arm64: dts: renesas: rzg3s-smarc-som: Add versa3 clock generator node Claudiu
2024-11-13 13:57 ` Biju Das
2024-12-09 15:42 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 23/25] arm64: dts: renesas: Add da7212 audio codec node Claudiu
2024-12-09 15:49 ` Geert Uytterhoeven
2024-12-10 9:59 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 24/25] arm64: dts: renesas: rzg3s-smarc: Enable SSI3 Claudiu
2024-12-09 15:27 ` Geert Uytterhoeven
2024-11-13 13:35 ` [PATCH v3 25/25] arm64: dts: renesas: rzg3s-smarc: Add sound card Claudiu
2024-12-09 15:55 ` Geert Uytterhoeven
2024-12-09 11:00 ` [PATCH v3 00/25] Add audio support for the Renesas RZ/G3S SoC Geert Uytterhoeven
2024-12-11 17:46 ` (subset) " Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c65b8dd7-86e9-4a87-b9ec-bcbaae6dbe98@tuxon.dev \
--to=claudiu.beznea@tuxon.dev \
--cc=biju.das.jz@bp.renesas.com \
--cc=broonie@kernel.org \
--cc=claudiu.beznea.uj@bp.renesas.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=geert@linux-m68k.org \
--cc=krzk+dt@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mturquette@baylibre.com \
--cc=p.zabel@pengutronix.de \
--cc=perex@perex.cz \
--cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox