diff mbox series

[01/44] ASoC: soc-pcm: revert soc_pcm_apply_symmetry()

Message ID 87y2guoljm.wl-kuninori.morimoto.gx@renesas.com
State Accepted
Commit 80f454e283708c28f5220eda68511fc495e5ffaf
Headers show
Series ASoC: sync parameter naming : rate / sample_bits | expand

Commit Message

Kuninori Morimoto Jan. 15, 2021, 4:52 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

commit a39748d03cbc ("ASoC: soc-pcm: cleanup soc_pcm_apply_symmetry()")
was applied by miscommunication.
To more cleanup code, and to be easy review, this patch reverts it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 sound/soc/soc-pcm.c | 67 +++++++++++++++++++++++++++++++--------------
 1 file changed, 47 insertions(+), 20 deletions(-)
diff mbox series

Patch

diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index f62136f16c2f..6e9f14d482ab 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -349,26 +349,53 @@  static int soc_pcm_apply_symmetry(struct snd_pcm_substream *substream,
 	struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
 	int ret;
 
-#define __soc_pcm_apply_symmetry(name, sname, NAME)			\
-	if (soc_dai->name && (soc_dai->driver->symmetric_##sname ||	\
-			      rtd->dai_link->symmetric_##sname)) {	\
-		dev_dbg(soc_dai->dev, "ASoC: Symmetry forces %s to %d\n",\
-			#name, soc_dai->name);				\
-									\
-		ret = snd_pcm_hw_constraint_single(substream->runtime,	\
-						   SNDRV_PCM_HW_PARAM_##NAME,\
-						   soc_dai->name);	\
-		if (ret < 0) {						\
-			dev_err(soc_dai->dev,				\
-				"ASoC: Unable to apply %s constraint: %d\n",\
-				#name, ret);				\
-			return ret;					\
-		}							\
-	}
-
-	__soc_pcm_apply_symmetry(rate,		rates,		RATE);
-	__soc_pcm_apply_symmetry(channels,	channels,	CHANNELS);
-	__soc_pcm_apply_symmetry(sample_bits,	samplebits,	SAMPLE_BITS);
+	if (soc_dai->rate && (soc_dai->driver->symmetric_rates ||
+				rtd->dai_link->symmetric_rates)) {
+		dev_dbg(soc_dai->dev, "ASoC: Symmetry forces %dHz rate\n",
+				soc_dai->rate);
+
+		ret = snd_pcm_hw_constraint_single(substream->runtime,
+						SNDRV_PCM_HW_PARAM_RATE,
+						soc_dai->rate);
+		if (ret < 0) {
+			dev_err(soc_dai->dev,
+				"ASoC: Unable to apply rate constraint: %d\n",
+				ret);
+			return ret;
+		}
+	}
+
+	if (soc_dai->channels && (soc_dai->driver->symmetric_channels ||
+				rtd->dai_link->symmetric_channels)) {
+		dev_dbg(soc_dai->dev, "ASoC: Symmetry forces %d channel(s)\n",
+				soc_dai->channels);
+
+		ret = snd_pcm_hw_constraint_single(substream->runtime,
+						SNDRV_PCM_HW_PARAM_CHANNELS,
+						soc_dai->channels);
+		if (ret < 0) {
+			dev_err(soc_dai->dev,
+				"ASoC: Unable to apply channel symmetry constraint: %d\n",
+				ret);
+			return ret;
+		}
+	}
+
+	if (soc_dai->sample_bits && (soc_dai->driver->symmetric_samplebits ||
+				rtd->dai_link->symmetric_samplebits)) {
+		dev_dbg(soc_dai->dev, "ASoC: Symmetry forces %d sample bits\n",
+				soc_dai->sample_bits);
+
+		ret = snd_pcm_hw_constraint_single(substream->runtime,
+						SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
+						soc_dai->sample_bits);
+		if (ret < 0) {
+			dev_err(soc_dai->dev,
+				"ASoC: Unable to apply sample bits symmetry constraint: %d\n",
+				ret);
+			return ret;
+		}
+	}
 
 	return 0;
 }