public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property
@ 2023-08-17 11:27 Richard Fitzgerald
  2023-08-17 11:27 ` [PATCH v2 1/2] ASoC: cs35l56: Read firmware uuid from a device property instead of _SUB Richard Fitzgerald
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Richard Fitzgerald @ 2023-08-17 11:27 UTC (permalink / raw)
  To: broonie; +Cc: alsa-devel, linux-kernel, patches, Richard Fitzgerald

These two patches add an ACPI HID and update the way the platform-
specific firmware identifier is extracted from the ACPI.

CHANGES SINCE V1:
- Rebased to apply on v6.4 and v6.5.
- Change kstrdup() to devm_kstrdup()

To apply on v6.6 a 1-line change is needed:

static int cs35l56_get_firmware_uid(struct cs35l56_private *cs35l56)
{
-       struct device *dev = cs35l56->dev;
+       struct device *dev = cs35l56->base.dev;

Maciej Strozek (1):
  ASoC: cs35l56: Read firmware uuid from a device property instead of
    _SUB

Simon Trimmer (1):
  ASoC: cs35l56: Add an ACPI match table

 sound/soc/codecs/cs35l56-i2c.c |  9 +++++++++
 sound/soc/codecs/cs35l56-spi.c |  9 +++++++++
 sound/soc/codecs/cs35l56.c     | 31 ++++++++++++-------------------
 3 files changed, 30 insertions(+), 19 deletions(-)

-- 
2.30.2


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

* [PATCH v2 1/2] ASoC: cs35l56: Read firmware uuid from a device property instead of _SUB
  2023-08-17 11:27 [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property Richard Fitzgerald
@ 2023-08-17 11:27 ` Richard Fitzgerald
  2023-08-17 11:27 ` [PATCH v2 2/2] ASoC: cs35l56: Add an ACPI match table Richard Fitzgerald
  2023-08-17 22:36 ` [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Richard Fitzgerald @ 2023-08-17 11:27 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, linux-kernel, patches, Maciej Strozek,
	Richard Fitzgerald

From: Maciej Strozek <mstrozek@opensource.cirrus.com>

Use a device property "cirrus,firmware-uid" to get the unique firmware
identifier instead of using ACPI _SUB. There aren't any products that use
_SUB.

There will not usually be a _SUB in Soundwire nodes. The ACPI can use a
_DSD section for custom properties.

There is also a need to support instantiating this driver using software
nodes. This is for systems where the CS35L56 is a back-end device and the
ACPI refers only to the front-end audio device - there will not be any ACPI
references to CS35L56.

Fixes: e49611252900 ("ASoC: cs35l56: Add driver for Cirrus Logic CS35L56")
Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
---
Changes since V1:
- Rebase to apply on v6.4 and v6.5
- Use devm_kstrdup() instead of kstrdup() and free()

To apply on v6.6 a 1-line change is needed:

static int cs35l56_get_firmware_uid(struct cs35l56_private *cs35l56)
{
-	struct device *dev = cs35l56->dev;
+	struct device *dev = cs35l56->base.dev;
---
 sound/soc/codecs/cs35l56.c | 31 ++++++++++++-------------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git a/sound/soc/codecs/cs35l56.c b/sound/soc/codecs/cs35l56.c
index c03f9d3c9a13..fd06b9f9d496 100644
--- a/sound/soc/codecs/cs35l56.c
+++ b/sound/soc/codecs/cs35l56.c
@@ -5,7 +5,6 @@
 // Copyright (C) 2023 Cirrus Logic, Inc. and
 //                    Cirrus Logic International Semiconductor Ltd.
 
-#include <linux/acpi.h>
 #include <linux/completion.h>
 #include <linux/debugfs.h>
 #include <linux/delay.h>
@@ -1354,26 +1353,22 @@ static int cs35l56_dsp_init(struct cs35l56_private *cs35l56)
 	return 0;
 }
 
-static int cs35l56_acpi_get_name(struct cs35l56_private *cs35l56)
+static int cs35l56_get_firmware_uid(struct cs35l56_private *cs35l56)
 {
-	acpi_handle handle = ACPI_HANDLE(cs35l56->dev);
-	const char *sub;
+	struct device *dev = cs35l56->dev;
+	const char *prop;
+	int ret;
 
-	/* If there is no ACPI_HANDLE, there is no ACPI for this system, return 0 */
-	if (!handle)
+	ret = device_property_read_string(dev, "cirrus,firmware-uid", &prop);
+	/* If bad sw node property, return 0 and fallback to legacy firmware path */
+	if (ret < 0)
 		return 0;
 
-	sub = acpi_get_subsystem_id(handle);
-	if (IS_ERR(sub)) {
-		/* If bad ACPI, return 0 and fallback to legacy firmware path, otherwise fail */
-		if (PTR_ERR(sub) == -ENODATA)
-			return 0;
-		else
-			return PTR_ERR(sub);
-	}
+	cs35l56->dsp.system_name = devm_kstrdup(dev, prop, GFP_KERNEL);
+	if (cs35l56->dsp.system_name == NULL)
+		return -ENOMEM;
 
-	cs35l56->dsp.system_name = sub;
-	dev_dbg(cs35l56->dev, "Subsystem ID: %s\n", cs35l56->dsp.system_name);
+	dev_dbg(dev, "Firmware UID: %s\n", cs35l56->dsp.system_name);
 
 	return 0;
 }
@@ -1417,7 +1412,7 @@ int cs35l56_common_probe(struct cs35l56_private *cs35l56)
 		gpiod_set_value_cansleep(cs35l56->reset_gpio, 1);
 	}
 
-	ret = cs35l56_acpi_get_name(cs35l56);
+	ret = cs35l56_get_firmware_uid(cs35l56);
 	if (ret != 0)
 		goto err;
 
