diff options
author | Markus Pargmann <mpa@pengutronix.de> | 2014-03-15 08:44:10 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-04-14 12:26:46 -0400 |
commit | 07a28dbe7ad8e72868239450ff796c90e621d46f (patch) | |
tree | 5dc4688ab715980e97e2ad5795a69a93f72ee040 | |
parent | 2b0db996ba2d9b833c2bd2d73cbf301abe11c60e (diff) |
ASoC: fsl-ssi: Fix i2s_mode variable setup
In fsl_ssi_hw_params() we update the I2S and NET bits using the i2s_mode
variable. The fsl_ssi_set_dai_fmt() function only writes the i2s-mode to
the i2s_mode variable and not the NET bit. This fixes it by adding that
bit to i2s_mode.
Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 144934eb9463..fdb123d6817c 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
@@ -745,7 +745,6 @@ static int fsl_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) | |||
745 | fsl_ssi_setup_reg_vals(ssi_private); | 745 | fsl_ssi_setup_reg_vals(ssi_private); |
746 | 746 | ||
747 | scr = read_ssi(&ssi->scr) & ~(CCSR_SSI_SCR_SYN | CCSR_SSI_SCR_I2S_MODE_MASK); | 747 | scr = read_ssi(&ssi->scr) & ~(CCSR_SSI_SCR_SYN | CCSR_SSI_SCR_I2S_MODE_MASK); |
748 | scr |= CCSR_SSI_SCR_NET; | ||
749 | 748 | ||
750 | mask = CCSR_SSI_STCR_TXBIT0 | CCSR_SSI_STCR_TFDIR | CCSR_SSI_STCR_TXDIR | | 749 | mask = CCSR_SSI_STCR_TXBIT0 | CCSR_SSI_STCR_TFDIR | CCSR_SSI_STCR_TXDIR | |
751 | CCSR_SSI_STCR_TSCKP | CCSR_SSI_STCR_TFSI | CCSR_SSI_STCR_TFSL | | 750 | CCSR_SSI_STCR_TSCKP | CCSR_SSI_STCR_TFSI | CCSR_SSI_STCR_TFSL | |
@@ -753,14 +752,15 @@ static int fsl_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) | |||
753 | stcr = read_ssi(&ssi->stcr) & ~mask; | 752 | stcr = read_ssi(&ssi->stcr) & ~mask; |
754 | srcr = read_ssi(&ssi->srcr) & ~mask; | 753 | srcr = read_ssi(&ssi->srcr) & ~mask; |
755 | 754 | ||
755 | ssi_private->i2s_mode = CCSR_SSI_SCR_NET; | ||
756 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { | 756 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { |
757 | case SND_SOC_DAIFMT_I2S: | 757 | case SND_SOC_DAIFMT_I2S: |
758 | switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { | 758 | switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { |
759 | case SND_SOC_DAIFMT_CBS_CFS: | 759 | case SND_SOC_DAIFMT_CBS_CFS: |
760 | ssi_private->i2s_mode = CCSR_SSI_SCR_I2S_MODE_MASTER; | 760 | ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_MASTER; |
761 | break; | 761 | break; |
762 | case SND_SOC_DAIFMT_CBM_CFM: | 762 | case SND_SOC_DAIFMT_CBM_CFM: |
763 | ssi_private->i2s_mode = CCSR_SSI_SCR_I2S_MODE_SLAVE; | 763 | ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_SLAVE; |
764 | break; | 764 | break; |
765 | default: | 765 | default: |
766 | return -EINVAL; | 766 | return -EINVAL; |
@@ -785,7 +785,7 @@ static int fsl_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) | |||
785 | CCSR_SSI_STCR_TXBIT0; | 785 | CCSR_SSI_STCR_TXBIT0; |
786 | break; | 786 | break; |
787 | case SND_SOC_DAIFMT_AC97: | 787 | case SND_SOC_DAIFMT_AC97: |
788 | ssi_private->i2s_mode = CCSR_SSI_SCR_I2S_MODE_NORMAL; | 788 | ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_NORMAL; |
789 | break; | 789 | break; |
790 | default: | 790 | default: |
791 | return -EINVAL; | 791 | return -EINVAL; |