* [PATCH v3 0/2] Support reading Subsystem ID from Device Tree
@ 2025-09-17 15:37 Stefan Binding
2025-09-17 15:37 ` [PATCH v3 1/2] ASoC: dt-bindings: cirrus,cs35l41: Document the cirrus,subsystem-id property Stefan Binding
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Stefan Binding @ 2025-09-17 15:37 UTC (permalink / raw)
To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-sound, devicetree, linux-kernel, patches, Stefan Binding
In PC systems using ACPI, the driver is able to read back an SSID from
the _SUB property. This SSID uniquely identifies the system, which
enables the driver to read the correct firmware and tuning for that
system from linux-firmware. Currently there is no way of reading this
property from device tree. Add an equivalent property in device tree
to perform the same role.
Changes since v2:
- Fixed use of PTR_ERR, using PTR_ERR_OR_ZERO instead
- Update commit message of patch 1 to explain why we need SSID property
Changes since v1:
- Fixed device tree property type
Stefan Binding (2):
ASoC: dt-bindings: cirrus,cs35l41: Document the cirrus,subsystem-id
property
ASoC: cs35l41: Fallback to reading Subsystem ID property if not ACPI
.../bindings/sound/cirrus,cs35l41.yaml | 6 ++
sound/soc/codecs/cs35l41.c | 77 +++++++++++--------
2 files changed, 50 insertions(+), 33 deletions(-)
--
2.43.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 1/2] ASoC: dt-bindings: cirrus,cs35l41: Document the cirrus,subsystem-id property
2025-09-17 15:37 [PATCH v3 0/2] Support reading Subsystem ID from Device Tree Stefan Binding
@ 2025-09-17 15:37 ` Stefan Binding
2025-09-17 15:37 ` [PATCH v3 2/2] ASoC: cs35l41: Fallback to reading Subsystem ID property if not ACPI Stefan Binding
2025-09-23 11:25 ` [PATCH v3 0/2] Support reading Subsystem ID from Device Tree Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Stefan Binding @ 2025-09-17 15:37 UTC (permalink / raw)
To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-sound, devicetree, linux-kernel, patches, Stefan Binding
Add new property: cirrus,subsystem-id
This new property is used to uniquely identify the system if device
tree is used, to allow the driver to select the correct firmware and
tuning for the system.
The DSP driver searches for a compatible firmware (and tuning) based on
what it is able to read from the hardware.
However, the SSID is based on the system, and cannot be read from the
hardware, therefore it needs to be read from the Device Tree.
On ACPI-based systems, it is able to read this from the ACPI _SUB
property, and to maintain compatibility with the driver between ACPI
and Device Tree systems we need an equivalent property.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
---
Documentation/devicetree/bindings/sound/cirrus,cs35l41.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l41.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l41.yaml
index 14dea1feefc5..e6cf2ebcd777 100644
--- a/Documentation/devicetree/bindings/sound/cirrus,cs35l41.yaml
+++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l41.yaml
@@ -151,6 +151,12 @@ properties:
minimum: 0
maximum: 5
+ cirrus,subsystem-id:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ Subsystem ID. If this property is present, it sets the system name,
+ used to identify the firmware and tuning to load.
+
required:
- compatible
- reg
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] ASoC: cs35l41: Fallback to reading Subsystem ID property if not ACPI
2025-09-17 15:37 [PATCH v3 0/2] Support reading Subsystem ID from Device Tree Stefan Binding
2025-09-17 15:37 ` [PATCH v3 1/2] ASoC: dt-bindings: cirrus,cs35l41: Document the cirrus,subsystem-id property Stefan Binding
@ 2025-09-17 15:37 ` Stefan Binding
2025-09-23 11:25 ` [PATCH v3 0/2] Support reading Subsystem ID from Device Tree Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Stefan Binding @ 2025-09-17 15:37 UTC (permalink / raw)
To: Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-sound, devicetree, linux-kernel, patches, Stefan Binding
If ACPI is not used, then there is currently no way of reading a
Subsystem ID property used for a system name to uniquely identify
the system in order to load the correct firmware and tuning.
Add a new property which can be read from device tree to be able to set
the system name.
Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
---
sound/soc/codecs/cs35l41.c | 77 ++++++++++++++++++++++----------------
1 file changed, 44 insertions(+), 33 deletions(-)
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index 224d65987a8d..173d7c59b725 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -7,6 +7,7 @@
// Author: David Rhodes <david.rhodes@cirrus.com>
#include <linux/acpi.h>
+#include <acpi/acpi_bus.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/init.h>
@@ -1147,45 +1148,55 @@ static int cs35l41_dsp_init(struct cs35l41_private *cs35l41)
return ret;
}
-#ifdef CONFIG_ACPI
-static int cs35l41_acpi_get_name(struct cs35l41_private *cs35l41)
+static int cs35l41_get_system_name(struct cs35l41_private *cs35l41)
{
struct acpi_device *adev = ACPI_COMPANION(cs35l41->dev);
- acpi_handle handle = acpi_device_handle(adev);
- const char *hid;
- const char *sub;
-
- /* If there is no acpi_device, there is no ACPI for this system, return 0 */
- if (!adev)
- return 0;
+ const char *sub = NULL;
+ const char *tmp;
+ int ret = 0;
- sub = acpi_get_subsystem_id(handle);
- if (IS_ERR(sub)) {
- /* If no _SUB, fallback to _HID, otherwise fail */
- if (PTR_ERR(sub) == -ENODATA) {
- hid = acpi_device_hid(adev);
- /* If dummy hid, return 0 and fallback to legacy firmware path */
- if (!strcmp(hid, "device"))
- return 0;
- sub = kstrdup(hid, GFP_KERNEL);
- if (!sub)
- sub = ERR_PTR(-ENOMEM);
-
- } else
- return PTR_ERR(sub);
+ /* If there is no acpi_device, there is no ACPI for this system, skip checking ACPI */
+ if (adev) {
+ acpi_handle handle = acpi_device_handle(adev);
+
+ sub = acpi_get_subsystem_id(handle);
+ ret = PTR_ERR_OR_ZERO(sub);
+ if (ret) {
+ sub = NULL;
+ /* If no _SUB, fallback to _HID, otherwise fail */
+ if (ret == -ENODATA) {
+ tmp = acpi_device_hid(adev);
+ /* If dummy hid, return 0 and fallback to legacy firmware path */
+ if (!strcmp(tmp, "device")) {
+ ret = 0;
+ goto err;
+ }
+ sub = kstrdup(tmp, GFP_KERNEL);
+ if (!sub) {
+ ret = -ENOMEM;
+ goto err;
+ }
+ }
+ }
+ } else {
+ if (!device_property_read_string(cs35l41->dev, "cirrus,subsystem-id", &tmp)) {
+ sub = kstrdup(tmp, GFP_KERNEL);
+ if (!sub) {
+ ret = -ENOMEM;
+ goto err;
+ }
+ }
}
- cs35l41->dsp.system_name = sub;
- dev_dbg(cs35l41->dev, "Subsystem ID: %s\n", cs35l41->dsp.system_name);
+err:
+ if (sub) {
+ cs35l41->dsp.system_name = sub;
+ dev_info(cs35l41->dev, "Subsystem ID: %s\n", cs35l41->dsp.system_name);
+ } else
+ dev_warn(cs35l41->dev, "Subsystem ID not found\n");
- return 0;
-}
-#else
-static int cs35l41_acpi_get_name(struct cs35l41_private *cs35l41)
-{
- return 0;
+ return ret;
}
-#endif /* CONFIG_ACPI */
int cs35l41_probe(struct cs35l41_private *cs35l41, const struct cs35l41_hw_cfg *hw_cfg)
{
@@ -1317,7 +1328,7 @@ int cs35l41_probe(struct cs35l41_private *cs35l41, const struct cs35l41_hw_cfg *
goto err;
}
- ret = cs35l41_acpi_get_name(cs35l41);
+ ret = cs35l41_get_system_name(cs35l41);
if (ret < 0)
goto err;
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/2] Support reading Subsystem ID from Device Tree
2025-09-17 15:37 [PATCH v3 0/2] Support reading Subsystem ID from Device Tree Stefan Binding
2025-09-17 15:37 ` [PATCH v3 1/2] ASoC: dt-bindings: cirrus,cs35l41: Document the cirrus,subsystem-id property Stefan Binding
2025-09-17 15:37 ` [PATCH v3 2/2] ASoC: cs35l41: Fallback to reading Subsystem ID property if not ACPI Stefan Binding
@ 2025-09-23 11:25 ` Mark Brown
2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2025-09-23 11:25 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Stefan Binding
Cc: linux-sound, devicetree, linux-kernel, patches
On Wed, 17 Sep 2025 16:37:10 +0100, Stefan Binding wrote:
> In PC systems using ACPI, the driver is able to read back an SSID from
> the _SUB property. This SSID uniquely identifies the system, which
> enables the driver to read the correct firmware and tuning for that
> system from linux-firmware. Currently there is no way of reading this
> property from device tree. Add an equivalent property in device tree
> to perform the same role.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[1/2] ASoC: dt-bindings: cirrus,cs35l41: Document the cirrus,subsystem-id property
commit: f8673e4069b2032bf9f854bae818a7bdbdca7520
[2/2] ASoC: cs35l41: Fallback to reading Subsystem ID property if not ACPI
commit: 46c8b4d2a693eca69a2191436cffa44f489e98c7
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:[~2025-09-23 11:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-17 15:37 [PATCH v3 0/2] Support reading Subsystem ID from Device Tree Stefan Binding
2025-09-17 15:37 ` [PATCH v3 1/2] ASoC: dt-bindings: cirrus,cs35l41: Document the cirrus,subsystem-id property Stefan Binding
2025-09-17 15:37 ` [PATCH v3 2/2] ASoC: cs35l41: Fallback to reading Subsystem ID property if not ACPI Stefan Binding
2025-09-23 11:25 ` [PATCH v3 0/2] Support reading Subsystem ID from Device Tree Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox