Devicetree
 help / color / mirror / Atom feed
* [PATCH 0/3] Add support for cs42l44
@ 2026-07-08 14:00 Charles Keepax
  2026-07-08 14:00 ` [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant Charles Keepax
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Charles Keepax @ 2026-07-08 14:00 UTC (permalink / raw)
  To: lee, broonie, robh, krzk+dt
  Cc: conor+dt, lgirdwood, linux-sound, devicetree, mfd, linux-kernel,
	patches

This series add support for the cs42l44 to the cs42l43 driver.

I have based these patches on the series by Uwe from here:

https://lore.kernel.org/lkml/cover.1783507945.git.u.kleine-koenig@baylibre.com/

Since they both touch the device id arrays, does mean Uwe's series will
need to be merged before these but probably simpler this way round as
his series is a lot bigger.

Thanks,
Charles

Charles Keepax (3):
  ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant
  mfd: cs42l43: Tidy up formatting on sdw_device_id table
  mfd: cs42l43: Add support for new cs42l44 variant

 .../bindings/sound/cirrus,cs42l43.yaml         |  1 +
 drivers/mfd/cs42l43-i2c.c                      |  2 ++
 drivers/mfd/cs42l43-sdw.c                      |  7 ++++---
 drivers/mfd/cs42l43.c                          | 18 ++++++++++++------
 include/linux/mfd/cs42l43-regs.h               |  1 +
 5 files changed, 20 insertions(+), 9 deletions(-)

-- 
2.47.3


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant
  2026-07-08 14:00 [PATCH 0/3] Add support for cs42l44 Charles Keepax
@ 2026-07-08 14:00 ` Charles Keepax
  2026-07-17 13:18   ` Rob Herring (Arm)
  2026-08-05 13:19   ` Charles Keepax
  2026-07-08 14:00 ` [PATCH 2/3] mfd: cs42l43: Tidy up formatting on sdw_device_id table Charles Keepax
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 14+ messages in thread
From: Charles Keepax @ 2026-07-08 14:00 UTC (permalink / raw)
  To: lee, broonie, robh, krzk+dt
  Cc: conor+dt, lgirdwood, linux-sound, devicetree, mfd, linux-kernel,
	patches

The cs42l44 is a cost optimised variant of cs42l43b.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
 Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml
index 376928d1f64bf..c1ef9f3083962 100644
--- a/Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml
+++ b/Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml
@@ -27,6 +27,7 @@ properties:
     enum:
       - cirrus,cs42l43
       - cirrus,cs42l43b
+      - cirrus,cs42l44
 
   reg:
     maxItems: 1
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/3] mfd: cs42l43: Tidy up formatting on sdw_device_id table
  2026-07-08 14:00 [PATCH 0/3] Add support for cs42l44 Charles Keepax
  2026-07-08 14:00 ` [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant Charles Keepax
@ 2026-07-08 14:00 ` Charles Keepax
  2026-07-16 15:16   ` (subset) " Lee Jones
  2026-07-08 14:00 ` [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant Charles Keepax
  2026-07-26 17:22 ` [PATCH 0/3] Add support for cs42l44 Mark Brown
  3 siblings, 1 reply; 14+ messages in thread
From: Charles Keepax @ 2026-07-08 14:00 UTC (permalink / raw)
  To: lee, broonie, robh, krzk+dt
  Cc: conor+dt, lgirdwood, linux-sound, devicetree, mfd, linux-kernel,
	patches

Remove spaces after cast as they generate check patch warnings, and
update the terminator to better match kernel coding guidelines.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
 drivers/mfd/cs42l43-sdw.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/mfd/cs42l43-sdw.c b/drivers/mfd/cs42l43-sdw.c
index 2b87ae2d79c51..6ccfdcd3f6698 100644
--- a/drivers/mfd/cs42l43-sdw.c
+++ b/drivers/mfd/cs42l43-sdw.c
@@ -182,9 +182,9 @@ static int cs42l43_sdw_probe(struct sdw_slave *sdw, const struct sdw_device_id *
 }
 
 static const struct sdw_device_id cs42l43_sdw_id[] = {
-	SDW_SLAVE_ENTRY(0x01FA, 0x4243, (void *) CS42L43_DEVID_VAL),
-	SDW_SLAVE_ENTRY(0x01FA, 0x2A3B, (void *) CS42L43B_DEVID_VAL),
-	{}
+	SDW_SLAVE_ENTRY(0x01FA, 0x4243, (void *)CS42L43_DEVID_VAL),
+	SDW_SLAVE_ENTRY(0x01FA, 0x2A3B, (void *)CS42L43B_DEVID_VAL),
+	{ }
 };
 MODULE_DEVICE_TABLE(sdw, cs42l43_sdw_id);
 
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant
  2026-07-08 14:00 [PATCH 0/3] Add support for cs42l44 Charles Keepax
  2026-07-08 14:00 ` [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant Charles Keepax
  2026-07-08 14:00 ` [PATCH 2/3] mfd: cs42l43: Tidy up formatting on sdw_device_id table Charles Keepax
@ 2026-07-08 14:00 ` Charles Keepax
  2026-07-16 15:14   ` Lee Jones
  2026-08-06 14:42   ` Lee Jones
  2026-07-26 17:22 ` [PATCH 0/3] Add support for cs42l44 Mark Brown
  3 siblings, 2 replies; 14+ messages in thread
From: Charles Keepax @ 2026-07-08 14:00 UTC (permalink / raw)
  To: lee, broonie, robh, krzk+dt
  Cc: conor+dt, lgirdwood, linux-sound, devicetree, mfd, linux-kernel,
	patches

The cs42l44 is a cost optimised variant of cs42l43b. Add basic support
for this new device.

Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
 drivers/mfd/cs42l43-i2c.c        |  2 ++
 drivers/mfd/cs42l43-sdw.c        |  1 +
 drivers/mfd/cs42l43.c            | 18 ++++++++++++------
 include/linux/mfd/cs42l43-regs.h |  1 +
 4 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/mfd/cs42l43-i2c.c b/drivers/mfd/cs42l43-i2c.c
index bd9752d2cfc34..1af878c7a20b4 100644
--- a/drivers/mfd/cs42l43-i2c.c
+++ b/drivers/mfd/cs42l43-i2c.c
@@ -59,6 +59,7 @@ static int cs42l43_i2c_probe(struct i2c_client *i2c)
 static const struct of_device_id cs42l43_of_match[] = {
 	{ .compatible = "cirrus,cs42l43", .data = (void *)CS42L43_DEVID_VAL },
 	{ .compatible = "cirrus,cs42l43b", .data = (void *)CS42L43B_DEVID_VAL },
+	{ .compatible = "cirrus,cs42l44", .data = (void *)CS42L43B_DEVID_VAL },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, cs42l43_of_match);
@@ -68,6 +69,7 @@ MODULE_DEVICE_TABLE(of, cs42l43_of_match);
 static const struct acpi_device_id cs42l43_acpi_match[] = {
 	{ .id = "CSC4243", .driver_data = CS42L43_DEVID_VAL },
 	{ .id = "CSC2A3B", .driver_data = CS42L43B_DEVID_VAL },
+	{ .id = "CSC4244", .driver_data = CS42L43B_DEVID_VAL },
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, cs42l43_acpi_match);
diff --git a/drivers/mfd/cs42l43-sdw.c b/drivers/mfd/cs42l43-sdw.c
index 6ccfdcd3f6698..81dd19df53685 100644
--- a/drivers/mfd/cs42l43-sdw.c
+++ b/drivers/mfd/cs42l43-sdw.c
@@ -184,6 +184,7 @@ static int cs42l43_sdw_probe(struct sdw_slave *sdw, const struct sdw_device_id *
 static const struct sdw_device_id cs42l43_sdw_id[] = {
 	SDW_SLAVE_ENTRY(0x01FA, 0x4243, (void *)CS42L43_DEVID_VAL),
 	SDW_SLAVE_ENTRY(0x01FA, 0x2A3B, (void *)CS42L43B_DEVID_VAL),
+	SDW_SLAVE_ENTRY(0x01FA, 0x4244, (void *)CS42L43B_DEVID_VAL),
 	{ }
 };
 MODULE_DEVICE_TABLE(sdw, cs42l43_sdw_id);
diff --git a/drivers/mfd/cs42l43.c b/drivers/mfd/cs42l43.c
index 33479ddd539a6..d6027fa4de705 100644
--- a/drivers/mfd/cs42l43.c
+++ b/drivers/mfd/cs42l43.c
@@ -959,6 +959,7 @@ static void cs42l43_boot_work(struct work_struct *work)
 {
 	struct cs42l43 *cs42l43 = container_of(work, struct cs42l43, boot_work);
 	unsigned int devid, revid, otp;
+	bool valid_id;
 	int ret;
 
 	ret = cs42l43_wait_for_attach(cs42l43);
@@ -973,19 +974,24 @@ static void cs42l43_boot_work(struct work_struct *work)
 
 	switch (devid) {
 	case CS42L43_DEVID_VAL:
+		valid_id = (cs42l43->variant_id == CS42L43_DEVID_VAL);
+		break;
 	case CS42L43B_DEVID_VAL:
-		if (devid != cs42l43->variant_id) {
-			dev_err(cs42l43->dev,
-				"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
-				devid, cs42l43->variant_id);
-			goto err;
-		}
+	case CS42L44_DEVID_VAL:
+		valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
 		break;
 	default:
 		dev_err(cs42l43->dev, "Unrecognised devid: 0x%06x\n", devid);
 		goto err;
 	}
 
+	if (!valid_id) {
+		dev_err(cs42l43->dev,
+			"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
+			devid, cs42l43->variant_id);
+		goto err;
+	}
+
 	ret = regmap_read(cs42l43->regmap, CS42L43_REVID, &revid);
 	if (ret) {
 		dev_err(cs42l43->dev, "Failed to read rev: %d\n", ret);
diff --git a/include/linux/mfd/cs42l43-regs.h b/include/linux/mfd/cs42l43-regs.h
index 68831f113589d..4c00ceae8b461 100644
--- a/include/linux/mfd/cs42l43-regs.h
+++ b/include/linux/mfd/cs42l43-regs.h
@@ -1183,6 +1183,7 @@
 
 /* CS42L43B VARIANT REGISTERS */
 #define CS42L43B_DEVID_VAL					0x0042A43B
+#define CS42L44_DEVID_VAL					0x00042A44
 
 #define CS42L43B_DECIM_VOL_CTRL_CH1_CH2				0x00008280
 #define CS42L43B_DECIM_VOL_CTRL_CH3_CH4				0x00008284
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant
  2026-07-08 14:00 ` [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant Charles Keepax
@ 2026-07-16 15:14   ` Lee Jones
  2026-07-16 15:47     ` Charles Keepax
  2026-08-06 14:42   ` Lee Jones
  1 sibling, 1 reply; 14+ messages in thread
From: Lee Jones @ 2026-07-16 15:14 UTC (permalink / raw)
  To: Charles Keepax
  Cc: broonie, robh, krzk+dt, conor+dt, lgirdwood, linux-sound,
	devicetree, mfd, linux-kernel, patches

On Wed, 08 Jul 2026, Charles Keepax wrote:

> The cs42l44 is a cost optimised variant of cs42l43b. Add basic support
> for this new device.
> 
> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> ---
>  drivers/mfd/cs42l43-i2c.c        |  2 ++
>  drivers/mfd/cs42l43-sdw.c        |  1 +
>  drivers/mfd/cs42l43.c            | 18 ++++++++++++------
>  include/linux/mfd/cs42l43-regs.h |  1 +
>  4 files changed, 16 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/mfd/cs42l43-i2c.c b/drivers/mfd/cs42l43-i2c.c
> index bd9752d2cfc34..1af878c7a20b4 100644
> --- a/drivers/mfd/cs42l43-i2c.c
> +++ b/drivers/mfd/cs42l43-i2c.c
> @@ -59,6 +59,7 @@ static int cs42l43_i2c_probe(struct i2c_client *i2c)
>  static const struct of_device_id cs42l43_of_match[] = {
>  	{ .compatible = "cirrus,cs42l43", .data = (void *)CS42L43_DEVID_VAL },
>  	{ .compatible = "cirrus,cs42l43b", .data = (void *)CS42L43B_DEVID_VAL },
> +	{ .compatible = "cirrus,cs42l44", .data = (void *)CS42L43B_DEVID_VAL },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(of, cs42l43_of_match);
> @@ -68,6 +69,7 @@ MODULE_DEVICE_TABLE(of, cs42l43_of_match);
>  static const struct acpi_device_id cs42l43_acpi_match[] = {
>  	{ .id = "CSC4243", .driver_data = CS42L43_DEVID_VAL },
>  	{ .id = "CSC2A3B", .driver_data = CS42L43B_DEVID_VAL },
> +	{ .id = "CSC4244", .driver_data = CS42L43B_DEVID_VAL },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(acpi, cs42l43_acpi_match);
> diff --git a/drivers/mfd/cs42l43-sdw.c b/drivers/mfd/cs42l43-sdw.c
> index 6ccfdcd3f6698..81dd19df53685 100644
> --- a/drivers/mfd/cs42l43-sdw.c
> +++ b/drivers/mfd/cs42l43-sdw.c
> @@ -184,6 +184,7 @@ static int cs42l43_sdw_probe(struct sdw_slave *sdw, const struct sdw_device_id *
>  static const struct sdw_device_id cs42l43_sdw_id[] = {
>  	SDW_SLAVE_ENTRY(0x01FA, 0x4243, (void *)CS42L43_DEVID_VAL),
>  	SDW_SLAVE_ENTRY(0x01FA, 0x2A3B, (void *)CS42L43B_DEVID_VAL),
> +	SDW_SLAVE_ENTRY(0x01FA, 0x4244, (void *)CS42L43B_DEVID_VAL),
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(sdw, cs42l43_sdw_id);
> diff --git a/drivers/mfd/cs42l43.c b/drivers/mfd/cs42l43.c
> index 33479ddd539a6..d6027fa4de705 100644
> --- a/drivers/mfd/cs42l43.c
> +++ b/drivers/mfd/cs42l43.c
> @@ -959,6 +959,7 @@ static void cs42l43_boot_work(struct work_struct *work)
>  {
>  	struct cs42l43 *cs42l43 = container_of(work, struct cs42l43, boot_work);
>  	unsigned int devid, revid, otp;
> +	bool valid_id;
>  	int ret;
>  
>  	ret = cs42l43_wait_for_attach(cs42l43);
> @@ -973,19 +974,24 @@ static void cs42l43_boot_work(struct work_struct *work)
>  
>  	switch (devid) {
>  	case CS42L43_DEVID_VAL:
> +		valid_id = (cs42l43->variant_id == CS42L43_DEVID_VAL);
> +		break;
>  	case CS42L43B_DEVID_VAL:
> -		if (devid != cs42l43->variant_id) {
> -			dev_err(cs42l43->dev,
> -				"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
> -				devid, cs42l43->variant_id);
> -			goto err;
> -		}

Needs a fall-through statement.

> +	case CS42L44_DEVID_VAL:
> +		valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
>  		break;
>  	default:
>  		dev_err(cs42l43->dev, "Unrecognised devid: 0x%06x\n", devid);
>  		goto err;
>  	}
>  
> +	if (!valid_id) {

How is this nor handled in the default branch?

> +		dev_err(cs42l43->dev,
> +			"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
> +			devid, cs42l43->variant_id);
> +		goto err;
> +	}
> +
>  	ret = regmap_read(cs42l43->regmap, CS42L43_REVID, &revid);
>  	if (ret) {
>  		dev_err(cs42l43->dev, "Failed to read rev: %d\n", ret);
> diff --git a/include/linux/mfd/cs42l43-regs.h b/include/linux/mfd/cs42l43-regs.h
> index 68831f113589d..4c00ceae8b461 100644
> --- a/include/linux/mfd/cs42l43-regs.h
> +++ b/include/linux/mfd/cs42l43-regs.h
> @@ -1183,6 +1183,7 @@
>  
>  /* CS42L43B VARIANT REGISTERS */
>  #define CS42L43B_DEVID_VAL					0x0042A43B
> +#define CS42L44_DEVID_VAL					0x00042A44
>  
>  #define CS42L43B_DECIM_VOL_CTRL_CH1_CH2				0x00008280
>  #define CS42L43B_DECIM_VOL_CTRL_CH3_CH4				0x00008284
> -- 
> 2.47.3
> 

-- 
Lee Jones

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: (subset) [PATCH 2/3] mfd: cs42l43: Tidy up formatting on sdw_device_id table
  2026-07-08 14:00 ` [PATCH 2/3] mfd: cs42l43: Tidy up formatting on sdw_device_id table Charles Keepax
@ 2026-07-16 15:16   ` Lee Jones
  0 siblings, 0 replies; 14+ messages in thread
From: Lee Jones @ 2026-07-16 15:16 UTC (permalink / raw)
  To: lee, broonie, robh, krzk+dt, Charles Keepax
  Cc: conor+dt, lgirdwood, linux-sound, devicetree, mfd, linux-kernel,
	patches

On Wed, 08 Jul 2026 15:00:38 +0100, Charles Keepax wrote:
> Remove spaces after cast as they generate check patch warnings, and
> update the terminator to better match kernel coding guidelines.

Applied, thanks!

[2/3] mfd: cs42l43: Tidy up formatting on sdw_device_id table
      commit: 7d044cc604923749a8c2edb321a40cdc0e592259

--
Lee Jones [李琼斯]


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant
  2026-07-16 15:14   ` Lee Jones
@ 2026-07-16 15:47     ` Charles Keepax
  2026-07-16 16:08       ` Lee Jones
  0 siblings, 1 reply; 14+ messages in thread
From: Charles Keepax @ 2026-07-16 15:47 UTC (permalink / raw)
  To: Lee Jones
  Cc: broonie, robh, krzk+dt, conor+dt, lgirdwood, linux-sound,
	devicetree, mfd, linux-kernel, patches

On Thu, Jul 16, 2026 at 04:14:37PM +0100, Lee Jones wrote:
> On Wed, 08 Jul 2026, Charles Keepax wrote:
> > The cs42l44 is a cost optimised variant of cs42l43b. Add basic support
> > for this new device.
> > 
> > Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> > ---
> >  	switch (devid) {
> >  	case CS42L43_DEVID_VAL:
> > +		valid_id = (cs42l43->variant_id == CS42L43_DEVID_VAL);
> > +		break;
> >  	case CS42L43B_DEVID_VAL:
> > -		if (devid != cs42l43->variant_id) {
> > -			dev_err(cs42l43->dev,
> > -				"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
> > -				devid, cs42l43->variant_id);
> > -			goto err;
> > -		}
> 
> Needs a fall-through statement.

I thought they weren't typically used if the case had no content,
the resultant code looks like:

case CS42L43B_DEVID_VAL:
case CS42L44_DEVID_VAL:
	valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
	break;

But happy to add one if we really want it?

> > +	case CS42L44_DEVID_VAL:
> > +		valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
> >  		break;
> >  	default:
> >  		dev_err(cs42l43->dev, "Unrecognised devid: 0x%06x\n", devid);
> >  		goto err;
> >  	}
> >  
> > +	if (!valid_id) {
> 
> How is this nor handled in the default branch?

The default case ends in goto err; so this doesn't run in that
case.

Thanks,
Charles

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant
  2026-07-16 15:47     ` Charles Keepax
@ 2026-07-16 16:08       ` Lee Jones
  2026-07-16 16:26         ` Charles Keepax
  0 siblings, 1 reply; 14+ messages in thread
From: Lee Jones @ 2026-07-16 16:08 UTC (permalink / raw)
  To: Charles Keepax
  Cc: broonie, robh, krzk+dt, conor+dt, lgirdwood, linux-sound,
	devicetree, mfd, linux-kernel, patches

On Thu, 16 Jul 2026, Charles Keepax wrote:

> On Thu, Jul 16, 2026 at 04:14:37PM +0100, Lee Jones wrote:
> > On Wed, 08 Jul 2026, Charles Keepax wrote:
> > > The cs42l44 is a cost optimised variant of cs42l43b. Add basic support
> > > for this new device.
> > > 
> > > Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> > > ---
> > >  	switch (devid) {
> > >  	case CS42L43_DEVID_VAL:
> > > +		valid_id = (cs42l43->variant_id == CS42L43_DEVID_VAL);
> > > +		break;
> > >  	case CS42L43B_DEVID_VAL:
> > > -		if (devid != cs42l43->variant_id) {
> > > -			dev_err(cs42l43->dev,
> > > -				"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
> > > -				devid, cs42l43->variant_id);
> > > -			goto err;
> > > -		}
> > 
> > Needs a fall-through statement.
> 
> I thought they weren't typically used if the case had no content,
> the resultant code looks like:
> 
> case CS42L43B_DEVID_VAL:
> case CS42L44_DEVID_VAL:
> 	valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
> 	break;
> 
> But happy to add one if we really want it?

Not particularly.  I'm happy to take your word for it.

> > > +	case CS42L44_DEVID_VAL:
> > > +		valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
> > >  		break;
> > >  	default:
> > >  		dev_err(cs42l43->dev, "Unrecognised devid: 0x%06x\n", devid);
> > >  		goto err;
> > >  	}
> > >  
> > > +	if (!valid_id) {
> > 
> > How is this nor handled in the default branch?
> 
> The default case ends in goto err; so this doesn't run in that
> case.

So are there 'case's that do not populate valid_id?

-- 
Lee Jones

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant
  2026-07-16 16:08       ` Lee Jones
@ 2026-07-16 16:26         ` Charles Keepax
  0 siblings, 0 replies; 14+ messages in thread
From: Charles Keepax @ 2026-07-16 16:26 UTC (permalink / raw)
  To: Lee Jones
  Cc: broonie, robh, krzk+dt, conor+dt, lgirdwood, linux-sound,
	devicetree, mfd, linux-kernel, patches

On Thu, Jul 16, 2026 at 05:08:14PM +0100, Lee Jones wrote:
> On Thu, 16 Jul 2026, Charles Keepax wrote:
> 
> > On Thu, Jul 16, 2026 at 04:14:37PM +0100, Lee Jones wrote:
> > > On Wed, 08 Jul 2026, Charles Keepax wrote:
> > > > The cs42l44 is a cost optimised variant of cs42l43b. Add basic support
> > > > for this new device.
> > > > 
> > > > Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> > > > ---
> > > > +	case CS42L44_DEVID_VAL:
> > > > +		valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
> > > >  		break;
> > > >  	default:
> > > >  		dev_err(cs42l43->dev, "Unrecognised devid: 0x%06x\n", devid);
> > > >  		goto err;
> > > >  	}
> > > >  
> > > > +	if (!valid_id) {
> > > 
> > > How is this nor handled in the default branch?
> > 
> > The default case ends in goto err; so this doesn't run in that
> > case.
> 
> So are there 'case's that do not populate valid_id?

No, all the cases populate valid_id.

The switch is basically checking if the chip ID matches the ID
that was given in ACPI/DT, so I would also expect this to
always be the case.

Thanks,
Charles

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant
  2026-07-08 14:00 ` [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant Charles Keepax
@ 2026-07-17 13:18   ` Rob Herring (Arm)
  2026-08-05 13:19   ` Charles Keepax
  1 sibling, 0 replies; 14+ messages in thread
From: Rob Herring (Arm) @ 2026-07-17 13:18 UTC (permalink / raw)
  To: Charles Keepax
  Cc: linux-sound, krzk+dt, mfd, conor+dt, linux-kernel, lgirdwood,
	broonie, devicetree, lee, patches


On Wed, 08 Jul 2026 15:00:37 +0100, Charles Keepax wrote:
> The cs42l44 is a cost optimised variant of cs42l43b.
> 
> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> ---
>  Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml | 1 +
>  1 file changed, 1 insertion(+)
> 

Acked-by: Rob Herring (Arm) <robh@kernel.org>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/3] Add support for cs42l44
  2026-07-08 14:00 [PATCH 0/3] Add support for cs42l44 Charles Keepax
                   ` (2 preceding siblings ...)
  2026-07-08 14:00 ` [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant Charles Keepax
@ 2026-07-26 17:22 ` Mark Brown
  3 siblings, 0 replies; 14+ messages in thread
From: Mark Brown @ 2026-07-26 17:22 UTC (permalink / raw)
  To: Charles Keepax
  Cc: lee, robh, krzk+dt, conor+dt, lgirdwood, linux-sound, devicetree,
	mfd, linux-kernel, patches

[-- Attachment #1: Type: text/plain, Size: 559 bytes --]

On Wed, Jul 08, 2026 at 03:00:36PM +0100, Charles Keepax wrote:
> This series add support for the cs42l44 to the cs42l43 driver.
> 
> I have based these patches on the series by Uwe from here:
> 
> https://lore.kernel.org/lkml/cover.1783507945.git.u.kleine-koenig@baylibre.com/
> 
> Since they both touch the device id arrays, does mean Uwe's series will
> need to be merged before these but probably simpler this way round as
> his series is a lot bigger.

This doesn't apply, please resend whenver there is something it can be
applied against.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant
  2026-07-08 14:00 ` [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant Charles Keepax
  2026-07-17 13:18   ` Rob Herring (Arm)
@ 2026-08-05 13:19   ` Charles Keepax
  1 sibling, 0 replies; 14+ messages in thread
From: Charles Keepax @ 2026-08-05 13:19 UTC (permalink / raw)
  To: lee, broonie, robh, krzk+dt
  Cc: conor+dt, lgirdwood, linux-sound, devicetree, mfd, linux-kernel,
	patches

On Wed, Jul 08, 2026 at 03:00:37PM +0100, Charles Keepax wrote:
> The cs42l44 is a cost optimised variant of cs42l43b.
> 
> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> ---

Going to resend this one separately, there is no need to delay
the binding change whilst we sort out the device table conflicts,
the end result to the binding will not be affected.

Thanks,
Charles

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant
  2026-07-08 14:00 ` [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant Charles Keepax
  2026-07-16 15:14   ` Lee Jones
@ 2026-08-06 14:42   ` Lee Jones
  2026-08-06 15:39     ` Charles Keepax
  1 sibling, 1 reply; 14+ messages in thread
From: Lee Jones @ 2026-08-06 14:42 UTC (permalink / raw)
  To: Charles Keepax
  Cc: broonie, robh, krzk+dt, conor+dt, lgirdwood, linux-sound,
	devicetree, mfd, linux-kernel, patches

On Wed, 08 Jul 2026, Charles Keepax wrote:

> The cs42l44 is a cost optimised variant of cs42l43b. Add basic support
> for this new device.
> 
> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> ---
>  drivers/mfd/cs42l43-i2c.c        |  2 ++
>  drivers/mfd/cs42l43-sdw.c        |  1 +
>  drivers/mfd/cs42l43.c            | 18 ++++++++++++------
>  include/linux/mfd/cs42l43-regs.h |  1 +
>  4 files changed, 16 insertions(+), 6 deletions(-)

Doesn't apply anymore, sorry.  Please rebase.

> diff --git a/drivers/mfd/cs42l43-i2c.c b/drivers/mfd/cs42l43-i2c.c
> index bd9752d2cfc34..1af878c7a20b4 100644
> --- a/drivers/mfd/cs42l43-i2c.c
> +++ b/drivers/mfd/cs42l43-i2c.c
> @@ -59,6 +59,7 @@ static int cs42l43_i2c_probe(struct i2c_client *i2c)
>  static const struct of_device_id cs42l43_of_match[] = {
>  	{ .compatible = "cirrus,cs42l43", .data = (void *)CS42L43_DEVID_VAL },
>  	{ .compatible = "cirrus,cs42l43b", .data = (void *)CS42L43B_DEVID_VAL },
> +	{ .compatible = "cirrus,cs42l44", .data = (void *)CS42L43B_DEVID_VAL },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(of, cs42l43_of_match);
> @@ -68,6 +69,7 @@ MODULE_DEVICE_TABLE(of, cs42l43_of_match);
>  static const struct acpi_device_id cs42l43_acpi_match[] = {
>  	{ .id = "CSC4243", .driver_data = CS42L43_DEVID_VAL },
>  	{ .id = "CSC2A3B", .driver_data = CS42L43B_DEVID_VAL },
> +	{ .id = "CSC4244", .driver_data = CS42L43B_DEVID_VAL },
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(acpi, cs42l43_acpi_match);
> diff --git a/drivers/mfd/cs42l43-sdw.c b/drivers/mfd/cs42l43-sdw.c
> index 6ccfdcd3f6698..81dd19df53685 100644
> --- a/drivers/mfd/cs42l43-sdw.c
> +++ b/drivers/mfd/cs42l43-sdw.c
> @@ -184,6 +184,7 @@ static int cs42l43_sdw_probe(struct sdw_slave *sdw, const struct sdw_device_id *
>  static const struct sdw_device_id cs42l43_sdw_id[] = {
>  	SDW_SLAVE_ENTRY(0x01FA, 0x4243, (void *)CS42L43_DEVID_VAL),
>  	SDW_SLAVE_ENTRY(0x01FA, 0x2A3B, (void *)CS42L43B_DEVID_VAL),
> +	SDW_SLAVE_ENTRY(0x01FA, 0x4244, (void *)CS42L43B_DEVID_VAL),
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(sdw, cs42l43_sdw_id);
> diff --git a/drivers/mfd/cs42l43.c b/drivers/mfd/cs42l43.c
> index 33479ddd539a6..d6027fa4de705 100644
> --- a/drivers/mfd/cs42l43.c
> +++ b/drivers/mfd/cs42l43.c
> @@ -959,6 +959,7 @@ static void cs42l43_boot_work(struct work_struct *work)
>  {
>  	struct cs42l43 *cs42l43 = container_of(work, struct cs42l43, boot_work);
>  	unsigned int devid, revid, otp;
> +	bool valid_id;
>  	int ret;
>  
>  	ret = cs42l43_wait_for_attach(cs42l43);
> @@ -973,19 +974,24 @@ static void cs42l43_boot_work(struct work_struct *work)
>  
>  	switch (devid) {
>  	case CS42L43_DEVID_VAL:
> +		valid_id = (cs42l43->variant_id == CS42L43_DEVID_VAL);
> +		break;
>  	case CS42L43B_DEVID_VAL:
> -		if (devid != cs42l43->variant_id) {
> -			dev_err(cs42l43->dev,
> -				"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
> -				devid, cs42l43->variant_id);
> -			goto err;
> -		}
> +	case CS42L44_DEVID_VAL:
> +		valid_id = (cs42l43->variant_id == CS42L43B_DEVID_VAL);
>  		break;
>  	default:
>  		dev_err(cs42l43->dev, "Unrecognised devid: 0x%06x\n", devid);
>  		goto err;
>  	}
>  
> +	if (!valid_id) {
> +		dev_err(cs42l43->dev,
> +			"Device ID (0x%06x) does not match variant ID (0x%06lx)\n",
> +			devid, cs42l43->variant_id);
> +		goto err;
> +	}
> +
>  	ret = regmap_read(cs42l43->regmap, CS42L43_REVID, &revid);
>  	if (ret) {
>  		dev_err(cs42l43->dev, "Failed to read rev: %d\n", ret);
> diff --git a/include/linux/mfd/cs42l43-regs.h b/include/linux/mfd/cs42l43-regs.h
> index 68831f113589d..4c00ceae8b461 100644
> --- a/include/linux/mfd/cs42l43-regs.h
> +++ b/include/linux/mfd/cs42l43-regs.h
> @@ -1183,6 +1183,7 @@
>  
>  /* CS42L43B VARIANT REGISTERS */
>  #define CS42L43B_DEVID_VAL					0x0042A43B
> +#define CS42L44_DEVID_VAL					0x00042A44
>  
>  #define CS42L43B_DECIM_VOL_CTRL_CH1_CH2				0x00008280
>  #define CS42L43B_DECIM_VOL_CTRL_CH3_CH4				0x00008284
> -- 
> 2.47.3
> 

-- 
Lee Jones

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant
  2026-08-06 14:42   ` Lee Jones
@ 2026-08-06 15:39     ` Charles Keepax
  0 siblings, 0 replies; 14+ messages in thread
From: Charles Keepax @ 2026-08-06 15:39 UTC (permalink / raw)
  To: Lee Jones
  Cc: broonie, robh, krzk+dt, conor+dt, lgirdwood, linux-sound,
	devicetree, mfd, linux-kernel, patches

On Thu, Aug 06, 2026 at 03:42:10PM +0100, Lee Jones wrote:
> On Wed, 08 Jul 2026, Charles Keepax wrote:
> 
> > The cs42l44 is a cost optimised variant of cs42l43b. Add basic support
> > for this new device.
> > 
> > Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
> > ---
> >  drivers/mfd/cs42l43-i2c.c        |  2 ++
> >  drivers/mfd/cs42l43-sdw.c        |  1 +
> >  drivers/mfd/cs42l43.c            | 18 ++++++++++++------
> >  include/linux/mfd/cs42l43-regs.h |  1 +
> >  4 files changed, 16 insertions(+), 6 deletions(-)
> 
> Doesn't apply anymore, sorry.  Please rebase.
> 

No problem I think that is my doing not yours, I based the series on
patches from Uwe's series:

[PATCH v3 00/23] mfd: Use named initializers for arrays of *_device_data
https://lore.kernel.org/lkml/cover.1783615311.git.u.kleine-koenig@baylibre.com/#t

As that series updates all the device id tables and is much
bigger than mine seemed easier if I rebased onto it, rather than
making him rebase. My rough plan was to resend this once Uwe's
series was sorted out.

Thanks,
Charles

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2026-08-06 15:39 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-08 14:00 [PATCH 0/3] Add support for cs42l44 Charles Keepax
2026-07-08 14:00 ` [PATCH 1/3] ASoC: dt-bindings: cirrus,cs42l43: Add CS42L44 variant Charles Keepax
2026-07-17 13:18   ` Rob Herring (Arm)
2026-08-05 13:19   ` Charles Keepax
2026-07-08 14:00 ` [PATCH 2/3] mfd: cs42l43: Tidy up formatting on sdw_device_id table Charles Keepax
2026-07-16 15:16   ` (subset) " Lee Jones
2026-07-08 14:00 ` [PATCH 3/3] mfd: cs42l43: Add support for new cs42l44 variant Charles Keepax
2026-07-16 15:14   ` Lee Jones
2026-07-16 15:47     ` Charles Keepax
2026-07-16 16:08       ` Lee Jones
2026-07-16 16:26         ` Charles Keepax
2026-08-06 14:42   ` Lee Jones
2026-08-06 15:39     ` Charles Keepax
2026-07-26 17:22 ` [PATCH 0/3] Add support for cs42l44 Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox