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--;