Skip to content

Commit bc6ae96

Browse files
AxelLinbroonie
authored andcommitted
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]> Signed-off-by: Mark Brown <[email protected]>
1 parent 694b000 commit bc6ae96

File tree

1 file changed

+24
-37
lines changed

1 file changed

+24
-37
lines changed

sound/soc/codecs/tlv320aic32x4.c

Lines changed: 24 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -528,75 +528,62 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
528528
enum snd_soc_bias_level level)
529529
{
530530
struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
531-
u8 value;
532531

533532
switch (level) {
534533
case SND_SOC_BIAS_ON:
535534
if (aic32x4->master) {
536535
/* Switch on PLL */
537-
value = snd_soc_read(codec, AIC32X4_PLLPR);
538-
snd_soc_write(codec, AIC32X4_PLLPR,
539-
(value | AIC32X4_PLLEN));
536+
snd_soc_update_bits(codec, AIC32X4_PLLPR,
537+
AIC32X4_PLLEN, AIC32X4_PLLEN);
540538

541539
/* Switch on NDAC Divider */
542-
value = snd_soc_read(codec, AIC32X4_NDAC);
543-
snd_soc_write(codec, AIC32X4_NDAC,
544-
value | AIC32X4_NDACEN);
540+
snd_soc_update_bits(codec, AIC32X4_NDAC,
541+
AIC32X4_NDACEN, AIC32X4_NDACEN);
545542

546543
/* Switch on MDAC Divider */
547-
value = snd_soc_read(codec, AIC32X4_MDAC);
548-
snd_soc_write(codec, AIC32X4_MDAC,
549-
value | AIC32X4_MDACEN);
544+
snd_soc_update_bits(codec, AIC32X4_MDAC,
545+
AIC32X4_MDACEN, AIC32X4_MDACEN);
550546

551547
/* Switch on NADC Divider */
552-
value = snd_soc_read(codec, AIC32X4_NADC);
553-
snd_soc_write(codec, AIC32X4_NADC,
554-
value | AIC32X4_MDACEN);
548+
snd_soc_update_bits(codec, AIC32X4_NADC,
549+
AIC32X4_NADCEN, AIC32X4_NADCEN);
555550

556551
/* Switch on MADC Divider */
557-
value = snd_soc_read(codec, AIC32X4_MADC);
558-
snd_soc_write(codec, AIC32X4_MADC,
559-
value | AIC32X4_MDACEN);
552+
snd_soc_update_bits(codec, AIC32X4_MADC,
553+
AIC32X4_MADCEN, AIC32X4_MADCEN);
560554

561555
/* Switch on BCLK_N Divider */
562-
value = snd_soc_read(codec, AIC32X4_BCLKN);
563-
snd_soc_write(codec, AIC32X4_BCLKN,
564-
value | AIC32X4_BCLKEN);
556+
snd_soc_update_bits(codec, AIC32X4_BCLKN,
557+
AIC32X4_BCLKEN, AIC32X4_BCLKEN);
565558
}
566559
break;
567560
case SND_SOC_BIAS_PREPARE:
568561
break;
569562
case SND_SOC_BIAS_STANDBY:
570563
if (aic32x4->master) {
571564
/* Switch off PLL */
572-
value = snd_soc_read(codec, AIC32X4_PLLPR);
573-
snd_soc_write(codec, AIC32X4_PLLPR,
574-
(value & ~AIC32X4_PLLEN));
565+
snd_soc_update_bits(codec, AIC32X4_PLLPR,
566+
AIC32X4_PLLEN, 0);
575567

576568
/* Switch off NDAC Divider */
577-
value = snd_soc_read(codec, AIC32X4_NDAC);
578-
snd_soc_write(codec, AIC32X4_NDAC,
579-
value & ~AIC32X4_NDACEN);
569+
snd_soc_update_bits(codec, AIC32X4_NDAC,
570+
AIC32X4_NDACEN, 0);
580571

581572
/* Switch off MDAC Divider */
582-
value = snd_soc_read(codec, AIC32X4_MDAC);
583-
snd_soc_write(codec, AIC32X4_MDAC,
584-
value & ~AIC32X4_MDACEN);
573+
snd_soc_update_bits(codec, AIC32X4_MDAC,
574+
AIC32X4_MDACEN, 0);
585575

586576
/* Switch off NADC Divider */
587-
value = snd_soc_read(codec, AIC32X4_NADC);
588-
snd_soc_write(codec, AIC32X4_NADC,
589-
value & ~AIC32X4_NDACEN);
577+
snd_soc_update_bits(codec, AIC32X4_NADC,
578+
AIC32X4_NADCEN, 0);
590579

591580
/* Switch off MADC Divider */
592-
value = snd_soc_read(codec, AIC32X4_MADC);
593-
snd_soc_write(codec, AIC32X4_MADC,
594-
value & ~AIC32X4_MDACEN);
595-
value = snd_soc_read(codec, AIC32X4_BCLKN);
581+
snd_soc_update_bits(codec, AIC32X4_MADC,
582+
AIC32X4_MADCEN, 0);
596583

597584
/* Switch off BCLK_N Divider */
598-
snd_soc_write(codec, AIC32X4_BCLKN,
599-
value & ~AIC32X4_BCLKEN);
585+
snd_soc_update_bits(codec, AIC32X4_BCLKN,
586+
AIC32X4_BCLKEN, 0);
600587
}
601588
break;
602589
case SND_SOC_BIAS_OFF:

0 commit comments

Comments
 (0)