diff options
author | Daniel Mack <daniel@caiaq.de> | 2009-03-10 11:41:00 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-03-10 15:44:04 -0400 |
commit | cbf1146d5ee113152c5cdeb54ff9d4b2f0c91736 (patch) | |
tree | 0ddb8855b45b3f37234087fd78c86db7d88f2ccb | |
parent | 090cec81ae9b4ff0c1d301b722f0e6c5fb72d8f9 (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.c | 11 |
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); |