Re: Volume control on T400

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Photo]     [Yosemite Photos]     [Yosemite Advice]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux