diff options
| -rw-r--r-- | sound/soc/davinci/davinci-i2s.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/sound/soc/davinci/davinci-i2s.c b/sound/soc/davinci/davinci-i2s.c index 24fe9db2c75e..51ceded8a245 100644 --- a/sound/soc/davinci/davinci-i2s.c +++ b/sound/soc/davinci/davinci-i2s.c | |||
| @@ -241,10 +241,27 @@ static int davinci_i2s_set_dai_fmt(struct snd_soc_dai *cpu_dai, | |||
| 241 | rcr = DAVINCI_MCBSP_RCR_RFRLEN1(1); | 241 | rcr = DAVINCI_MCBSP_RCR_RFRLEN1(1); |
| 242 | xcr = DAVINCI_MCBSP_XCR_XFIG | DAVINCI_MCBSP_XCR_XFRLEN1(1); | 242 | xcr = DAVINCI_MCBSP_XCR_XFIG | DAVINCI_MCBSP_XCR_XFRLEN1(1); |
| 243 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { | 243 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { |
| 244 | case SND_SOC_DAIFMT_RIGHT_J: | 244 | case SND_SOC_DAIFMT_DSP_B: |
| 245 | break; | 245 | break; |
| 246 | case SND_SOC_DAIFMT_I2S: | 246 | case SND_SOC_DAIFMT_I2S: |
| 247 | case SND_SOC_DAIFMT_DSP_B: | 247 | /* Davinci doesn't support TRUE I2S, but some codecs will have |
| 248 | * the left and right channels contiguous. This allows | ||
| 249 | * dsp_a mode to be used with an inverted normal frame clk. | ||
| 250 | * If your codec is master and does not have contiguous | ||
| 251 | * channels, then you will have sound on only one channel. | ||
| 252 | * Try using a different mode, or codec as slave. | ||
| 253 | * | ||
| 254 | * The TLV320AIC33 is an example of a codec where this works. | ||
| 255 | * It has a variable bit clock frequency allowing it to have | ||
| 256 | * valid data on every bit clock. | ||
| 257 | * | ||
| 258 | * The TLV320AIC23 is an example of a codec where this does not | ||
| 259 | * work. It has a fixed bit clock frequency with progressively | ||
| 260 | * more empty bit clock slots between channels as the sample | ||
| 261 | * rate is lowered. | ||
| 262 | */ | ||
| 263 | fmt ^= SND_SOC_DAIFMT_NB_IF; | ||
| 264 | case SND_SOC_DAIFMT_DSP_A: | ||
| 248 | rcr |= DAVINCI_MCBSP_RCR_RDATDLY(1); | 265 | rcr |= DAVINCI_MCBSP_RCR_RDATDLY(1); |
| 249 | xcr |= DAVINCI_MCBSP_XCR_XDATDLY(1); | 266 | xcr |= DAVINCI_MCBSP_XCR_XDATDLY(1); |
| 250 | break; | 267 | break; |
