提交 338de9d9 编写于 作者: V Vladimir Zapolskiy 提交者: Mark Brown

ASoC: uda134x: correct bias level setup for codecs family

For UDA1341 codec power control is managed in STATUS1 register, and
for all other codecs in DATA011 register.
Signed-off-by: NVladimir Zapolskiy <vzapolskiy@gmail.com>
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 ed632ad3
...@@ -341,9 +341,23 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec, ...@@ -341,9 +341,23 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec,
switch (level) { switch (level) {
case SND_SOC_BIAS_ON: case SND_SOC_BIAS_ON:
/* ADC, DAC on */ /* ADC, DAC on */
switch (pd->model) {
case UDA134X_UDA1340:
case UDA134X_UDA1344:
case UDA134X_UDA1345:
reg = uda134x_read_reg_cache(codec, UDA134X_DATA011);
uda134x_write(codec, UDA134X_DATA011, reg | 0x03);
break;
case UDA134X_UDA1341:
reg = uda134x_read_reg_cache(codec, UDA134X_STATUS1); reg = uda134x_read_reg_cache(codec, UDA134X_STATUS1);
uda134x_write(codec, UDA134X_STATUS1, reg | 0x03); uda134x_write(codec, UDA134X_STATUS1, reg | 0x03);
break; break;
default:
printk(KERN_ERR "UDA134X SoC codec: "
"unsupported model %d\n", pd->model);
return -EINVAL;
}
break;
case SND_SOC_BIAS_PREPARE: case SND_SOC_BIAS_PREPARE:
/* power on */ /* power on */
if (pd->power) { if (pd->power) {
...@@ -355,9 +369,23 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec, ...@@ -355,9 +369,23 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec,
break; break;
case SND_SOC_BIAS_STANDBY: case SND_SOC_BIAS_STANDBY:
/* ADC, DAC power off */ /* ADC, DAC power off */
switch (pd->model) {
case UDA134X_UDA1340:
case UDA134X_UDA1344:
case UDA134X_UDA1345:
reg = uda134x_read_reg_cache(codec, UDA134X_DATA011);
uda134x_write(codec, UDA134X_DATA011, reg & ~(0x03));
break;
case UDA134X_UDA1341:
reg = uda134x_read_reg_cache(codec, UDA134X_STATUS1); reg = uda134x_read_reg_cache(codec, UDA134X_STATUS1);
uda134x_write(codec, UDA134X_STATUS1, reg & ~(0x03)); uda134x_write(codec, UDA134X_STATUS1, reg & ~(0x03));
break; break;
default:
printk(KERN_ERR "UDA134X SoC codec: "
"unsupported model %d\n", pd->model);
return -EINVAL;
}
break;
case SND_SOC_BIAS_OFF: case SND_SOC_BIAS_OFF:
/* power off */ /* power off */
if (pd->power) if (pd->power)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册