[alsa-devel] Bug report - patch_realtek.c - Laptop HP COMPAQ B1900 Series
Takashi Iwai
tiwai at suse.de
Wed Feb 15 11:11:00 CET 2012
At Wed, 15 Feb 2012 18:06:39 +0800,
joey.jiaojg wrote:
>
> 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.
>
Sure, GPIO must be always set mask, direction and data all together.
The question is, when you set GPIO mask/dir/data, the speaker starts
playing, and if set to zero (e.g. only data), the speaker is muted?
> 3. If I write step 1 & 2 together, speaker works when I reboot.
Then GPIO is likely an external amp control.
> 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).
This is normal.
> 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.
That's odd. If you don't change from PIN_HP, doesn't the unsolicited
event work?
Another question is, when you set PIN_WIDGET_CONTROL on the speaker
pin (not sure which one is) to 0x00, does it mute the speaker, too?
Takashi
> 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