
At Wed, 19 Aug 2009 16:01:51 +0800, Wu Fengguang wrote:
On Wed, Aug 19, 2009 at 03:56:59PM +0800, Wu Fengguang wrote:
On Tue, Aug 18, 2009 at 02:33:43PM +0800, Takashi Iwai wrote:
At Mon, 17 Aug 2009 08:46:14 +0200, I wrote:
At Sun, 16 Aug 2009 19:01:10 +0800, Wu Fengguang wrote:
On Sun, Aug 16, 2009 at 05:22:23PM +0800, Takashi Iwai wrote:
At Sun, 16 Aug 2009 16:53:17 +0800, Wu Fengguang wrote: > > There are 3 causes to the silence of Compaq 6530s' internal speaker: > - HP pin 0x11 always return 0xffff,ffff (pin_presence=1), > which automutes the speaker at module loading time.
This is odd. Is the sense-trigger issued before reading the pin sense?
Sorry, what do you mean? The facts I explored are:
- ad1884a_hp_automute() will be explicitly called by ad1884a_hp_init()
- ad1884a_hp_unsol_event() is never called on plug events
- I tried manually execute AC_VERB_SET_PIN_SENSE then read pin sense, it takes effect on the impedance, but pin_presence still remains 1.
The fact that it returns only -1 sounds rather like a hardware issue. Or, at least, reading a wrong place or so.
BTW, could you give alsa-info.sh output on both machines?
I'm now testing 6531s. All verbs/states seem OK.
In fact for 6531s, the speaker can produce sound on fresh boot. However after a while the sound disappeared. No single write verb was executed during the time! And then I found the 0x1c trick can be applied to 6530s as well as 6531s, and magically make the speaker work by applying this patch.
OK, I'm going to apply your fix.
@@ -4003,6 +4005,8 @@ static struct snd_pci_quirk ad1884a_cfg_ SND_PCI_QUIRK(0x103c, 0x3030, "HP", AD1884A_MOBILE), SND_PCI_QUIRK(0x103c, 0x3037, "HP 2230s", AD1884A_LAPTOP), SND_PCI_QUIRK(0x103c, 0x3056, "HP", AD1884A_MOBILE),
- SND_PCI_QUIRK(0x103c, 0x30e8, "HP Compaq 6530s", AD1884A_LAPTOP),
- SND_PCI_QUIRK(0x103c, 0x30e9, "HP Compaq 6531s", AD1884A_LAPTOP), SND_PCI_QUIRK_MASK(0x103c, 0xfff0, 0x3070, "HP", AD1884A_MOBILE), SND_PCI_QUIRK_MASK(0x103c, 0xfff0, 0x30d0, "HP laptop", AD1884A_LAPTOP), SND_PCI_QUIRK_MASK(0x103c, 0xfff0, 0x30e0, "HP laptop", AD1884A_LAPTOP),
These entries are unnecessary because they match with model=laptop with the masked entry 013c:30e* (the last one in the chunk above).
Could you remove it and repost?
thanks,
Takashi