alsa-project alsa-ucm : Audio endpoint is not switching when external mic connected

Jaroslav Kysela perex at perex.cz
Wed Jun 3 13:05:43 CEST 2020


Dne 03. 06. 20 v 11:34 Takashi Iwai napsal(a):
> On Wed, 03 Jun 2020 02:36:25 +0200,
> Hui Wang wrote:
>>
>>
>> On 2020/6/3 上午3:39, Jaroslav Kysela wrote:
>>> Dne 02. 06. 20 v 19:57 Mukunda, Vijendar napsal(a):
>>>> We recently up streamed ACP PDM driver for Renoir APU.
>>>>
>>>> Our ACP IP has an internal PDM Decoder block where DMIC is directly
>>>> connected.
>>>> There are no KControls defined for PDM Driver.
>>>>
>>>> Our platform supports on board DMIC and South bridge Azalia (HD
>>>> Audio ) endpoint .
>>>> By default, DMIC endpoint is used as audio input device.
>>>> When Headset Mic jack connected, it's not switching to External Mic.
>>>
>>> Make sure that the Headset Mic priority port in pulseaudio is is
>>> greater than the one for DMIC.
>>>
>>>> How does audio endpoint will switch in gnome when external mic is
>>>> connected?
>>>>>  From our understanding, UCM conf file for HDA driver is also
>>>>> required for
>>>> configuring mixer controls for HD Audio capture device.
>>>> Similarly when External Mic is removed , it has to switch to
>>>> internal dmic .
>>>
>>> An configuration example for UCM (DMIC connected to DSP, HDA codec
>>> for rest):
>>>
>>> https://github.com/alsa-project/alsa-ucm-conf/tree/master/ucm2/sof-hda-dsp
>>>
>>> If you need a help to create a new configuration for your hardware,
>>> show the output from the alsa-info.sh script, please.
>>>
>>>                      Jaroslav
>>
>> This audio design is  a bit different from sof-hda-dsp, the dmic is on
>> a standalone sound card. Please see the alsa-info.txt:
>>
>> https://pastebin.ubuntu.com/p/4kprhDZYbg/
> 
> And that's an interesting case.  Can we manage multiple cards in a
> single UCM profile?

Yes, it should work, but we need to extend pulseaudio to avoid fallback to the 
legacy ALSA profile when the "slave" soundcard is enumerated. PA should skip 
this card. We need to check if the empty UCM verb is supported.

Also, UCM has ${CardId} substitution (for the master card config), but we need 
to address the slave, too. Perhaps, we should add something like 
${GetCardIdByName:STRING[:INDEX]} where STRING may be the name of the 
soundcard (it will be 'acp') in this case. The INDEX may refer to multiple 
instances (INDEX = 0 first soundcard found).

						Jaroslav

> 
> 
> Takashi
> 


-- 
Jaroslav Kysela <perex at perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.


More information about the Alsa-devel mailing list