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

joey.jiaojg joey.jiaojg at gmail.com
Thu Feb 16 04:41:10 CET 2012


And now this code works:
/* 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);
                 snd_hda_codec_write_cache(codec, 0x01, 0,
                                           AC_VERB_SET_GPIO_DATA,
                                           1);
         } else {
                 snd_hda_codec_write_cache(codec, 0x01, 0,
                                           AC_VERB_SET_GPIO_MASK, 1);
                 snd_hda_codec_write_cache(codec, 0x01, 0,
                                           AC_VERB_SET_GPIO_DIRECTION,
                                           1);
                 snd_hda_codec_write_cache(codec, 0x01, 0,
                                           AC_VERB_SET_GPIO_DATA,
                                           0);
         }
}


On 2012年02月16日 10:04, Joey Jiao wrote:
> 1. I changed to model=will to test without headphone
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0 [NID=0x0F, 0x10~0x19, 0x1B]
> Result: for sure not work as GPIO not open
> 2. I changed to model=b1900 to test without headphone
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0xC0
> Result: speaker still works. It's for sure.
> 3. Then same condition as step 2 but change 0xC0 to 0x0
> hda-verb /dev/snd/hwC0D0 0x0F~0x1B 0x707 0x0
> Result: speaker doesn't work only when NID=0x0F; then I tried
> param=0x40 and 0x80, when param=0x40, speaker works while param=0x80,
> speaker doesn't work.
> 4. Then I plugged in headphone.
> Now the param =0x40 for NID=0x0F.
> Result: Headphone works while speaker muted.
> Then I changed param=0x80. (same result when param=0xC0)
> Result: Headphone still works while speaker muted.
> 5. Then I reboot with headphone plugged in to test your step 2.
> YES, now the speaker muted while headphone works.
> Then I do your cmds:
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 1
> Result: headphone works, speaker muted
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 1
> Result: headphone muted, speaker works
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1
> Result: headphone works, speaker muted
> hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0
> Result: headphone muted, speaker works.
> Please noted the last two cmds, it's strange but it's true.
>
> Any additional tests?
>
> 在 2012年2月15日 下午11:04,Takashi Iwai<tiwai at suse.de>  写道:
>> At Wed, 15 Feb 2012 22:45:27 +0800,
>> joey.jiaojg wrote:
>>> I think the only question below is about the automute, right?
>> Not really.  The most important thing is to understand what's doing
>> what.  Since your code can't be applied any longer at all to the
>> latest code tree because of the fundamental code rewrite, we need to
>> do it right.
>>
>> So, please check the following:
>>
>> 1. Does any pin correspond to the speaker output?  Try to change the
>>    pin control of each pin between 0x10 and 0x19 via hda-verb while
>>    the speaker output is active.  Does any pin change the speaker
>>    output?
>>
>> 2. Plug your headphone.  Now the speaker is muted with your patch.
>>    What happens when you run like below?
>>
>>         hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_MASK 1
>>         hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DIR 1
>>         hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 1
>>
>>    Does the speaker starts playing again?  Then, what happens now
>>    with:
>>
>>         hda-verb /dev/snd/hwD0D0 0x01 SET_GPIO_DATA 0
>>
>>    ??
>>
>>
>> Takashi
>
>



More information about the Alsa-devel mailing list