diff mbox series

[v4,03/10] ASoC: cs35l41: Move power initializations to reg_sequence

Message ID 20211214135959.1317949-4-tanureal@opensource.cirrus.com (mailing list archive)
State Superseded
Headers show
Series Add support for CS35L41 in HDA systems | expand

Commit Message

Lucas Tanure Dec. 14, 2021, 1:59 p.m. UTC
ASoC and HDA systems for all revisions of CS35L41 will benefit
from having this initialization, so add it to reg_sequence of
each revision

Signed-off-by: Lucas Tanure <tanureal@opensource.cirrus.com>
---
 sound/soc/codecs/cs35l41-lib.c |  2 +-
 sound/soc/codecs/cs35l41.c     | 29 +++++++++--------------------
 2 files changed, 10 insertions(+), 21 deletions(-)

Comments

Charles Keepax Dec. 15, 2021, 9:10 a.m. UTC | #1
On Tue, Dec 14, 2021 at 01:59:52PM +0000, Lucas Tanure wrote:
> +	{ CS35L41_PWR_CTRL2,		 0x00000000 },
> +	{ CS35L41_AMP_GAIN_CTRL,	 0x00000000 },
>  };
> -	ret = regmap_update_bits(cs35l41->regmap, CS35L41_PWR_CTRL2,
> -				 CS35L41_AMP_EN_MASK, 0);
> -	if (ret < 0) {
> -		dev_err(cs35l41->dev, "Write CS35L41_PWR_CTRL2 failed: %d\n", ret);
> -		goto err;
> -	}
> -
> -	ret = regmap_update_bits(cs35l41->regmap, CS35L41_AMP_GAIN_CTRL,
> -				 CS35L41_AMP_GAIN_PCM_MASK, 0);
> -	if (ret < 0) {
> -		dev_err(cs35l41->dev, "Write CS35L41_AMP_GAIN_CTRL failed: %d\n", ret);
> -		goto err;
> -	}

Sorry for not spotting earlier but just noticed these two writes
are update bits, so you shouldn't just be setting the values to
zero in the patch you just want to clear the relevant bit.

Thanks,
Charles
Lucas Tanure Dec. 15, 2021, 9:53 a.m. UTC | #2
On 12/15/21 9:10 AM, Charles Keepax <ckeepax@opensource.cirrus.com> wrote:
> On Tue, Dec 14, 2021 at 01:59:52PM +0000, Lucas Tanure wrote:
> > +	{ CS35L41_PWR_CTRL2,		 0x00000000 },
> > +	{ CS35L41_AMP_GAIN_CTRL,	 0x00000000 },
> >   };
> > -	ret = regmap_update_bits(cs35l41->regmap, CS35L41_PWR_CTRL2,
> > -				 CS35L41_AMP_EN_MASK, 0);
> > -	if (ret < 0) {
> > -		dev_err(cs35l41->dev, "Write CS35L41_PWR_CTRL2 failed: %d\n", ret);
> > -		goto err;
> > -	}
> > -
> > -	ret = regmap_update_bits(cs35l41->regmap, CS35L41_AMP_GAIN_CTRL,
> > -				 CS35L41_AMP_GAIN_PCM_MASK, 0);
> > -	if (ret < 0) {
> > -		dev_err(cs35l41->dev, "Write CS35L41_AMP_GAIN_CTRL failed: %d\n", ret);
> > -		goto err;
> > -	}
> 
> Sorry for not spotting earlier but just noticed these two writes
> are update bits, so you shouldn't just be setting the values to
> zero in the patch you just want to clear the relevant bit.
> 
> Thanks,
> Charles
> 
Hi, sorry, that was intentional. This patch is also disabling other
parts of the amp and setting all gains to zero.
I will update the commit message to reflect that.

Thanks
Lucas
diff mbox series

Patch

