Public bug reported:
[Impact]
Audio shows "Dummy Output" in GNOME and no input devices are available on
Dell systems with a Cirrus Logic cs42l43 codec (SoundWire part_id 0x2A3B).
The regression was introduced by commit 87a3f5c8ac20 (merged in v7.1-rc1),
which moved spk:cs42l43-spk string generation into the generic
asoc_sdw_rtd_init() path. That commit added component_name to the 0x4243
cs42l43 entry but missed the 0x2A3B entry.
Without component_name on the 0x2A3B dp6 DAI, asoc_sdw_rtd_init() never
appends "spk:cs35l56-bridge" to card->components. The sof-soundwire UCM
regex then fails to match a speaker codec, all HiFi profiles are marked
available=no, and WirePlumber falls back to the Off profile with no nodes.
Hits 100% on affected hardware.
[Fix]
Add the missing .component_name = "cs42l43-spk" field to the 0x2A3B cs42l43
entry's AMP DAI in codec_info_list. The existing SOC_SDW_SIDECAR_AMPS
redirect in asoc_sdw_rtd_init() then correctly translates this to
"cs35l56-bridge" in card->components, which matches the UCM regex and the
existing cs35l56-bridge.conf UCM file.
This is an original fix; the same bug exists in linux-next and will be
submitted upstream.
Fixes: 87a3f5c8ac20 ("ASoC: sdw_utils: cs42l43: allow spk component names
to be combined")
[Test Plan]
Boot on affected Dell hardware with cs42l43 0x2A3B codec.
Without patch: GNOME shows "Dummy Output", no microphone listed.
With patch:
1. Check card->components includes spk: token:
$ cat /sys/class/sound/card0/components | grep -o 'spk:[^ ]*'
Expected: spk:cs35l56-bridge
2. Check WirePlumber selected HiFi profile:
$ pw-cli enum-params <sof-soundwire-device-id> EnumProfile | grep -E
'index|available'
Expected: active profile has available=yes
3. Test speaker output:
$ speaker-test -c 2 -l 1 -t wav
Expected: audio plays without error
[Where problems could occur]
Could affect snd-soc-sdw-utils and any machine using the cs42l43 0x2A3B
codec with sidecar amps.
If the sidecar redirect logic in asoc_sdw_rtd_init() misidentifies the
component, the wrong spk: string could end up in card->components, causing
UCM to select the wrong speaker init config. Speaker output would fail or
use an incorrect routing.
** Affects: linux-oem-6.17 (Ubuntu)
Importance: Undecided
Status: New
** Affects: linux-oem-6.17 (Ubuntu Noble)
Importance: Undecided
Status: In Progress
** Description changed:
+ [Impact]
+ Audio shows "Dummy Output" in GNOME and no input devices are available on
+ Dell systems with a Cirrus Logic cs42l43 codec (SoundWire part_id 0x2A3B).
+
+ The regression was introduced by commit 87a3f5c8ac20 (merged in v7.1-rc1),
+ which moved spk:cs42l43-spk string generation into the generic
+ asoc_sdw_rtd_init() path. That commit added component_name to the 0x4243
+ cs42l43 entry but missed the 0x2A3B entry.
+
+ Without component_name on the 0x2A3B dp6 DAI, asoc_sdw_rtd_init() never
+ appends "spk:cs35l56-bridge" to card->components. The sof-soundwire UCM
+ regex then fails to match a speaker codec, all HiFi profiles are marked
+ available=no, and WirePlumber falls back to the Off profile with no nodes.
+
+ Hits 100% on affected hardware.
+
[Fix]
Add the missing .component_name = "cs42l43-spk" field to the 0x2A3B cs42l43
entry's AMP DAI in codec_info_list. The existing SOC_SDW_SIDECAR_AMPS
redirect in asoc_sdw_rtd_init() then correctly translates this to
"cs35l56-bridge" in card->components, which matches the UCM regex and the
existing cs35l56-bridge.conf UCM file.
This is an original fix; the same bug exists in linux-next and will be
submitted upstream.
Fixes: 87a3f5c8ac20 ("ASoC: sdw_utils: cs42l43: allow spk component names
to be combined")
[Test Plan]
Boot on affected Dell hardware with cs42l43 0x2A3B codec.
Without patch: GNOME shows "Dummy Output", no microphone listed.
With patch:
1. Check card->components includes spk: token:
- $ cat /sys/class/sound/card0/components | grep -o 'spk:[^ ]*'
- Expected: spk:cs35l56-bridge
+ $ cat /sys/class/sound/card0/components | grep -o 'spk:[^ ]*'
+ Expected: spk:cs35l56-bridge
2. Check WirePlumber selected HiFi profile:
- $ pw-cli enum-params <sof-soundwire-device-id> EnumProfile | grep -E
'index|available'
- Expected: active profile has available=yes
+ $ pw-cli enum-params <sof-soundwire-device-id> EnumProfile | grep -E
'index|available'
+ Expected: active profile has available=yes
3. Test speaker output:
- $ speaker-test -c 2 -l 1 -t wav
- Expected: audio plays without error
+ $ speaker-test -c 2 -l 1 -t wav
+ Expected: audio plays without error
[Where problems could occur]
Could affect snd-soc-sdw-utils and any machine using the cs42l43 0x2A3B
codec with sidecar amps.
If the sidecar redirect logic in asoc_sdw_rtd_init() misidentifies the
component, the wrong spk: string could end up in card->components, causing
UCM to select the wrong speaker init config. Speaker output would fail or
use an incorrect routing.
** Also affects: linux-oem-6.17 (Ubuntu Noble)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2156313
Title:
Audio shows Dummy Output on systems with Cirrus Logic cs42l43 codec
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-oem-6.17/+bug/2156313/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs