[alsa-devel] [PATCH 2/2 v2] ASoC: uda134x: correct bias level setup for codecs family
Vladimir Zapolskiy
vzapolskiy at gmail.com
Thu Jun 24 21:44:24 CEST 2010
Mark, Liam,
do you have more comments about this fix?
On Thu, Jun 24, 2010 at 5:19 PM, Vladimir Zapolskiy
<vzapolskiy at gmail.com> wrote:
> For UDA1341 codec power control is managed in STATUS1 register, and
> for all other codecs in DATA011 register.
>
> Signed-off-by: Vladimir Zapolskiy <vzapolskiy at gmail.com>
> ---
> sound/soc/codecs/uda134x.c | 36 ++++++++++++++++++++++++++++++++----
> 1 files changed, 32 insertions(+), 4 deletions(-)
>
> diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c
> index e770029..e8066b6 100644
> --- a/sound/soc/codecs/uda134x.c
> +++ b/sound/soc/codecs/uda134x.c
> @@ -353,8 +353,22 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec,
> switch (level) {
> case SND_SOC_BIAS_ON:
> /* ADC, DAC on */
> - reg = uda134x_read_reg_cache(codec, UDA134X_STATUS1);
> - uda134x_write(codec, UDA134X_STATUS1, reg | 0x03);
> + 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);
> + uda134x_write(codec, UDA134X_STATUS1, reg | 0x03);
> + break;
> + default:
> + printk(KERN_ERR "UDA134X SoC codec: "
> + "unsupported model %d\n", pd->model);
> + return -EINVAL;
> + }
> break;
> case SND_SOC_BIAS_PREPARE:
> /* power on */
> @@ -367,8 +381,22 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec,
> break;
> case SND_SOC_BIAS_STANDBY:
> /* ADC, DAC power off */
> - reg = uda134x_read_reg_cache(codec, UDA134X_STATUS1);
> - uda134x_write(codec, UDA134X_STATUS1, reg & ~(0x03));
> + 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);
> + uda134x_write(codec, UDA134X_STATUS1, reg & ~(0x03));
> + break;
> + default:
> + printk(KERN_ERR "UDA134X SoC codec: "
> + "unsupported model %d\n", pd->model);
> + return -EINVAL;
> + }
> break;
> case SND_SOC_BIAS_OFF:
> /* power off */
> --
> 1.7.0.4
>
>
More information about the Alsa-devel
mailing list