The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag
@ 2026-07-04 12:51 Marco Griep
  0 siblings, 0 replies; 4+ messages in thread
From: Marco Griep @ 2026-07-04 12:51 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: Jaroslav Kysela, Takashi Iwai, Charles Keepax, Kuninori Morimoto,
	linux-sound, linux-kernel, Marco Griep

The RT721 multifunction SDCA speaker helper adds the DAPM routes for
its internal speaker path, but it does not add the corresponding
spk:rt721 token to card->components.

UCM uses that token to include the RT721 speaker device. Without it,
systems with standalone RT721 expose the ALSA SmartAmp PCM but PipeWire
only sees the headset devices.

Append the speaker codec token from the RT721 multifunction SDCA speaker
runtime init path so UCM can create the internal speaker route.

Tested on an ASUS Vivobook S16 M3607GA with ACP70 SoundWire RT721-SDCA.
With the standalone RT721 ACP70 machine entry, this makes the HiFi
profile expose Speaker, Headphones, internal Mic and Headset devices.

Signed-off-by: Marco Griep <mail@marcogriep.de>
---
 sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
index 5bf3627a97a0..e895397eefd6 100644
--- a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
+++ b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
@@ -74,6 +74,12 @@ int asoc_sdw_rt_mf_sdca_spk_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd
 		return -EINVAL;
 	}
 
+	card->components = devm_kasprintf(card->dev, GFP_KERNEL,
+					  "%s spk:%s",
+					  card->components, codec_name);
+	if (!card->components)
+		return -ENOMEM;
+
 	/* Add routes */
 	ret = snd_soc_dapm_add_routes(dapm, route_map->route_map, route_map->route_size);
 	if (ret)

base-commit: 1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55
-- 
2.55.0


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

