[alsa-devel] Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series

joey.jiaojg joey.jiaojg at gmail.com
Wed Feb 15 11:06:39 CET 2012


OK, the situation is 0x01 is to control GPIO0:
1. if I write (codec,0x01,0,AC_VERB_SET_GPIO_MASK,1) only; the result is 
speaker not work.

2. if I write (codec,0x01,0,AC_VERB_SET_GPIO_DIRECTION,1) only; the 
result is speaker not work.

3. If I write step 1 & 2 together, speaker works when I reboot.

4. Then If I plugged in the headphone, the headphone doesn't work. It 
only works when I write 
(codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_HP).

5. From step 3 & 4, it's similar for cases that I reboot with headphone 
plugged in. That is, if I remove headphone, speaker doesn't work 
automatically. If I write 
(codec,0x0F,0,AC_VERB_SET_PIN_WIDGET_CONTROL,PIN_OUT), the 
auto-detection function works well can switch speaker/headphone 
automatically.

I don't know why it's this case, and from alsa document, it seems only 
enable GPIO0 will work but actually not.


On 2012年02月15日 17:58, Takashi Iwai wrote:
> At Wed, 15 Feb 2012 17:45:37 +0800,
> joey.jiaojg wrote:
>> I have tried to enable each one of them separately, and the speaker
>> doesn't work.
> Sorry, it's not clear what you meant.  Each of what separately?
> And what does GPIO do exactly?
>
>> I have to use these 3 write_cache to make switch and auto-detect work
>> smoothly.
> We need to know the reason why these must be needed.
>
>
> Takashi
>
>
>> On 2012年02月15日 17:40, Takashi Iwai wrote:
>>> At Wed, 15 Feb 2012 17:31:44 +0800,
>>> joey.jiaojg wrote:
>>>> Here is the diff file.
>>> Thanks.
>>>
>>>> +/* toggle speaker-output according to the hp-jack state */
>>>> +static void alc260_b1900_automute(struct hda_codec *codec)
>>>> +{
>>>> +        unsigned int present;
>>>> +
>>>> +	present = snd_hda_jack_detect(codec, 0x0f);
>>>> +	if (present) {
>>>> +		snd_hda_codec_write_cache(codec, 0x01, 0,
>>>> +					  AC_VERB_SET_GPIO_MASK, 0);
>>>> +		snd_hda_codec_write_cache(codec, 0x01, 0,
>>>> +					  AC_VERB_SET_GPIO_DIRECTION,
>>>> +					  0);
>>> What actually this GPIO bit does on your device?
>>> To mute/unmute the speaker?
>>>
>>> If so, doesn't the speaker toggle work with just changing the
>>> pin-control of the corresponding pin?
>>>
>>>
>>> Takashi



More information about the Alsa-devel mailing list