ASoC: tas5720: set bit 7 in ANALOG_CTRL_REG for TAS5720A-Q1 during probe
authorSteffen Aschbacher <steffen.aschbacher@stihl.de>
Sat, 28 Jan 2023 08:27:43 +0000 (10:27 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 30 Jan 2023 13:35:15 +0000 (13:35 +0000)
Set the reserved bit 7 in the ANALOG_CTRL_REG for the TAS5720A-Q1 device,
when probing.
The datasheet mentions that the bit should be 1 during reset/powerup.

The device did not initialize before setting this value to 1. So, this
could be a quirk of this device. Or it could be a quirk with the board on
which it was tested.
That is why this patch is separate from the patch that adds support for the
TAS5720A-Q1 device.

Signed-off-by: Steffen Aschbacher <steffen.aschbacher@stihl.de>
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Link: https://lore.kernel.org/r/20230128082744.41849-3-alex@shruggie.ro
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tas5720.c
sound/soc/codecs/tas5720.h

index 2ad8fb2..de6d01c 100644 (file)
@@ -351,6 +351,19 @@ static int tas5720_codec_probe(struct snd_soc_component *component)
        if (ret < 0)
                goto error_snd_soc_component_update_bits;
 
+       /* Set Bit 7 in TAS5720_ANALOG_CTRL_REG to 1 for TAS5720A_Q1 */
+       switch (tas5720->devtype) {
+       case TAS5720A_Q1:
+               ret = snd_soc_component_update_bits(component, TAS5720_ANALOG_CTRL_REG,
+                                                   TAS5720_Q1_RESERVED7_BIT,
+                                                   TAS5720_Q1_RESERVED7_BIT);
+               break;
+       default:
+               break;
+       }
+       if (ret < 0)
+               goto error_snd_soc_component_update_bits;
+
        /*
         * Enter shutdown mode - our default when not playing audio - to
         * minimize current consumption. On the TAS5720 there is no real down
index b384595..54b59b0 100644 (file)
@@ -81,6 +81,7 @@
 #define TAS5720_ANALOG_GAIN_SHIFT      (0x2)
 
 /* TAS5720_Q1_ANALOG_CTRL_REG */
+#define TAS5720_Q1_RESERVED7_BIT       BIT(7)
 #define TAS5720_Q1_CHAN_SEL            BIT(1)
 
 /* TAS5720_FAULT_REG */