[alsa-devel] snd-hda-intel with ALC880 on a ASUS W5A since patch 67b6ec3196da235317ff1b9474f17379b78f3294

Takashi Iwai tiwai at suse.de
Wed Nov 6 16:58:12 CET 2013


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),


More information about the Alsa-devel mailing list