未验证 提交 dcb407b2 编写于 作者: A Andrew F. Davis 提交者: Mark Brown

ASoC: tlv320aic31xx: Handle inverted BCLK in non-DSP modes

Currently BCLK inverting is only handled when the DAI format is
DSP, but the BCLK may be inverted in any supported mode. Without
this using this CODEC in any other mode than DSP with the BCLK
inverted leads to bad sampling timing and very poor audio quality.
Signed-off-by: NAndrew F. Davis <afd@ti.com>
Signed-off-by: NMark Brown <broonie@kernel.org>
上级 77f8b3cf
...@@ -938,6 +938,18 @@ static int aic31xx_set_dai_fmt(struct snd_soc_dai *codec_dai, ...@@ -938,6 +938,18 @@ static int aic31xx_set_dai_fmt(struct snd_soc_dai *codec_dai,
return -EINVAL; return -EINVAL;
} }
/* signal polarity */
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
case SND_SOC_DAIFMT_NB_NF:
break;
case SND_SOC_DAIFMT_IB_NF:
iface_reg2 |= AIC31XX_BCLKINV_MASK;
break;
default:
dev_err(codec->dev, "Invalid DAI clock signal polarity\n");
return -EINVAL;
}
/* interface format */ /* interface format */
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S: case SND_SOC_DAIFMT_I2S:
...@@ -945,16 +957,12 @@ static int aic31xx_set_dai_fmt(struct snd_soc_dai *codec_dai, ...@@ -945,16 +957,12 @@ static int aic31xx_set_dai_fmt(struct snd_soc_dai *codec_dai,
case SND_SOC_DAIFMT_DSP_A: case SND_SOC_DAIFMT_DSP_A:
dsp_a_val = 0x1; /* fall through */ dsp_a_val = 0x1; /* fall through */
case SND_SOC_DAIFMT_DSP_B: case SND_SOC_DAIFMT_DSP_B:
/* NOTE: BCLKINV bit value 1 equas NB and 0 equals IB */ /*
switch (fmt & SND_SOC_DAIFMT_INV_MASK) { * NOTE: This CODEC samples on the falling edge of BCLK in
case SND_SOC_DAIFMT_NB_NF: * DSP mode, this is inverted compared to what most DAIs
iface_reg2 |= AIC31XX_BCLKINV_MASK; * expect, so we invert for this mode
break; */
case SND_SOC_DAIFMT_IB_NF: iface_reg2 ^= AIC31XX_BCLKINV_MASK;
break;
default:
return -EINVAL;
}
iface_reg1 |= (AIC31XX_DSP_MODE << iface_reg1 |= (AIC31XX_DSP_MODE <<
AIC31XX_IFACE1_DATATYPE_SHIFT); AIC31XX_IFACE1_DATATYPE_SHIFT);
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册