May I ask a simple question? What's the difference between ec and nvram? By echo 0x30 0x** > ecdump, I discover something... In the driver thinkpad_acpi.c, file /proc/acpi/ibm/volume is handled in lines 5652~5737, function volume_read(), volume_write(), and it's read through acpi_ec_read(). But in function hotkey_read_nvram, at line 1621, volume_level is read from nvram offset 0x60.. I fooled the driver by echo 0x30 0x43 > ecdump, and I find the 0x60 byte in nvram never changes. By reading the code volume_write(), I realized that the cmos_cmd TP_CMOS_VOLUME_UP only xor an 0x80 to nvram, TP_CMOS_VOLUME_DOWN xor 0x80 to nvram and decrease the lower 4 bit by 1. TP_CMOS_VOLUME_MUTE handles 0x40 correctly. This conclusion is made by a series of echo level ** > volume echo level 7 > volume 0x07 echo level 10 > volume 0x87 echo level 8 > volume 0x85 echo level 7 > volume 0x05 echo down > volume 0x84 echo up > volume 0x04 And the mute button will mute the volume and correct the nvram byte. (And erase the 0x80) So that, it's easy to correct the behavior of the thinkpad_acpi driver, just increase the lower 4bits of nvram offset 0x60, and after detect an 0x80, toggle it off. And I did a further experiment, I blacklist the thinkpad_acpi driver, and find that xorg recognize Volume Up Button and Volume Down Button, and KDE mixer react with it. Then I think that ACPI should ignore the IBM HOTKEY about volume up/down, but let some userspace program, or some acpi volume script to handle (toggle)mute. Since neither mute button nor volume up/down button generate 0x80, the volume_toggle = !!(d & TP_MASK_HKT_VOLUME) (code from line 1625 in thinkpad_acpi.c) never become 1, then the driver fails to handle mute button. ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ ibm-acpi-devel mailing list ibm-acpi-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/ibm-acpi-devel