[PATCH v3 09/10] ASoC: renesas: fsi: Use clock prepare handling in startup/shutdown

From: phucduc . bui

Date: Sun May 10 2026 - 04:44:50 EST


From: bui duc phuc <phucduc.bui@xxxxxxxxx>

Use fsi_clk_prepare() and fsi_clk_unprepare() in dai_startup()
and dai_shutdown().

Prepare clocks only during active audio streams to reduce
unnecessary power usage, and ensure clk_prepare() and
related operations run in non-atomic contexts.

Signed-off-by: bui duc phuc <phucduc.bui@xxxxxxxxx>
---
sound/soc/renesas/fsi.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/sound/soc/renesas/fsi.c b/sound/soc/renesas/fsi.c
index b93809b5da15..c3ac8b30f342 100644
--- a/sound/soc/renesas/fsi.c
+++ b/sound/soc/renesas/fsi.c
@@ -1644,9 +1644,16 @@ static int fsi_dai_startup(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{
struct fsi_priv *fsi = fsi_get_priv(substream);
+ int ret;

fsi_clk_invalid(fsi);

+ if (fsi->clock.count == 0) {
+ ret = fsi_clk_prepare(fsi);
+ if (ret)
+ return ret;
+ }
+
return 0;
}

@@ -1655,6 +1662,8 @@ static void fsi_dai_shutdown(struct snd_pcm_substream *substream,
{
struct fsi_priv *fsi = fsi_get_priv(substream);

+ if (fsi->clock.count == 0)
+ fsi_clk_unprepare(fsi);
fsi_clk_invalid(fsi);
}

--
2.43.0