From: bui duc phuc <[email protected]>

snd_pcm_hw_constraint_minmax() may return 1, which is then returned
from mca_fe_startup(). ASoC only marks the DAI as started when
.startup() returns 0.

This currently has no functional impact, as mca_fe_ops has no
.shutdown() callback. Still, return 0 explicitly on success to
match what ASoC expects and ensure the DAI is correctly marked as
started.

Signed-off-by: bui duc phuc <[email protected]>
---
 sound/soc/apple/mca.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/sound/soc/apple/mca.c b/sound/soc/apple/mca.c
index be702b2942a5..26022a42a95e 100644
--- a/sound/soc/apple/mca.c
+++ b/sound/soc/apple/mca.c
@@ -516,6 +516,7 @@ static int mca_fe_startup(struct snd_pcm_substream 
*substream,
 {
        struct mca_cluster *cl = mca_dai_to_cluster(dai);
        unsigned int mask, nchannels;
+       int ret;
 
        if (cl->tdm_slots) {
                if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
@@ -528,9 +529,18 @@ static int mca_fe_startup(struct snd_pcm_substream 
*substream,
                nchannels = 2;
        }
 
-       return snd_pcm_hw_constraint_minmax(substream->runtime,
-                                           SNDRV_PCM_HW_PARAM_CHANNELS,
-                                           1, nchannels);
+       ret = snd_pcm_hw_constraint_minmax(substream->runtime,
+                                          SNDRV_PCM_HW_PARAM_CHANNELS,
+                                          1, nchannels);
+       if (ret < 0)
+               return ret;
+
+       /*
+        * ASoC only marks the DAI as started when .startup() returns 0.
+        * Since snd_pcm_hw_constraint_minmax() may return 1, explicitly
+        * return 0 to ensure the DAI is correctly marked as started.
+        */
+       return 0;
 }
 
 static int mca_fe_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
-- 
2.43.0


Reply via email to