The attached patch fixes hardware volume buttons on my Dell Inspiron 7000 
laptop. The chip is ESS Maestro2 (0x125d:0x1968).

I have no idea if this will break things for someone else. Since the 
datasheet didn't help me understand the registers involved I just printed 
their contents and came up with the used bits.

All registers had the following values in my tests:
mute:     0x99
vol down: 0x77
vol up:   0xBB

-- 
Ville Syrjälä
[EMAIL PROTECTED]
http://www.sci.fi/~syrjala/
--- alsa-driver-0.9.8/alsa-kernel/pci/es1968.c.orig     2003-10-14 16:59:20.000000000 
+0300
+++ alsa-driver-0.9.8/alsa-kernel/pci/es1968.c  2004-02-17 08:06:22.000000000 +0200
@@ -1967,14 +1967,14 @@
 
        /* FIXME: more clean up is needed.. */
        val = chip->ac97->regs[AC97_MASTER];
-       if (x & 1) {
+       if (!(x & 2)) {
                /* mute */
                snd_ac97_write_cache(chip->ac97, AC97_MASTER, val ^ 0x8000);
                snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE,
                               &chip->master_switch->id);
        } else {
                val &= 0x7fff;
-               if (((x>>1) & 7) > 4) {
+               if (!(x & 4)) {
                        /* volume up */
                        if ((val & 0xff) > 0)
                                val--;

Reply via email to