* [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
* 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 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
* [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
* 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
* [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: [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 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
* 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
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