diff options
-rw-r--r-- | sound/soc/fsl/fsl_sai.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index af802465456e..2ece14716c67 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c | |||
@@ -145,7 +145,6 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai *cpu_dai, | |||
145 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { | 145 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { |
146 | case SND_SOC_DAIFMT_I2S: | 146 | case SND_SOC_DAIFMT_I2S: |
147 | val_cr4 |= FSL_SAI_CR4_FSE; | 147 | val_cr4 |= FSL_SAI_CR4_FSE; |
148 | val_cr4 |= FSL_SAI_CR4_FSP; | ||
149 | break; | 148 | break; |
150 | default: | 149 | default: |
151 | return -EINVAL; | 150 | return -EINVAL; |
@@ -185,9 +184,6 @@ static int fsl_sai_set_dai_fmt_tr(struct snd_soc_dai *cpu_dai, | |||
185 | return -EINVAL; | 184 | return -EINVAL; |
186 | } | 185 | } |
187 | 186 | ||
188 | if (fsl_dir == FSL_FMT_RECEIVER) | ||
189 | val_cr2 |= FSL_SAI_CR2_SYNC; | ||
190 | |||
191 | sai_writel(sai, val_cr2, sai->base + reg_cr2); | 187 | sai_writel(sai, val_cr2, sai->base + reg_cr2); |
192 | sai_writel(sai, val_cr4, sai->base + reg_cr4); | 188 | sai_writel(sai, val_cr4, sai->base + reg_cr4); |
193 | 189 | ||
@@ -253,6 +249,7 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream, | |||
253 | val_cr5 |= FSL_SAI_CR5_WNW(word_width); | 249 | val_cr5 |= FSL_SAI_CR5_WNW(word_width); |
254 | val_cr5 |= FSL_SAI_CR5_W0W(word_width); | 250 | val_cr5 |= FSL_SAI_CR5_W0W(word_width); |
255 | 251 | ||
252 | val_cr5 &= ~FSL_SAI_CR5_FBT_MASK; | ||
256 | if (sai->big_endian_data) | 253 | if (sai->big_endian_data) |
257 | val_cr5 |= FSL_SAI_CR5_FBT(word_width - 1); | 254 | val_cr5 |= FSL_SAI_CR5_FBT(word_width - 1); |
258 | else | 255 | else |
@@ -272,7 +269,15 @@ static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd, | |||
272 | struct snd_soc_dai *cpu_dai) | 269 | struct snd_soc_dai *cpu_dai) |
273 | { | 270 | { |
274 | struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); | 271 | struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); |
275 | u32 tcsr, rcsr, val_cr3, reg_cr3; | 272 | u32 tcsr, rcsr, val_cr2, val_cr3, reg_cr3; |
273 | |||
274 | val_cr2 = sai_readl(sai, sai->base + FSL_SAI_TCR2); | ||
275 | val_cr2 &= ~FSL_SAI_CR2_SYNC; | ||
276 | sai_writel(sai, val_cr2, sai->base + FSL_SAI_TCR2); | ||
277 | |||
278 | val_cr2 = sai_readl(sai, sai->base + FSL_SAI_RCR2); | ||
279 | val_cr2 |= FSL_SAI_CR2_SYNC; | ||
280 | sai_writel(sai, val_cr2, sai->base + FSL_SAI_RCR2); | ||
276 | 281 | ||
277 | tcsr = sai_readl(sai, sai->base + FSL_SAI_TCSR); | 282 | tcsr = sai_readl(sai, sai->base + FSL_SAI_TCSR); |
278 | rcsr = sai_readl(sai, sai->base + FSL_SAI_RCSR); | 283 | rcsr = sai_readl(sai, sai->base + FSL_SAI_RCSR); |