[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