diff options
-rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index d1d1e976cb88..7a625602273a 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
@@ -508,6 +508,9 @@ static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd, | |||
508 | write_ssi_mask(&ssi->scr, CCSR_SSI_SCR_TE, 0); | 508 | write_ssi_mask(&ssi->scr, CCSR_SSI_SCR_TE, 0); |
509 | else | 509 | else |
510 | write_ssi_mask(&ssi->scr, CCSR_SSI_SCR_RE, 0); | 510 | write_ssi_mask(&ssi->scr, CCSR_SSI_SCR_RE, 0); |
511 | |||
512 | if ((read_ssi(&ssi->scr) & (CCSR_SSI_SCR_TE | CCSR_SSI_SCR_RE)) == 0) | ||
513 | write_ssi_mask(&ssi->scr, CCSR_SSI_SCR_SSIEN, 0); | ||
511 | break; | 514 | break; |
512 | 515 | ||
513 | default: | 516 | default: |
@@ -532,15 +535,6 @@ static void fsl_ssi_shutdown(struct snd_pcm_substream *substream, | |||
532 | ssi_private->first_stream = ssi_private->second_stream; | 535 | ssi_private->first_stream = ssi_private->second_stream; |
533 | 536 | ||
534 | ssi_private->second_stream = NULL; | 537 | ssi_private->second_stream = NULL; |
535 | |||
536 | /* | ||
537 | * If this is the last active substream, disable the SSI. | ||
538 | */ | ||
539 | if (!ssi_private->first_stream) { | ||
540 | struct ccsr_ssi __iomem *ssi = ssi_private->ssi; | ||
541 | |||
542 | write_ssi_mask(&ssi->scr, CCSR_SSI_SCR_SSIEN, 0); | ||
543 | } | ||
544 | } | 538 | } |
545 | 539 | ||
546 | static int fsl_ssi_dai_probe(struct snd_soc_dai *dai) | 540 | static int fsl_ssi_dai_probe(struct snd_soc_dai *dai) |