@@ -1604,8 +1599,6 @@ void cs35l56_remove(struct cs35l56_private *cs35l56)
 
 	regcache_cache_only(cs35l56->regmap, true);
 
-	kfree(cs35l56->dsp.system_name);
-
 	gpiod_set_value_cansleep(cs35l56->reset_gpio, 0);
 	regulator_bulk_disable(ARRAY_SIZE(cs35l56->supplies), cs35l56->supplies);
 }
-- 
2.30.2


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

* [PATCH v2 2/2] ASoC: cs35l56: Add an ACPI match table
  2023-08-17 11:27 [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property Richard Fitzgerald
  2023-08-17 11:27 ` [PATCH v2 1/2] ASoC: cs35l56: Read firmware uuid from a device property instead of _SUB Richard Fitzgerald
@ 2023-08-17 11:27 ` Richard Fitzgerald
  2023-08-17 22:36 ` [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Richard Fitzgerald @ 2023-08-17 11:27 UTC (permalink / raw)
  To: broonie
  Cc: alsa-devel, linux-kernel, patches, Simon Trimmer,
	Richard Fitzgerald

From: Simon Trimmer <simont@opensource.cirrus.com>

An ACPI ID has been allocated for CS35L56 ASoC devices so that they can
be instantiated from ACPI Device entries.

Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com>
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
---
 sound/soc/codecs/cs35l56-i2c.c | 9 +++++++++
 sound/soc/codecs/cs35l56-spi.c | 9 +++++++++
 2 files changed, 18 insertions(+)

diff --git a/sound/soc/codecs/cs35l56-i2c.c b/sound/soc/codecs/cs35l56-i2c.c
index ed2a41943d97..40666e6698ba 100644
--- a/sound/soc/codecs/cs35l56-i2c.c
+++ b/sound/soc/codecs/cs35l56-i2c.c
@@ -62,10 +62,19 @@ static const struct i2c_device_id cs35l56_id_i2c[] = {
 };
 MODULE_DEVICE_TABLE(i2c, cs35l56_id_i2c);
 
+#ifdef CONFIG_ACPI
+static const struct acpi_device_id cs35l56_asoc_acpi_match[] = {
+	{ "CSC355C", 0 },
+	{},
+};
+MODULE_DEVICE_TABLE(acpi, cs35l56_asoc_acpi_match);
+#endif
+
 static struct i2c_driver cs35l56_i2c_driver = {
 	.driver = {
 		.name		= "cs35l56",
 		.pm = &cs35l56_pm_ops_i2c_spi,
+		.acpi_match_table = ACPI_PTR(cs35l56_asoc_acpi_match),
 	},
 	.id_table	= cs35l56_id_i2c,
 	.probe		= cs35l56_i2c_probe,
diff --git a/sound/soc/codecs/cs35l56-spi.c b/sound/soc/codecs/cs35l56-spi.c
index 996aab10500e..302f9c47407a 100644
--- a/sound/soc/codecs/cs35l56-spi.c
+++ b/sound/soc/codecs/cs35l56-spi.c
@@ -59,10 +59,19 @@ static const struct spi_device_id cs35l56_id_spi[] = {
 };
 MODULE_DEVICE_TABLE(spi, cs35l56_id_spi);
 
+#ifdef CONFIG_ACPI
+static const struct acpi_device_id cs35l56_asoc_acpi_match[] = {
+	{ "CSC355C", 0 },
+	{},
+};
+MODULE_DEVICE_TABLE(acpi, cs35l56_asoc_acpi_match);
+#endif
+
 static struct spi_driver cs35l56_spi_driver = {
 	.driver = {
 		.name		= "cs35l56",
 		.pm = &cs35l56_pm_ops_i2c_spi,
+		.acpi_match_table = ACPI_PTR(cs35l56_asoc_acpi_match),
 	},
 	.id_table	= cs35l56_id_spi,
 	.probe		= cs35l56_spi_probe,
-- 
2.30.2


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

* Re: [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property
  2023-08-17 11:27 [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property Richard Fitzgerald
  2023-08-17 11:27 ` [PATCH v2 1/2] ASoC: cs35l56: Read firmware uuid from a device property instead of _SUB Richard Fitzgerald
  2023-08-17 11:27 ` [PATCH v2 2/2] ASoC: cs35l56: Add an ACPI match table Richard Fitzgerald
@ 2023-08-17 22:36 ` Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2023-08-17 22:36 UTC (permalink / raw)
  To: Richard Fitzgerald; +Cc: alsa-devel, linux-kernel, patches

On Thu, 17 Aug 2023 12:27:10 +0100, Richard Fitzgerald wrote:
> These two patches add an ACPI HID and update the way the platform-
> specific firmware identifier is extracted from the ACPI.
> 
> CHANGES SINCE V1:
> - Rebased to apply on v6.4 and v6.5.
> - Change kstrdup() to devm_kstrdup()
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/2] ASoC: cs35l56: Read firmware uuid from a device property instead of _SUB
      commit: 897a6b5a030e62c21566551c870d81740f82ca13
[2/2] ASoC: cs35l56: Add an ACPI match table
      commit: e8500a70270334b9abad72fea504ef38a2952274

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark


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

end of thread, other threads:[~2023-08-17 22:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-17 11:27 [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property Richard Fitzgerald
2023-08-17 11:27 ` [PATCH v2 1/2] ASoC: cs35l56: Read firmware uuid from a device property instead of _SUB Richard Fitzgerald
2023-08-17 11:27 ` [PATCH v2 2/2] ASoC: cs35l56: Add an ACPI match table Richard Fitzgerald
2023-08-17 22:36 ` [PATCH v2 0/2] ASoC: cs35l56: Update ACPI HID and property Mark Brown

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