aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Mack <daniel@caiaq.de>2009-03-10 11:41:00 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-03-10 15:44:04 -0400
commitcbf1146d5ee113152c5cdeb54ff9d4b2f0c91736 (patch)
tree0ddb8855b45b3f37234087fd78c86db7d88f2ccb
parent090cec81ae9b4ff0c1d301b722f0e6c5fb72d8f9 (diff)
ASoC: don't touch pxa-ssp registers when stream is running
In pxa_ssp_set_dai_fmt(), check whether there is anything to do at all. If there would be but the SSP port is in use already, bail out. Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--sound/soc/pxa/pxa-ssp.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sound/soc/pxa/pxa-ssp.c b/sound/soc/pxa/pxa-ssp.c
index 7fc13f03d1d2..52d97c4b82b1 100644
--- a/sound/soc/pxa/pxa-ssp.c
+++ b/sound/soc/pxa/pxa-ssp.c
@@ -522,6 +522,17 @@ static int pxa_ssp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
522 u32 sscr1; 522 u32 sscr1;
523 u32 sspsp; 523 u32 sspsp;
524 524
525 /* check if we need to change anything at all */
526 if (priv->dai_fmt == fmt)
527 return 0;
528
529 /* we can only change the settings if the port is not in use */
530 if (ssp_read_reg(ssp, SSCR0) & SSCR0_SSE) {
531 dev_err(&ssp->pdev->dev,
532 "can't change hardware dai format: stream is in use");
533 return -EINVAL;
534 }
535
525 /* reset port settings */ 536 /* reset port settings */
526 sscr0 = ssp_read_reg(ssp, SSCR0) & 537 sscr0 = ssp_read_reg(ssp, SSCR0) &
527 (SSCR0_ECS | SSCR0_NCS | SSCR0_MOD | SSCR0_ACS); 538 (SSCR0_ECS | SSCR0_NCS | SSCR0_MOD | SSCR0_ACS);