Skip to content

Commit

Permalink
thinkpad-acpi: volume subdriver rewrite
Browse files Browse the repository at this point in the history
I don't trust the coupled EC writes and SMI calls the current volume
control code does very much, although it is exactly what the IBM DSDTs
seem to do (they never do more than a single step though).

Change the driver to stop issuing SMIs, and just drive the EC directly
to the desired level (DSDTs seem to confirm this will work even on
very old models like the 570 and 600e/x).

We checkpoint directly to NVRAM (this can be turned off) at
suspend/shutdown/driver unload, which from what I can see in tbp,
should also work on every ThinkPad.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Lorne Applebaum <lorne.applebaum@gmail.com>
Cc: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Henrique de Moraes Holschuh authored and Len Brown committed Dec 16, 2009
1 parent 5451a92 commit 329e4e1
Show file tree
Hide file tree
Showing 2 changed files with 299 additions and 63 deletions.
22 changes: 17 additions & 5 deletions Documentation/laptops/thinkpad-acpi.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1092,22 +1092,33 @@ WARNING:
its level up and down at every change.


Volume control -- /proc/acpi/ibm/volume
---------------------------------------
Volume control
--------------

procfs: /proc/acpi/ibm/volume

This feature allows volume control on ThinkPad models which don't have
a hardware volume knob. The available commands are:
This feature allows volume control on ThinkPad models with a digital
volume knob, as well as mute/unmute control. The available commands are:

echo up >/proc/acpi/ibm/volume
echo down >/proc/acpi/ibm/volume
echo mute >/proc/acpi/ibm/volume
echo 'level <level>' >/proc/acpi/ibm/volume

The <level> number range is 0 to 15 although not all of them may be
The <level> number range is 0 to 14 although not all of them may be
distinct. The unmute the volume after the mute command, use either the
up or down command (the level command will not unmute the volume).
The current volume level and mute state is shown in the file.

There are two strategies for volume control. To select which one
should be used, use the volume_mode module parameter: volume_mode=1
selects EC mode, and volume_mode=3 selects EC mode with NVRAM backing
(so that volume/mute changes are remembered across shutdown/reboot).

The driver will operate in volume_mode=3 by default. If that does not
work well on your ThinkPad model, please report this to
ibm-acpi-devel@lists.sourceforge.net.

The ALSA mixer interface to this feature is still missing, but patches
to add it exist. That problem should be addressed in the not so
distant future.
Expand Down Expand Up @@ -1376,6 +1387,7 @@ to enable more than one output class, just add their values.
0x0008 HKEY event interface, hotkeys
0x0010 Fan control
0x0020 Backlight brightness
0x0040 Audio mixer/volume control

There is also a kernel build option to enable more debugging
information, which may be necessary to debug driver problems.
Expand Down
Loading

0 comments on commit 329e4e1

Please sign in to comment.