* RE: [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag
       [not found] <30dd273a.AVwAAJ-gc7kAAAAAAAAABGg7al0AAYKJ_u4AAAAAADQlJwBqSQHg@mailjet.com>
@ 2026-07-05 12:49 ` Liao, Bard
  2026-07-05 16:50   ` Marco Griep
  0 siblings, 1 reply; 4+ messages in thread
From: Liao, Bard @ 2026-07-05 12:49 UTC (permalink / raw)
  To: Marco Griep, Mark Brown, Liam Girdwood
  Cc: Jaroslav Kysela, Takashi Iwai, Charles Keepax, Kuninori Morimoto,
	linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org



> -----Original Message-----
> From: Marco Griep <mail@marcogriep.de>
> Sent: Saturday, July 4, 2026 8:51 PM
> To: Mark Brown <broonie@kernel.org>; Liam Girdwood <lgirdwood@gmail.com>
> Cc: Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Charles
> Keepax <ckeepax@opensource.cirrus.com>; Kuninori Morimoto
> <kuninori.morimoto.gx@renesas.com>; linux-sound@vger.kernel.org; linux-
> kernel@vger.kernel.org; Marco Griep <mail@marcogriep.de>
> Subject: [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag
> 
> The RT721 multifunction SDCA speaker helper adds the DAPM routes for
> its internal speaker path, but it does not add the corresponding
> spk:rt721 token to card->components.

.component_name = "rt721", is set in the rt721 codec info in
codec_info_list[]. And the "spk" tag will be added in the
asoc_sdw_rtd_init() function. Doesn't it work on your device?

> 
> UCM uses that token to include the RT721 speaker device. Without it,
> systems with standalone RT721 expose the ALSA SmartAmp PCM but PipeWire
> only sees the headset devices.
> 
> Append the speaker codec token from the RT721 multifunction SDCA speaker
> runtime init path so UCM can create the internal speaker route.
> 
> Tested on an ASUS Vivobook S16 M3607GA with ACP70 SoundWire RT721-SDCA.
> With the standalone RT721 ACP70 machine entry, this makes the HiFi
> profile expose Speaker, Headphones, internal Mic and Headset devices.
> 
> Signed-off-by: Marco Griep <mail@marcogriep.de>
> ---
>  sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
> b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
> index 5bf3627a97a0..e895397eefd6 100644
> --- a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
> +++ b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
> @@ -74,6 +74,12 @@ int asoc_sdw_rt_mf_sdca_spk_rtd_init(struct
> snd_soc_pcm_runtime *rtd, struct snd
>  		return -EINVAL;
>  	}
> 
> +	card->components = devm_kasprintf(card->dev, GFP_KERNEL,
> +					  "%s spk:%s",
> +					  card->components, codec_name);
> +	if (!card->components)
> +		return -ENOMEM;
> +
>  	/* Add routes */
>  	ret = snd_soc_dapm_add_routes(dapm, route_map->route_map,
> route_map->route_size);
>  	if (ret)
> 
> base-commit: 1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55
> --
> 2.55.0
> 


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

* Re: [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag
  2026-07-05 12:49 ` [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag Liao, Bard
@ 2026-07-05 16:50   ` Marco Griep
  2026-07-06  0:55     ` Liao, Bard
  0 siblings, 1 reply; 4+ messages in thread
From: Marco Griep @ 2026-07-05 16:50 UTC (permalink / raw)
  To: Liao, Bard, Mark Brown, Liam Girdwood
  Cc: Jaroslav Kysela, Takashi Iwai, Charles Keepax, Kuninori Morimoto,
	linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org

Hi Mark,

On my system it doesn't.

With the standalone RT721 ACP70 machine entry, |card->components|does 
not end up containing |spk:rt721|, so the RT721 speaker device is 
missing from the UCM component list. As a result, UCM doesn't include 
the speaker device and PipeWire only exposes the headset devices.

Appending |spk:rt721|from |asoc_sdw_rt_mf_sdca_spk_rtd_init()|fixes that 
on my ASUS Vivobook S16 M3607GA (ACP70 + RT721-SDCA). After the change, 
UCM exposes the expected Speaker, Headphones, Internal Mic and Headset 
devices.

If the token is expected to be added by |asoc_sdw_rtd_init()|, I'd be 
happy to investigate why that doesn't happen with this machine 
configuration.


Best Regards

Marco


Am 05.07.26 um 14:49 schrieb Liao, Bard:
>
>> -----Original Message-----
>> From: Marco Griep <mail@marcogriep.de>
>> Sent: Saturday, July 4, 2026 8:51 PM
>> To: Mark Brown <broonie@kernel.org>; Liam Girdwood <lgirdwood@gmail.com>
>> Cc: Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Charles
>> Keepax <ckeepax@opensource.cirrus.com>; Kuninori Morimoto
>> <kuninori.morimoto.gx@renesas.com>; linux-sound@vger.kernel.org; linux-
>> kernel@vger.kernel.org; Marco Griep <mail@marcogriep.de>
>> Subject: [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag
>>
>> The RT721 multifunction SDCA speaker helper adds the DAPM routes for
>> its internal speaker path, but it does not add the corresponding
>> spk:rt721 token to card->components.
> .component_name = "rt721", is set in the rt721 codec info in
> codec_info_list[]. And the "spk" tag will be added in the
> asoc_sdw_rtd_init() function. Doesn't it work on your device?
>
>> UCM uses that token to include the RT721 speaker device. Without it,
>> systems with standalone RT721 expose the ALSA SmartAmp PCM but PipeWire
>> only sees the headset devices.
>>
>> Append the speaker codec token from the RT721 multifunction SDCA speaker
>> runtime init path so UCM can create the internal speaker route.
>>
>> Tested on an ASUS Vivobook S16 M3607GA with ACP70 SoundWire RT721-SDCA.
>> With the standalone RT721 ACP70 machine entry, this makes the HiFi
>> profile expose Speaker, Headphones, internal Mic and Headset devices.
>>
>> Signed-off-by: Marco Griep <mail@marcogriep.de>
>> ---
>>   sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>> b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>> index 5bf3627a97a0..e895397eefd6 100644
>> --- a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>> +++ b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>> @@ -74,6 +74,12 @@ int asoc_sdw_rt_mf_sdca_spk_rtd_init(struct
>> snd_soc_pcm_runtime *rtd, struct snd
>>   		return -EINVAL;
>>   	}
>>
>> +	card->components = devm_kasprintf(card->dev, GFP_KERNEL,
>> +					  "%s spk:%s",
>> +					  card->components, codec_name);
>> +	if (!card->components)
>> +		return -ENOMEM;
>> +
>>   	/* Add routes */
>>   	ret = snd_soc_dapm_add_routes(dapm, route_map->route_map,
>> route_map->route_size);
>>   	if (ret)
>>
>> base-commit: 1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55
>> --
>> 2.55.0
>>

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

* Re: [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag
  2026-07-05 16:50   ` Marco Griep
@ 2026-07-06  0:55     ` Liao, Bard
  0 siblings, 0 replies; 4+ messages in thread
From: Liao, Bard @ 2026-07-06  0:55 UTC (permalink / raw)
  To: Marco Griep, Liao, Bard, Mark Brown, Liam Girdwood
  Cc: Jaroslav Kysela, Takashi Iwai, Charles Keepax, Kuninori Morimoto,
	linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org



On 7/6/2026 12:50 AM, Marco Griep wrote:
> Hi Mark,
> 
> On my system it doesn't.
> 
> With the standalone RT721 ACP70 machine entry, |card->components|does
> not end up containing |spk:rt721|, so the RT721 speaker device is
> missing from the UCM component list. As a result, UCM doesn't include
> the speaker device and PipeWire only exposes the headset devices.

Please file an issue on https://github.com/thesofproject/linux/issues
with alsa-info output. I will take a look. We should fix the issue
instead of adding the spk tag back to asoc_sdw_rt_mf_sdca_spk_rtd_init()

> 
> Appending |spk:rt721|from |asoc_sdw_rt_mf_sdca_spk_rtd_init()|fixes that
> on my ASUS Vivobook S16 M3607GA (ACP70 + RT721-SDCA). After the change,
> UCM exposes the expected Speaker, Headphones, Internal Mic and Headset
> devices.
> 
> If the token is expected to be added by |asoc_sdw_rtd_init()|, I'd be
> happy to investigate why that doesn't happen with this machine
> configuration.
> 
> 
> Best Regards
> 
> Marco
> 
> 
> Am 05.07.26 um 14:49 schrieb Liao, Bard:
>>
>>> -----Original Message-----
>>> From: Marco Griep <mail@marcogriep.de>
>>> Sent: Saturday, July 4, 2026 8:51 PM
>>> To: Mark Brown <broonie@kernel.org>; Liam Girdwood <lgirdwood@gmail.com>
>>> Cc: Jaroslav Kysela <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>;
>>> Charles
>>> Keepax <ckeepax@opensource.cirrus.com>; Kuninori Morimoto
>>> <kuninori.morimoto.gx@renesas.com>; linux-sound@vger.kernel.org; linux-
>>> kernel@vger.kernel.org; Marco Griep <mail@marcogriep.de>
>>> Subject: [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag
>>>
>>> The RT721 multifunction SDCA speaker helper adds the DAPM routes for
>>> its internal speaker path, but it does not add the corresponding
>>> spk:rt721 token to card->components.
>> .component_name = "rt721", is set in the rt721 codec info in
>> codec_info_list[]. And the "spk" tag will be added in the
>> asoc_sdw_rtd_init() function. Doesn't it work on your device?
>>
>>> UCM uses that token to include the RT721 speaker device. Without it,
>>> systems with standalone RT721 expose the ALSA SmartAmp PCM but PipeWire
>>> only sees the headset devices.
>>>
>>> Append the speaker codec token from the RT721 multifunction SDCA speaker
>>> runtime init path so UCM can create the internal speaker route.
>>>
>>> Tested on an ASUS Vivobook S16 M3607GA with ACP70 SoundWire RT721-SDCA.
>>> With the standalone RT721 ACP70 machine entry, this makes the HiFi
>>> profile expose Speaker, Headphones, internal Mic and Headset devices.
>>>
>>> Signed-off-by: Marco Griep <mail@marcogriep.de>
>>> ---
>>>   sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c | 6 ++++++
>>>   1 file changed, 6 insertions(+)
>>>
>>> diff --git a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>>> b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>>> index 5bf3627a97a0..e895397eefd6 100644
>>> --- a/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>>> +++ b/sound/soc/sdw_utils/soc_sdw_rt_mf_sdca.c
>>> @@ -74,6 +74,12 @@ int asoc_sdw_rt_mf_sdca_spk_rtd_init(struct
>>> snd_soc_pcm_runtime *rtd, struct snd
>>>           return -EINVAL;
>>>       }
>>>
>>> +    card->components = devm_kasprintf(card->dev, GFP_KERNEL,
>>> +                      "%s spk:%s",
>>> +                      card->components, codec_name);
>>> +    if (!card->components)
>>> +        return -ENOMEM;
>>> +
>>>       /* Add routes */
>>>       ret = snd_soc_dapm_add_routes(dapm, route_map->route_map,
>>> route_map->route_size);
>>>       if (ret)
>>>
>>> base-commit: 1e9cdc2ea15adf4a821eefedabf6c0c8cf0b6a55
>>> -- 
>>> 2.55.0
>>>
> 


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

end of thread, other threads:[~2026-07-06  0:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <30dd273a.AVwAAJ-gc7kAAAAAAAAABGg7al0AAYKJ_u4AAAAAADQlJwBqSQHg@mailjet.com>
2026-07-05 12:49 ` [PATCH] ASoC: sdw_utils: Add RT721 speaker component tag Liao, Bard
2026-07-05 16:50   ` Marco Griep
2026-07-06  0:55     ` Liao, Bard
2026-07-04 12:51 Marco Griep

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