ASoC: tlv320aic32x4: Use snd_soc_update_bits for read-modify-write
Subsystems (3)
PATCH 1/1 ASoC: tlv320aic32x4: Use snd_soc_update_bits for read-modify-write
Use snd_soc_update_bits for read-modify-write register access instead of open-coding it using snd_soc_read and snd_soc_write.
Signed-off-by Axel Lin <[email protected]>
---
This patch also fixes the mix usage of AIC32X4_MDACEN/AIC32X4_NDACEN/AIC32X4_NADCEN/AIC32X4_MADCEN in current code. (They are all defined as (0x01 << 7), so it is not a bug,
but not good for readability.)
Axel
sound/soc/codecs/tlv320aic32x4.c | 61 +++++++++++++++----------------------- 1 files changed, 24 insertions(+), 37 deletions(-)
sound/soc/codecs/tlv320aic32x4.c +24 -37
@@ -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 :
Signature · 1 line
1.7.4.1
Mark Brown
AppliedQuoted 2 lines · Axel Lin
Use
snd_soc_update_bitsfor read-modify-write register access instead of open-coding it usingsnd_soc_readandsnd_soc_write.
Applied, thanks.