[alsa-devel] hda : computer using EAPD as external amplifier controller
Hi,
I have this computer, with an integrated speaker. It's using an ALC662, see attached alsa-info output.
By default, speaker doesn't work. Now, after playing a bit with hda-analyzer, I figured that output PIN 0x14 has EAPD enabled, which is the default way of doing things in auto configure mode. But disabling EAPD on this PIN makes speaker work. See second alsa-info attached.
Is it necessary to write a full blown quirk just to modify this parameter?
From what I've seen in patch_realtek, it seems we need to write the whole config for the device when adding a quirk: we can't rely on auto configuration and then put a small quirk on top of that. Am I right ?
Regards,
Anisse
On 2011-01-19 18:24, Anisse Astier wrote:
Hi,
I have this computer, with an integrated speaker. It's using an ALC662, see attached alsa-info output.
By default, speaker doesn't work. Now, after playing a bit with hda-analyzer, I figured that output PIN 0x14 has EAPD enabled, which is the default way of doing things in auto configure mode. But disabling EAPD on this PIN makes speaker work. See second alsa-info attached.
Is it necessary to write a full blown quirk just to modify this parameter?
From what I've seen in patch_realtek, it seems we need to write the whole config for the device when adding a quirk: we can't rely on auto configuration and then put a small quirk on top of that. Am I right ?
Perhaps this commit can give you some inspiration?
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=...
...although Takashi just rewrote the quirking system a bit, so you'll have to adjust to that when you add your (similar) quirk.
At Thu, 20 Jan 2011 10:07:55 +0100, David Henningsson wrote:
On 2011-01-19 18:24, Anisse Astier wrote:
Hi,
I have this computer, with an integrated speaker. It's using an ALC662, see attached alsa-info output.
By default, speaker doesn't work. Now, after playing a bit with hda-analyzer, I figured that output PIN 0x14 has EAPD enabled, which is the default way of doing things in auto configure mode. But disabling EAPD on this PIN makes speaker work. See second alsa-info attached.
Is it necessary to write a full blown quirk just to modify this parameter?
From what I've seen in patch_realtek, it seems we need to write the whole config for the device when adding a quirk: we can't rely on auto configuration and then put a small quirk on top of that. Am I right ?
Perhaps this commit can give you some inspiration?
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=...
...although Takashi just rewrote the quirking system a bit, so you'll have to adjust to that when you add your (similar) quirk.
Yes, it looks now like:
static const struct alc_fixup alc269_fixups[] = { ... [ALC269_FIXUP_LENOVO_EAPD] = { .type = ALC_FIXUP_VERBS, .v.verbs = (const struct hda_verb[]) { {0x14, AC_VERB_SET_EAPD_BTLENABLE, 0}, {} } }, ...
Takashi
Signed-off-by: Anisse Astier anisse@astier.eu --- Hi Takashi, David,
Thanks for you feedback. This patch is on top of sound-2.6/for-next branch.
Regards, Anisse --- sound/pci/hda/patch_realtek.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d59d1db..43b2bcd 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -19568,6 +19568,7 @@ enum { ALC662_FIXUP_ASPIRE, ALC662_FIXUP_IDEAPAD, ALC272_FIXUP_MARIO, + ALC662_FIXUP_CZC_P10T, };
static const struct alc_fixup alc662_fixups[] = { @@ -19588,7 +19589,14 @@ static const struct alc_fixup alc662_fixups[] = { [ALC272_FIXUP_MARIO] = { .type = ALC_FIXUP_FUNC, .v.func = alc272_fixup_mario, - } + }, + [ALC662_FIXUP_CZC_P10T] = { + .type = ALC_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + {0x14, AC_VERB_SET_EAPD_BTLENABLE, 0}, + {} + } + }, };
static struct snd_pci_quirk alc662_fixup_tbl[] = { @@ -19596,6 +19604,7 @@ static struct snd_pci_quirk alc662_fixup_tbl[] = { SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD), + SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), {} };
At Thu, 20 Jan 2011 12:36:21 +0100, Anisse Astier wrote:
Signed-off-by: Anisse Astier anisse@astier.eu
Hi Takashi, David,
Thanks for you feedback. This patch is on top of sound-2.6/for-next branch.
Applied now. Thanks.
Takashi
Regards, Anisse
sound/pci/hda/patch_realtek.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index d59d1db..43b2bcd 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -19568,6 +19568,7 @@ enum { ALC662_FIXUP_ASPIRE, ALC662_FIXUP_IDEAPAD, ALC272_FIXUP_MARIO,
- ALC662_FIXUP_CZC_P10T,
};
static const struct alc_fixup alc662_fixups[] = { @@ -19588,7 +19589,14 @@ static const struct alc_fixup alc662_fixups[] = { [ALC272_FIXUP_MARIO] = { .type = ALC_FIXUP_FUNC, .v.func = alc272_fixup_mario,
- }
- },
- [ALC662_FIXUP_CZC_P10T] = {
.type = ALC_FIXUP_VERBS,
.v.verbs = (const struct hda_verb[]) {
{0x14, AC_VERB_SET_EAPD_BTLENABLE, 0},
{}
}
- },
};
static struct snd_pci_quirk alc662_fixup_tbl[] = { @@ -19596,6 +19604,7 @@ static struct snd_pci_quirk alc662_fixup_tbl[] = { SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD), SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD), SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
- SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T), {}
};
-- 1.7.3.2
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Hello.
I have read the mail of [alsa-devel] [PATCH] ALSA: hda - Fix EAPD to low on CZC P10T tablet computer with ALC662. http://mailman.alsa-project.org/pipermail/alsa-devel/2011-January/035910.htm...
I install the ubuntu 11 beta 3. EAPD is already off. But my CZC P10T speaker still doesn’t work (headphone is ok).
What should I do?
Thanks!
------------------------------ E-mail:daimy.xu@corp.globalmarket.com
Hi David,
On Thu, 20 Jan 2011 10:07:55 +0100, David Henningsson david.henningsson@canonical.com wrote :
On 2011-01-19 18:24, Anisse Astier wrote:
From what I've seen in patch_realtek, it seems we need to write the whole config for the device when adding a quirk: we can't rely on auto configuration and then put a small quirk on top of that. Am I right ?
Perhaps this commit can give you some inspiration?
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=...
...although Takashi just rewrote the quirking system a bit, so you'll have to adjust to that when you add your (similar) quirk.
Well, I was wrong, thanks a lot for pointing me in the right direction ! Just did a rebase of sound-2.6/for-next branch and read Takashi's followup email, fix should be trivial, a patch will follow soon.
Regards, Anisse
participants (4)
-
Anisse Astier
-
David Henningsson
-
Takashi Iwai
-
许德炜