All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ASoC: uda134x: Use core for applying symmetry constraitns
@ 2014-02-16 21:35 Lars-Peter Clausen
  2014-02-17  9:10 ` Lars-Peter Clausen
  0 siblings, 1 reply; 2+ messages in thread
From: Lars-Peter Clausen @ 2014-02-16 21:35 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood; +Cc: Russell King, alsa-devel, Lars-Peter Clausen

Let the core take care of applying sample rate and sample bits constraints
instead of open-coding this in the driver.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
Only compile tested
---
 sound/soc/codecs/uda134x.c | 52 +++-------------------------------------------
 1 file changed, 3 insertions(+), 49 deletions(-)

diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c
index c94d4c1..43b88ee 100644
--- a/sound/soc/codecs/uda134x.c
+++ b/sound/soc/codecs/uda134x.c
@@ -34,9 +34,6 @@
 struct uda134x_priv {
 	int sysclk;
 	int dai_fmt;
-
-	struct snd_pcm_substream *master_substream;
-	struct snd_pcm_substream *slave_substream;
 };
 
 /* In-data addresses are hard-coded into the reg-cache values */
@@ -156,49 +153,6 @@ static int uda134x_mute(struct snd_soc_dai *dai, int mute)
 	return 0;
 }
 
-static int uda134x_startup(struct snd_pcm_substream *substream,
-	struct snd_soc_dai *dai)
-{
-	struct snd_soc_codec *codec = dai->codec;
-	struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
-	struct snd_pcm_runtime *master_runtime;
-
-	if (uda134x->master_substream) {
-		master_runtime = uda134x->master_substream->runtime;
-
-		pr_debug("%s constraining to %d bits at %d\n", __func__,
-			 master_runtime->sample_bits,
-			 master_runtime->rate);
-
-		snd_pcm_hw_constraint_minmax(substream->runtime,
-					     SNDRV_PCM_HW_PARAM_RATE,
-					     master_runtime->rate,
-					     master_runtime->rate);
-
-		snd_pcm_hw_constraint_minmax(substream->runtime,
-					     SNDRV_PCM_HW_PARAM_SAMPLE_BITS,
-					     master_runtime->sample_bits,
-					     master_runtime->sample_bits);
-
-		uda134x->slave_substream = substream;
-	} else
-		uda134x->master_substream = substream;
-
-	return 0;
-}
-
-static void uda134x_shutdown(struct snd_pcm_substream *substream,
-	struct snd_soc_dai *dai)
-{
-	struct snd_soc_codec *codec = dai->codec;
-	struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
-
-	if (uda134x->master_substream == substream)
-		uda134x->master_substream = uda134x->slave_substream;
-
-	uda134x->slave_substream = NULL;
-}
-
 static int uda134x_hw_params(struct snd_pcm_substream *substream,
 	struct snd_pcm_hw_params *params,
 	struct snd_soc_dai *dai)
@@ -208,7 +162,7 @@ static int uda134x_hw_params(struct snd_pcm_substream *substream,
 	struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 	u8 hw_params;
 
-	if (substream == uda134x->slave_substream) {
+	if (dai->active) {
 		pr_debug("%s ignoring hw_params for slave substream\n",
 			 __func__);
 		return 0;
@@ -447,8 +401,6 @@ static const struct snd_soc_dapm_route uda134x_dapm_routes[] = {
 };
 
 static const struct snd_soc_dai_ops uda134x_dai_ops = {
-	.startup	= uda134x_startup,
-	.shutdown	= uda134x_shutdown,
 	.hw_params	= uda134x_hw_params,
 	.digital_mute	= uda134x_mute,
 	.set_sysclk	= uda134x_set_dai_sysclk,
@@ -475,6 +427,8 @@ static struct snd_soc_dai_driver uda134x_dai = {
 	},
 	/* pcm operations */
 	.ops = &uda134x_dai_ops,
+	.symmetric_rates = 1,
+	.symmetric_samplebits = 1,
 };
 
 static int uda134x_soc_probe(struct snd_soc_codec *codec)
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-02-17  9:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-16 21:35 [PATCH] ASoC: uda134x: Use core for applying symmetry constraitns Lars-Peter Clausen
2014-02-17  9:10 ` Lars-Peter Clausen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.