[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 20 13:50:33 CET 2015
> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai at suse.de]
> Sent: Friday, March 20, 2015 8:27 PM
> To: Jie, Yang
> 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
>
> At Fri, 20 Mar 2015 12:22:10 +0000,
> Jie, Yang wrote:
> >
> > > > +}
> > > > +
> > > > +static int snd_jack_new_kctl(struct snd_card *card, struct
> > > > +snd_jack *jack, int type) {
> > > > + struct snd_kcontrol *kctl;
> > > > + struct snd_jack_kctl *jack_kctl;
> > > > + int i, err, index, state = 0 /* use 0 for default state ?? */;
> > > > +
> > > > + INIT_LIST_HEAD(&jack->kctl_list);
> > > > + for (i = 0; i < fls(SND_JACK_BTN_0); i++) {
> > > > + int testbit = 1 << i;
> > > > + if (type & testbit) {
> > >
> > > With this implementation, you'll get multiple boolean kctls for a
> > > headset. I thought we agreed with creating a single boolean for headset?
> > [Keyon] We agreed with creating multiple kctls for combo jack, e.g.
> headset.
> > Furthermore, e.g., imagine that type = SND_JACK_HEADSET |
> > SND_JACK_BTN_0, we will create 3 kctls for the jack, when BTN_0 is
> > pressed, we will report to the 3rd kctl.
>
> Hm, I don't remember that I agreed with multiple kctls...
>
> The multiple kctls have a significant drawback (multiple event calls for a single
> headset) and its behavior is incompatible with the current code (both the
> name change and the behavior change). That is, your patch will very likely
> break the existing applications.
[Keyon] I am not very clear with the existing applications that using these
kctl events(seems Android use input subsystem event? Which we didn't
Change here. If I understand correctly, Pulseaudio uses jack switch controls,
via the name, then we can use different name for headphone and mic here.)
we will generate 2 event calls(one headphone, one mic) when Headset
plug in/out, applications will receive these 2 events, and they can do anything,
e.g. decide to switch on/off speaker/headphone.
BTW, I haven't implemented the generating of combo jack kctls' name yet,
currently, they looked like below:
numid=12,iface=CARD,name='Headset Jack'
numid=13,iface=CARD,name='Headset Jack',index=1
numid=14,iface=CARD,name='Headset Jack',index=2
once we have come to agreement, we can modify it in snd_jack_new_kctl(),
e.g., "Headset Jack Mic" and "Headset Jack Speakers".
>
>
> Takashi
More information about the Alsa-devel
mailing list