All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ASoC: samsung - Don't setup i2s if already active.
@ 2012-11-08 22:46 Dylan Reid
  2012-11-09 16:08 ` Mark Brown
  0 siblings, 1 reply; 3+ messages in thread
From: Dylan Reid @ 2012-11-08 22:46 UTC (permalink / raw)
  To: alsa-devel; +Cc: padma.v, sbkim73, sangsu4u.park, broonie, Dylan Reid, lrg

If the dai is already running when setup is called, skip setup.  Setting
up again caused set_sysclk to set rclk_srcrate to other->rclk_srcrate,
other would often be set to the default of 44.1.  Playing a 48k stream
then adding a 48k capture stream would lead to both streams set to 44.1
(The value of other->rclk_srcrate).

Similarly in shutdown, if either playback or capture is still active,
return instead of turning off the clocks.

Signed-off-by: Dylan Reid <dgreid@chromium.org>
---
 sound/soc/samsung/i2s.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
index 40b00a1..b9935dd 100644
--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -637,6 +637,10 @@ static int i2s_startup(struct snd_pcm_substream *substream,
 	struct i2s_dai *other = i2s->pri_dai ? : i2s->sec_dai;
 	unsigned long flags;
 
+	/* Check not already running. */
+	if (dai->playback_active || dai->capture_active)
+		return 0;
+
 	spin_lock_irqsave(&lock, flags);
 
 	i2s->mode |= DAI_OPENED;
@@ -661,6 +665,10 @@ static void i2s_shutdown(struct snd_pcm_substream *substream,
 	struct i2s_dai *other = i2s->pri_dai ? : i2s->sec_dai;
 	unsigned long flags;
 
+	/* Check not still running. */
+	if (dai->playback_active || dai->capture_active)
+		return;
+
 	spin_lock_irqsave(&lock, flags);
 
 	i2s->mode &= ~DAI_OPENED;
-- 
1.7.12.146.g16d26b1

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

end of thread, other threads:[~2012-11-09 20:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-08 22:46 [PATCH] ASoC: samsung - Don't setup i2s if already active Dylan Reid
2012-11-09 16:08 ` Mark Brown
2012-11-09 20:05   ` Dylan Reid

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.