aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Pargmann <mpa@pengutronix.de>2014-03-15 08:44:10 -0400
committerMark Brown <broonie@linaro.org>2014-04-14 12:26:46 -0400
commit07a28dbe7ad8e72868239450ff796c90e621d46f (patch)
tree5dc4688ab715980e97e2ad5795a69a93f72ee040
parent2b0db996ba2d9b833c2bd2d73cbf301abe11c60e (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.c8
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;