diff options
Diffstat (limited to 'sound/soc/pxa/pxa-ssp.c')
-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); |