diff --git a/sound/soc/codecs/cs35l41-lib.c b/sound/soc/codecs/cs35l41-lib.c
index dc5f502447a2..1387553afd3c 100644
--- a/sound/soc/codecs/cs35l41-lib.c
+++ b/sound/soc/codecs/cs35l41-lib.c
@@ -46,7 +46,7 @@  static const struct reg_default cs35l41_reg[] = {
 	{ CS35L41_CLASSH_CFG,			0x000B0405 },
 	{ CS35L41_WKFET_CFG,			0x00000111 },
 	{ CS35L41_NG_CFG,			0x00000033 },
-	{ CS35L41_AMP_GAIN_CTRL,		0x00000273 },
+	{ CS35L41_AMP_GAIN_CTRL,		0x00000000 },
 	{ CS35L41_GPIO1_CTRL1,			0xE1000001 },
 	{ CS35L41_GPIO2_CTRL1,			0xE1000001 },
 	{ CS35L41_MIXER_NGATE_CFG,		0x00000000 },
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index aa57c59b334d..4ed7490cab95 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -1288,6 +1288,9 @@  static const struct reg_sequence cs35l41_reva0_errata_patch[] = {
 	{ CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
 	{ 0x00000040,			 0x0000CCCC },
 	{ 0x00000040,			 0x00003333 },
+	{ CS35L41_DSP1_CCM_CORE_CTRL,	 0x00000000 },
+	{ CS35L41_PWR_CTRL2,		 0x00000000 },
+	{ CS35L41_AMP_GAIN_CTRL,	 0x00000000 },
 };
 
 static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
@@ -1301,6 +1304,9 @@  static const struct reg_sequence cs35l41_revb0_errata_patch[] = {
 	{ CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
 	{ 0x00000040,			 0x0000CCCC },
 	{ 0x00000040,			 0x00003333 },
+	{ CS35L41_DSP1_CCM_CORE_CTRL,	 0x00000000 },
+	{ CS35L41_PWR_CTRL2,		 0x00000000 },
+	{ CS35L41_AMP_GAIN_CTRL,	 0x00000000 },
 };
 
 static const struct reg_sequence cs35l41_revb2_errata_patch[] = {
@@ -1314,6 +1320,9 @@  static const struct reg_sequence cs35l41_revb2_errata_patch[] = {
 	{ CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000 },
 	{ 0x00000040,			 0x0000CCCC },
 	{ 0x00000040,			 0x00003333 },
+	{ CS35L41_DSP1_CCM_CORE_CTRL,	 0x00000000 },
+	{ CS35L41_PWR_CTRL2,		 0x00000000 },
+	{ CS35L41_AMP_GAIN_CTRL,	 0x00000000 },
 };
 
 static const struct reg_sequence cs35l41_fs_errata_patch[] = {
@@ -1550,26 +1559,6 @@  int cs35l41_probe(struct cs35l41_private *cs35l41,
 		goto err;
 	}
 
-	ret = regmap_write(cs35l41->regmap, CS35L41_DSP1_CCM_CORE_CTRL, 0);
-	if (ret < 0) {
-		dev_err(cs35l41->dev, "Write CCM_CORE_CTRL failed: %d\n", ret);
-		goto err;
-	}
-
-	ret = regmap_update_bits(cs35l41->regmap, CS35L41_PWR_CTRL2,
-				 CS35L41_AMP_EN_MASK, 0);
-	if (ret < 0) {
-		dev_err(cs35l41->dev, "Write CS35L41_PWR_CTRL2 failed: %d\n", ret);
-		goto err;
-	}
-
-	ret = regmap_update_bits(cs35l41->regmap, CS35L41_AMP_GAIN_CTRL,
-				 CS35L41_AMP_GAIN_PCM_MASK, 0);
-	if (ret < 0) {
-		dev_err(cs35l41->dev, "Write CS35L41_AMP_GAIN_CTRL failed: %d\n", ret);
-		goto err;
-	}
-
 	ret = cs35l41_set_pdata(cs35l41);
 	if (ret < 0) {
 		dev_err(cs35l41->dev, "Set pdata failed: %d\n", ret);