[alsa-devel] HDA headset button support

Kailang kailang at realtek.com
Thu Nov 29 08:22:39 CET 2018


Hi Takashi,

I test the patch.
It will go to Max or Min volume when I press HS button up or down.

+			state = jack->button_state;
+			if (get_jack_plug_state(jack->pin_sense))
+				state |= jack->type;
+			snd_jack_report(jack->jack, state);
			If (jack->nid == 0x55)
				snd_jack_report(jack->jack, 0); ==> Add this will solve keep volume up and down.

If the pin sense active, it will update Mic and Headphone state. (Upper code)
But it still had chance to update 0x55 during unplug and plug state.
So, Maybe need to clear the Button state. I guess.

BR,
Kailang

-----Original Message-----
From: Takashi Iwai <tiwai at suse.de> 
Sent: Wednesday, November 28, 2018 10:05 PM
To: Kailang <kailang at realtek.com>
Cc: (alsa-devel at alsa-project.org) <alsa-devel at alsa-project.org>
Subject: Re: HDA headset button support

On Wed, 28 Nov 2018 13:03:58 +0100,
Kailang wrote:
> 
> Hi Takashi,
> 
> >I'd rather like to extend snd_hda_jack_add_kctl() with the key 
> >support (maybe adding a new function).  You can pass there the 
> >combination of SND_JACK_BTN_X with KEY_XXX in an array.
> 
> Do you mean create new function like below?
> snd_hda_jack_add_key_kctl()
> 
> It couldn't use snd_hda_jack_add_kctl() directly.
> Because it had report pin state and get type from NID.
> 
> 	type = get_input_jack_type(codec, nid);
>         .....
>         .....
>  	state = snd_hda_jack_detect(codec, nid);
> 	snd_jack_report(jack->jack, state ? jack->type : 0);
> 
> So, to create a new function in hda_jack.c was better.

Well, this seems more deeper than I thought.

Below is my quick attempt to add the infrastructure.  This adds more flexibility but still easiness for other possible button implementations, hopefully.

Could you check the series below?


thanks,

Takashi


------Please consider the environment before printing this e-mail.


More information about the Alsa-devel mailing list