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

Jie, Yang yang.jie at intel.com
Fri Mar 27 08:45:04 CET 2015


> -----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);

> }
> 
> ...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;

> which is a good thing.
> 
> // David
> 
> >
> > snd_jack_new(struct snd_card *card, const char *id, int type, struct
> snd_jack **jjack) { ...
> > 	Switch(type | SND_JACK_HEADSET)
> > 	{
> > 		case SND_JACK_MICROPHONE:
> > 			create "Mic Jack" kctl;
> > 			break;
> > 		case SND_JACK_HEADSET:
> > 			if (id == "Headphone Mic Headset") {
> > 				create " Headphone Mic Jack " kctl;
> > 				create " Headset Mic Jack " kctl;
> > 			} else {
> > 				create " Headphone Jack " kctl;
> > 				create " Headset Mic Jack " kctl;
> > 			}
> > 			break;
> > 		case SND_JACK_HEADPHONE:
> > 			if (id == "Headset Mic") {
> > 				create " Headphone Jack " kctl;
> > 			//	create " Headset Mic Phantom Jack " kctl;
> > 			} else if (id == "Headphone Mic")  {
> > 				create " Headphone Mic Jack " kctl;
> > 			} else if (id == "Headset Headphone Mic")  {
> > 				create " Headphone Mic Jack " kctl;
> > 			//	create " Headset Mic Phantom Jack " kctl;
> > 			} else {
> > 				create " Headphone Jack " kctl;
> > 			}
> > 			break;
> > 		default:
> > 			break;
> > 	}
> > ...
> > }
> >
> >
> > Jack Type			Jack name			kctls/switches
> name
> > SND_JACK_HEADPHONE	Headphone			Headphone
> Jack
> > SND_JACK_MICROPHONE	Mic				Mic Jack
> > SND_JACK_HEADSET		Headset			Headphone
> Jack
> > 								Headset Mic
> Jack
> > SND_JACK_HEADPHONE	Headset Mic			Headphone
> Jack
> > 								Headset Mic
> Phantom Jack
> > SND_JACK_HEADPHONE 	Headphone Mic		Headphone
> Mic Jack
> > SND_JACK_HEADPHONE 	Headset Headphone Mic	Headphone
> Mic Jack
> > 								Headset Mic
> Phantom Jack
> > SND_JACK_HEADSET 		Headphone Mic Headset	Headphone
> Mic Jack
> > 								Headset Mic
> Jack
> >
> > ~Keyon
> >
> 
> --
> David Henningsson, Canonical Ltd.
> https://launchpad.net/~diwic


More information about the Alsa-devel mailing list