+}
+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.
Why do you need to generate two event (hp and mic) if soc jack only support headset ?
For mobile phone and tablet which only support headset using TRRRS connector and most of them don't support headphone using TRRS connector.
When the headset jack kctl is on, this implies headphone and headset mic are used