Merge remote-tracking branches 'asoc/topic/da7218', 'asoc/topic/da7219' and 'asoc/topic/dpcm' into asoc-next
此提交包含在:
@@ -1819,7 +1819,7 @@ static int da7218_set_dai_sysclk(struct snd_soc_dai *codec_dai,
|
||||
if (da7218->mclk_rate == freq)
|
||||
return 0;
|
||||
|
||||
if (((freq < 2000000) && (freq != 32768)) || (freq > 54000000)) {
|
||||
if ((freq < 2000000) || (freq > 54000000)) {
|
||||
dev_err(codec_dai->dev, "Unsupported MCLK value %d\n",
|
||||
freq);
|
||||
return -EINVAL;
|
||||
@@ -1866,11 +1866,8 @@ static int da7218_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
|
||||
u32 freq_ref;
|
||||
u64 frac_div;
|
||||
|
||||
/* Verify 32KHz, 2MHz - 54MHz MCLK provided, and set input divider */
|
||||
if (da7218->mclk_rate == 32768) {
|
||||
indiv_bits = DA7218_PLL_INDIV_9_TO_18_MHZ;
|
||||
indiv = DA7218_PLL_INDIV_9_TO_18_MHZ_VAL;
|
||||
} else if (da7218->mclk_rate < 2000000) {
|
||||
/* Verify 2MHz - 54MHz MCLK provided, and set input divider */
|
||||
if (da7218->mclk_rate < 2000000) {
|
||||
dev_err(codec->dev, "PLL input clock %d below valid range\n",
|
||||
da7218->mclk_rate);
|
||||
return -EINVAL;
|
||||
@@ -1911,9 +1908,6 @@ static int da7218_set_dai_pll(struct snd_soc_dai *codec_dai, int pll_id,
|
||||
case DA7218_SYSCLK_PLL_SRM:
|
||||
pll_ctrl |= DA7218_PLL_MODE_SRM;
|
||||
break;
|
||||
case DA7218_SYSCLK_PLL_32KHZ:
|
||||
pll_ctrl |= DA7218_PLL_MODE_32KHZ;
|
||||
break;
|
||||
default:
|
||||
dev_err(codec->dev, "Invalid PLL config\n");
|
||||
return -EINVAL;
|
||||
@@ -2589,20 +2583,22 @@ static int da7218_set_bias_level(struct snd_soc_codec *codec,
|
||||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_ON:
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* MCLK */
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
/* Enable MCLK for transition to ON state */
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY) {
|
||||
if (da7218->mclk) {
|
||||
ret = clk_prepare_enable(da7218->mclk);
|
||||
if (ret) {
|
||||
dev_err(codec->dev,
|
||||
"Failed to enable mclk\n");
|
||||
dev_err(codec->dev, "Failed to enable mclk\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Master bias */
|
||||
snd_soc_update_bits(codec, DA7218_REFERENCES,
|
||||
DA7218_BIAS_EN_MASK,
|
||||
@@ -2612,6 +2608,10 @@ static int da7218_set_bias_level(struct snd_soc_codec *codec,
|
||||
snd_soc_update_bits(codec, DA7218_LDO_CTRL,
|
||||
DA7218_LDO_EN_MASK,
|
||||
DA7218_LDO_EN_MASK);
|
||||
} else {
|
||||
/* Remove MCLK */
|
||||
if (da7218->mclk)
|
||||
clk_disable_unprepare(da7218->mclk);
|
||||
}
|
||||
break;
|
||||
case SND_SOC_BIAS_OFF:
|
||||
@@ -2625,10 +2625,6 @@ static int da7218_set_bias_level(struct snd_soc_codec *codec,
|
||||
snd_soc_update_bits(codec, DA7218_REFERENCES,
|
||||
DA7218_BIAS_EN_MASK, 0);
|
||||
}
|
||||
|
||||
/* MCLK */
|
||||
if (da7218->mclk)
|
||||
clk_disable_unprepare(da7218->mclk);
|
||||
break;
|
||||
}
|
||||
|
||||
|
新增問題並參考
封鎖使用者