[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