[alsa-devel] [PATCH v2 1/2] ALSA: jack: create jack kcontrols for every jack input device

David Henningsson david.henningsson at canonical.com
Fri Mar 27 09:01:29 CET 2015



On 2015-03-27 08:45, Jie, Yang wrote:
>> -----Original Message-----
>> From: David Henningsson [mailto:david.henningsson at canonical.com]
>> Sent: Friday, March 27, 2015 2:50 PM
>> To: Jie, Yang; Tanu Kaskinen; Takashi Iwai
>> Cc: perex at perex.cz; broonie at kernel.org; alsa-devel at alsa-project.org;
>> Girdwood, Liam R; Liam Girdwood
>> Subject: Re: [PATCH v2 1/2] ALSA: jack: create jack kcontrols for every jack
>> input device
>>
>>
>>
>> On 2015-03-26 13:43, Jie, Yang wrote:
>>>
>>> Sorry, Correct a typo(removing line "create "Mic Jack" kctl;" in
>>> default case)
>>
>> It looks like your code can be simplified as:
> [Keyon] thanks, I will try simplify them.
>>
>> switch (type | SND_JACK_HEADSET) {
>> 	case SND_JACK_HEADSET:
>> 		create "Headset Mic Jack" kctl;
>> 		/* fall through */
>> 	case SND_JACK_MICROPHONE:
>> 	case SND_JACK_HEADPHONE:
>> 		create format("%s Jack", id) kctl;
> [Keyon] I don't want to fill "id" to kctl name, because sometimes it can be
> string which can't be understood by PA, such as:
>
> soc/intel/mfld_machine.c:       ret_val = snd_soc_card_jack_new(runtime->card,
> soc/intel/mfld_machine.c-                       "Intel(R) MID Audio Jack", SND_JACK_HEADSET |
> soc/intel/mfld_machine.c-                       SND_JACK_BTN_0 | SND_JACK_BTN_1, &mfld_jack,
>
> soc/omap/ams-delta.c:   ret = snd_soc_card_jack_new(card, "hook_switch", SND_JACK_HEADSET,
> soc/omap/ams-delta.c-                               &ams_delta_hook_switch, NULL, 0);

Ok, good point. It's a matter of different conventions between ASoC and 
HDA. In ASoC, naming is wild west. In HDA, naming is (mostly) consistent 
and we depend on the exact naming for userspace to know exactly how the 
jack functions.

Another example is HDMI/DisplayPort, where the hw often supports several 
ports and we need to know which jack belongs to which PCM device, and we 
use the name of the jack to determine that.

I would very much prefer that all the ASoC jack names (and mixer control 
names!) would be fixed up to be consistent to the extent that makes 
sense, but the ASoC people haven't really agreed to do that, but instead 
prefer to use a large database of UCM files. :-( And seen from a UCM 
context, that the ASoC jacks are labelled terribly inconsistent, isn't 
that big of a deal given that UCM will specify the jack name anyhow.

>> }
>>
>> ...that way, prefixes such as "Front Headphone Jack" are preserved too,
> [Keyon] if PA can recognize "Front Headphone Jack" and "Rear Headphone Jack", then I
> prefer to add a determine here:
>
> 	if (!strcmp(id, "Front Headphone Jack") || !strcmp(id, "Rear Headphone Jack"))
> 		create format("%s Jack", id) kctl;

This will not scale, there are too many variants.

-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic


More information about the Alsa-devel mailing list