diff options
author | Daniel Mack <daniel@caiaq.de> | 2009-03-10 16:41:00 +0100 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-03-10 19:44:04 +0000 |
commit | cbf1146d5ee113152c5cdeb54ff9d4b2f0c91736 (patch) | |
tree | 0ddb8855b45b3f37234087fd78c86db7d88f2ccb /sound/soc | |
parent | 090cec81ae9b4ff0c1d301b722f0e6c5fb72d8f9 (diff) | |
download | op-kernel-dev-cbf1146d5ee113152c5cdeb54ff9d4b2f0c91736.zip op-kernel-dev-cbf1146d5ee113152c5cdeb54ff9d4b2f0c91736.tar.gz |
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>
Diffstat (limited to 'sound/soc')
-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 7fc13f0..52d97c4 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, u32 sscr1; u32 sspsp; + /* check if we need to change anything at all */ + if (priv->dai_fmt == fmt) + return 0; + + /* we can only change the settings if the port is not in use */ + if (ssp_read_reg(ssp, SSCR0) & SSCR0_SSE) { + dev_err(&ssp->pdev->dev, + "can't change hardware dai format: stream is in use"); + return -EINVAL; + } + /* reset port settings */ sscr0 = ssp_read_reg(ssp, SSCR0) & (SSCR0_ECS | SSCR0_NCS | SSCR0_MOD | SSCR0_ACS); |