[alsa-devel] snd-hda-intel with ALC880 on a ASUS W5A since patch 67b6ec3196da235317ff1b9474f17379b78f3294
Takashi Iwai
tiwai at suse.de
Thu Nov 7 07:39:17 CET 2013
At Wed, 06 Nov 2013 22:45:41 +0100,
nb wrote:
>
> Le 06-11-2013 16:58, Takashi Iwai a écrit :
> > At Tue, 05 Nov 2013 21:49:19 +0100,
> > nb wrote:
> >>
> >> > Looking at alsa-info.sh outputs, all pins have invalid configurations
> >> > (0x0). It means BIOS doesn't set up pins at all properly, thus you
> >> > have to define the pin configurations manually.
> >>
> >> Im not surprised, the laptop is 8 years old. But it still works
> >> perfectly
> >>
> >> > For that, we need to identify which pin corresponds to which I/O.
> >> > The first thing to know is: what I/Os does your machine have?
> >> > List up all I/Os, e.g. a green headphone output at front side, a red
> >> > mic jack at left side, an internal mic, a built-in speaker, etc.
> >>
> >> I'm not sure this is what you are asking for. Trying to draw it.
> >>
> >> +--------+
> >> | |
> >> | *| <- internal mic (it's a hole)
> >> | *| <- button for muting internal mic
> >> | |
> >> | |
> >> internal speaker -> | * * | <- internal speaker
> >> ----------
> >> / /
> >> / / <- jack 3.5 (headphone) black
> >> / / <- jack 3.5 (mic) black
> >> /_________/ <- volume button (black)
> >>
> >> There is also a s-video connector at the rear of the dock
> >>
> >> > The jacks are usually detectable, and hda-jack-retask or hda_analyzer
> >> > would be your help. See Documentation/sound/alsa/HD-Audio.txt.
> >>
> >> I'm not comfortable with this. I've tried to do the best, but I must
> >> admit that I don't understand really what it does.
> >>
> >> But the fact is that after reading many docs and doing the following,
> >> it
> >> worked:
> >> - run hda-jack-retask, select "Headphone" for pin ID 0x14, then quit
> >> - run alsamixer, choose via F6 "0 HDA Intel" card, unmute every
> >> control,
> >> then quit
> >> - run hda_analyser with the alsa-info output of the non working
> >> kernel,
> >> and for NODE 0x14 PIN check "OUT" in widget control, and uncheck "IN"
> >> and "HP"
> >>
> >> After that headphone output and HP worked.
> >>
> >> I know that saying this I'm not clear at all, but I don't understand
> >> what's happening.
> >>
> >> I hope this will "talk" more to you.
> >
> > OK. I digged the codec archive and found that ASUS W6A has a sane
> > BIOS setup. So, we can likely take over it.
> >
> > Below is an untested patch. Give it a try.
> >
> >
> > Takashi
> >
> > ---
> > diff --git a/sound/pci/hda/patch_realtek.c
> > b/sound/pci/hda/patch_realtek.c
> > index 215db601267d..4c144a0d04d7 100644
> > --- a/sound/pci/hda/patch_realtek.c
> > +++ b/sound/pci/hda/patch_realtek.c
> > @@ -1045,6 +1045,7 @@ enum {
> > ALC880_FIXUP_UNIWILL,
> > ALC880_FIXUP_UNIWILL_DIG,
> > ALC880_FIXUP_Z71V,
> > + ALC880_FIXUP_ASUS_W5A,
> > ALC880_FIXUP_3ST_BASE,
> > ALC880_FIXUP_3ST,
> > ALC880_FIXUP_3ST_DIG,
> > @@ -1215,6 +1216,26 @@ static const struct hda_fixup alc880_fixups[] =
> > {
> > { }
> > }
> > },
> > + [ALC880_FIXUP_ASUS_W5A] = {
> > + .type = HDA_FIXUP_PINS,
> > + .v.pins = (const struct hda_pintbl[]) {
> > + /* set up the whole pins as BIOS is utterly broken */
> > + { 0x14, 0x0121411f }, /* HP */
> > + { 0x15, 0x411111f0 }, /* N/A */
> > + { 0x16, 0x411111f0 }, /* N/A */
> > + { 0x17, 0x411111f0 }, /* N/A */
> > + { 0x18, 0x411111f0 }, /* N/A */
> > + { 0x19, 0x01a19920 }, /* mic-in */
> > + { 0x1a, 0x411111f0 }, /* N/A */
> > + { 0x1b, 0xb7831122 }, /* int mic */
> > + { 0x1c, 0x411111f0 }, /* N/A */
> > + { 0x1d, 0x411111f0 }, /* N/A */
> > + { 0x1e, 0xb743111e }, /* SPDIF out */
> > + { }
> > + },
> > + .chained = true,
> > + .chain_id = ALC880_FIXUP_GPIO1,
> > + },
> > [ALC880_FIXUP_3ST_BASE] = {
> > .type = HDA_FIXUP_PINS,
> > .v.pins = (const struct hda_pintbl[]) {
> > @@ -1336,6 +1357,7 @@ static const struct hda_fixup alc880_fixups[] = {
> >
> > static const struct snd_pci_quirk alc880_fixup_tbl[] = {
> > SND_PCI_QUIRK(0x1019, 0x0f69, "Coeus G610P", ALC880_FIXUP_W810),
> > + SND_PCI_QUIRK(0x1043, 0x10c3, "ASUS W5A", ALC880_FIXUP_ASUS_W5A),
> > SND_PCI_QUIRK(0x1043, 0x1964, "ASUS Z71V", ALC880_FIXUP_Z71V),
> > SND_PCI_QUIRK_VENDOR(0x1043, "ASUS", ALC880_FIXUP_GPIO1),
> > SND_PCI_QUIRK(0x1558, 0x5401, "Clevo GPIO2", ALC880_FIXUP_GPIO2),
>
> Hello Takashi,
>
> I've tried your patch and it works for the HP/headphone part, not for
> the microphone.
>
> I have learned a little bit about pins and the following conf works
> fine:
> { 0x14, 0x0121411f }, /* HP */
> { 0x15, 0x411111f0 }, /* N/A */
> { 0x16, 0x411111f0 }, /* N/A */
> { 0x17, 0x411111f0 }, /* N/A */
> { 0x18, 0x90a60160 }, /* mic */
> { 0x19, 0x411111f0 }, /* N/A */
> { 0x1a, 0x411111f0 }, /* N/A */
> { 0x1b, 0x411111f0 }, /* N/A */
> { 0x1c, 0x411111f0 }, /* N/A */
> { 0x1d, 0x411111f0 }, /* N/A */
> { 0x1e, 0xb743111e }, /* SPDIF out */
> I have only moved the mic to 0x18. And I have noticed that the same pin
> is used for the external mic and the internal one. The jack makes the
> switch. The value 0x90a60160 is from hda-jack-retask.
> I could not test the SPDIF pin.
>
> I think we can say the patch is approved, and you can add it to the
> source.
OK, I applied the fixed patch now.
Thanks for your quick test and debugging.
Takashi
>
> Thank you very much for your help
>
> I can now use fully my laptop I hope for years .
>
> Regards
>
> nb
>
More information about the Alsa-devel
mailing list