|
@@ -528,40 +528,33 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
|
|
|
enum snd_soc_bias_level level)
|
|
|
{
|
|
|
struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
|
|
|
- u8 value;
|
|
|
|
|
|
switch (level) {
|
|
|
case SND_SOC_BIAS_ON:
|
|
|
if (aic32x4->master) {
|
|
|
/* Switch on PLL */
|
|
|
- value = snd_soc_read(codec, AIC32X4_PLLPR);
|
|
|
- snd_soc_write(codec, AIC32X4_PLLPR,
|
|
|
- (value | AIC32X4_PLLEN));
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_PLLPR,
|
|
|
+ AIC32X4_PLLEN, AIC32X4_PLLEN);
|
|
|
|
|
|
/* Switch on NDAC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_NDAC);
|
|
|
- snd_soc_write(codec, AIC32X4_NDAC,
|
|
|
- value | AIC32X4_NDACEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_NDAC,
|
|
|
+ AIC32X4_NDACEN, AIC32X4_NDACEN);
|
|
|
|
|
|
/* Switch on MDAC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_MDAC);
|
|
|
- snd_soc_write(codec, AIC32X4_MDAC,
|
|
|
- value | AIC32X4_MDACEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_MDAC,
|
|
|
+ AIC32X4_MDACEN, AIC32X4_MDACEN);
|
|
|
|
|
|
/* Switch on NADC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_NADC);
|
|
|
- snd_soc_write(codec, AIC32X4_NADC,
|
|
|
- value | AIC32X4_MDACEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_NADC,
|
|
|
+ AIC32X4_NADCEN, AIC32X4_NADCEN);
|
|
|
|
|
|
/* Switch on MADC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_MADC);
|
|
|
- snd_soc_write(codec, AIC32X4_MADC,
|
|
|
- value | AIC32X4_MDACEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_MADC,
|
|
|
+ AIC32X4_MADCEN, AIC32X4_MADCEN);
|
|
|
|
|
|
/* Switch on BCLK_N Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_BCLKN);
|
|
|
- snd_soc_write(codec, AIC32X4_BCLKN,
|
|
|
- value | AIC32X4_BCLKEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_BCLKN,
|
|
|
+ AIC32X4_BCLKEN, AIC32X4_BCLKEN);
|
|
|
}
|
|
|
break;
|
|
|
case SND_SOC_BIAS_PREPARE:
|
|
@@ -569,34 +562,28 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
|
|
|
case SND_SOC_BIAS_STANDBY:
|
|
|
if (aic32x4->master) {
|
|
|
/* Switch off PLL */
|
|
|
- value = snd_soc_read(codec, AIC32X4_PLLPR);
|
|
|
- snd_soc_write(codec, AIC32X4_PLLPR,
|
|
|
- (value & ~AIC32X4_PLLEN));
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_PLLPR,
|
|
|
+ AIC32X4_PLLEN, 0);
|
|
|
|
|
|
/* Switch off NDAC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_NDAC);
|
|
|
- snd_soc_write(codec, AIC32X4_NDAC,
|
|
|
- value & ~AIC32X4_NDACEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_NDAC,
|
|
|
+ AIC32X4_NDACEN, 0);
|
|
|
|
|
|
/* Switch off MDAC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_MDAC);
|
|
|
- snd_soc_write(codec, AIC32X4_MDAC,
|
|
|
- value & ~AIC32X4_MDACEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_MDAC,
|
|
|
+ AIC32X4_MDACEN, 0);
|
|
|
|
|
|
/* Switch off NADC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_NADC);
|
|
|
- snd_soc_write(codec, AIC32X4_NADC,
|
|
|
- value & ~AIC32X4_NDACEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_NADC,
|
|
|
+ AIC32X4_NADCEN, 0);
|
|
|
|
|
|
/* Switch off MADC Divider */
|
|
|
- value = snd_soc_read(codec, AIC32X4_MADC);
|
|
|
- snd_soc_write(codec, AIC32X4_MADC,
|
|
|
- value & ~AIC32X4_MDACEN);
|
|
|
- value = snd_soc_read(codec, AIC32X4_BCLKN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_MADC,
|
|
|
+ AIC32X4_MADCEN, 0);
|
|
|
|
|
|
/* Switch off BCLK_N Divider */
|
|
|
- snd_soc_write(codec, AIC32X4_BCLKN,
|
|
|
- value & ~AIC32X4_BCLKEN);
|
|
|
+ snd_soc_update_bits(codec, AIC32X4_BCLKN,
|
|
|
+ AIC32X4_BCLKEN, 0);
|
|
|
}
|
|
|
break;
|
|
|
case SND_SOC_BIAS_OFF:
|