[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