diff options
author | Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | 2019-04-18 11:12:57 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | 2019-07-15 09:20:25 -0300 |
commit | b02f1651ff7758c4db0d759ab765d39986a79f5a (patch) | |
tree | c129ec86b6d244203d00066c4dc3d0b911e54d54 /Documentation/laptops | |
parent | db9a0975a20c1f21c108b9d44545792d790593e4 (diff) | |
download | linux-b02f1651ff7758c4db0d759ab765d39986a79f5a.tar.bz2 |
docs: laptops: convert to ReST
Rename the laptops documentation files to ReST, add an
index for them and adjust in order to produce a nice html
output via the Sphinx build system.
At its new index.rst, let's add a :orphan: while this is not linked to
the main index.rst file, in order to avoid build warnings.
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Acked-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Diffstat (limited to 'Documentation/laptops')
-rw-r--r-- | Documentation/laptops/asus-laptop.rst (renamed from Documentation/laptops/asus-laptop.txt) | 92 | ||||
-rw-r--r-- | Documentation/laptops/disk-shock-protection.rst (renamed from Documentation/laptops/disk-shock-protection.txt) | 32 | ||||
-rw-r--r-- | Documentation/laptops/index.rst | 17 | ||||
-rw-r--r-- | Documentation/laptops/laptop-mode.rst (renamed from Documentation/laptops/laptop-mode.txt) | 579 | ||||
-rw-r--r-- | Documentation/laptops/sony-laptop.rst (renamed from Documentation/laptops/sony-laptop.txt) | 58 | ||||
-rw-r--r-- | Documentation/laptops/sonypi.rst (renamed from Documentation/laptops/sonypi.txt) | 28 | ||||
-rw-r--r-- | Documentation/laptops/thinkpad-acpi.rst (renamed from Documentation/laptops/thinkpad-acpi.txt) | 363 | ||||
-rw-r--r-- | Documentation/laptops/toshiba_haps.rst (renamed from Documentation/laptops/toshiba_haps.txt) | 47 |
8 files changed, 686 insertions, 530 deletions
diff --git a/Documentation/laptops/asus-laptop.txt b/Documentation/laptops/asus-laptop.rst index 5f2858712aa0..95176321a25a 100644 --- a/Documentation/laptops/asus-laptop.txt +++ b/Documentation/laptops/asus-laptop.rst @@ -1,6 +1,9 @@ +================== Asus Laptop Extras +================== Version 0.1 + August 6, 2009 Corentin Chary <corentincj@iksaif.net> @@ -10,11 +13,12 @@ http://acpi4asus.sf.net/ It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or VICTOR XP7210 for example). It makes all the extra buttons generate input events (like keyboards). + On some models adds support for changing the display brightness and output, switching the LCD backlight on and off, and most importantly, allows you to blink those fancy LEDs intended for reporting mail and wireless status. -This driver supercedes the old asus_acpi driver. +This driver supersedes the old asus_acpi driver. Requirements ------------ @@ -49,7 +53,7 @@ Usage see some lines like this : Asus Laptop Extras version 0.42 - L2D model detected. + - L2D model detected. If it is not the output you have on your laptop, send it (and the laptop's DSDT) to me. @@ -68,9 +72,12 @@ Usage LEDs ---- - You can modify LEDs be echoing values to /sys/class/leds/asus::*/brightness : + You can modify LEDs be echoing values to `/sys/class/leds/asus/*/brightness`:: + echo 1 > /sys/class/leds/asus::mail/brightness + will switch the mail LED on. + You can also know if they are on/off by reading their content and use kernel triggers like disk-activity or heartbeat. @@ -81,7 +88,7 @@ Backlight /sys/class/backlight/asus-laptop/. Brightness Values are between 0 and 15. Wireless devices ---------------- +---------------- You can turn the internal Bluetooth adapter on/off with the bluetooth entry (only on models with Bluetooth). This usually controls the associated LED. @@ -93,18 +100,20 @@ Display switching Note: the display switching code is currently considered EXPERIMENTAL. Switching works for the following models: - L3800C - A2500H - L5800C - M5200N - W1000N (albeit with some glitches) - M6700R - A6JC - F3J + + - L3800C + - A2500H + - L5800C + - M5200N + - W1000N (albeit with some glitches) + - M6700R + - A6JC + - F3J Switching doesn't work for the following: - M3700N - L2X00D (locks the laptop under certain conditions) + + - M3700N + - L2X00D (locks the laptop under certain conditions) To switch the displays, echo values from 0 to 15 to /sys/devices/platform/asus-laptop/display. The significance of those values @@ -113,48 +122,51 @@ Display switching +-------+-----+-----+-----+-----+-----+ | Bin | Val | DVI | TV | CRT | LCD | +-------+-----+-----+-----+-----+-----+ - + 0000 + 0 + + + + + + | 0000 | 0 | | | | | +-------+-----+-----+-----+-----+-----+ - + 0001 + 1 + + + + X + + | 0001 | 1 | | | | X | +-------+-----+-----+-----+-----+-----+ - + 0010 + 2 + + + X + + + | 0010 | 2 | | | X | | +-------+-----+-----+-----+-----+-----+ - + 0011 + 3 + + + X + X + + | 0011 | 3 | | | X | X | +-------+-----+-----+-----+-----+-----+ - + 0100 + 4 + + X + + + + | 0100 | 4 | | X | | | +-------+-----+-----+-----+-----+-----+ - + 0101 + 5 + + X + + X + + | 0101 | 5 | | X | | X | +-------+-----+-----+-----+-----+-----+ - + 0110 + 6 + + X + X + + + | 0110 | 6 | | X | X | | +-------+-----+-----+-----+-----+-----+ - + 0111 + 7 + + X + X + X + + | 0111 | 7 | | X | X | X | +-------+-----+-----+-----+-----+-----+ - + 1000 + 8 + X + + + + + | 1000 | 8 | X | | | | +-------+-----+-----+-----+-----+-----+ - + 1001 + 9 + X + + + X + + | 1001 | 9 | X | | | X | +-------+-----+-----+-----+-----+-----+ - + 1010 + 10 + X + + X + + + | 1010 | 10 | X | | X | | +-------+-----+-----+-----+-----+-----+ - + 1011 + 11 + X + + X + X + + | 1011 | 11 | X | | X | X | +-------+-----+-----+-----+-----+-----+ - + 1100 + 12 + X + X + + + + | 1100 | 12 | X | X | | | +-------+-----+-----+-----+-----+-----+ - + 1101 + 13 + X + X + + X + + | 1101 | 13 | X | X | | X | +-------+-----+-----+-----+-----+-----+ - + 1110 + 14 + X + X + X + + + | 1110 | 14 | X | X | X | | +-------+-----+-----+-----+-----+-----+ - + 1111 + 15 + X + X + X + X + + | 1111 | 15 | X | X | X | X | +-------+-----+-----+-----+-----+-----+ In most cases, the appropriate displays must be plugged in for the above combinations to work. TV-Out may need to be initialized at boot time. Debugging: + 1) Check whether the Fn+F8 key: + a) does not lock the laptop (try a boot with noapic / nolapic if it does) b) generates events (0x6n, where n is the value corresponding to the configuration above) c) actually works + Record the disp value at every configuration. 2) Echo values from 0 to 15 to /sys/devices/platform/asus-laptop/display. Record its value, note any change. If nothing changes, try a broader range, @@ -164,7 +176,7 @@ Display switching Note: on some machines (e.g. L3C), after the module has been loaded, only 0x6n events are generated and no actual switching occurs. In such a case, a line - like: + like:: echo $((10#$arg-60)) > /sys/devices/platform/asus-laptop/display @@ -180,15 +192,16 @@ LED display several items of information. LED display works for the following models: - W1000N - W1J - To control the LED display, use the following : + - W1000N + - W1J + + To control the LED display, use the following:: echo 0x0T000DDD > /sys/devices/platform/asus-laptop/ where T control the 3 letters display, and DDD the 3 digits display, - according to the tables below. + according to the tables below:: DDD (digits) 000 to 999 = display digits @@ -208,8 +221,8 @@ LED display For example "echo 0x01000001 >/sys/devices/platform/asus-laptop/ledd" would display "DVD001". -Driver options: ---------------- +Driver options +-------------- Options can be passed to the asus-laptop driver using the standard module argument syntax (<param>=<value> when passing the option to the @@ -219,6 +232,7 @@ Driver options: wapf: WAPF defines the behavior of the Fn+Fx wlan key The significance of values is yet to be found, but most of the time: + - 0x0 should do nothing - 0x1 should allow to control the device with Fn+Fx key. - 0x4 should send an ACPI event (0x88) while pressing the Fn+Fx key @@ -237,7 +251,7 @@ Unsupported models - ASUS L7300G - ASUS L8400 -Patches, Errors, Questions: +Patches, Errors, Questions -------------------------- I appreciate any success or failure @@ -253,5 +267,5 @@ Patches, Errors, Questions: Any other comments or patches are also more than welcome. acpi4asus-user@lists.sourceforge.net - http://sourceforge.net/projects/acpi4asus + http://sourceforge.net/projects/acpi4asus diff --git a/Documentation/laptops/disk-shock-protection.txt b/Documentation/laptops/disk-shock-protection.rst index 0e6ba2663834..e97c5f78d8c3 100644 --- a/Documentation/laptops/disk-shock-protection.txt +++ b/Documentation/laptops/disk-shock-protection.rst @@ -1,17 +1,18 @@ +========================== Hard disk shock protection ========================== Author: Elias Oltmanns <eo@nebensachen.de> + Last modified: 2008-10-03 -0. Contents ------------ +.. 0. Contents -1. Intro -2. The interface -3. References -4. CREDITS + 1. Intro + 2. The interface + 3. References + 4. CREDITS 1. Intro @@ -36,8 +37,8 @@ that). ---------------- For each ATA device, the kernel exports the file -block/*/device/unload_heads in sysfs (here assumed to be mounted under -/sys). Access to /sys/block/*/device/unload_heads is denied with +`block/*/device/unload_heads` in sysfs (here assumed to be mounted under +/sys). Access to `/sys/block/*/device/unload_heads` is denied with -EOPNOTSUPP if the device does not support the unload feature. Otherwise, writing an integer value to this file will take the heads of the respective drive off the platter and block all I/O operations @@ -54,18 +55,18 @@ cancel a previously set timeout and resume normal operation immediately by specifying a timeout of 0. Values below -2 are rejected with -EINVAL (see below for the special meaning of -1 and -2). If the timeout specified for a recent head park request has not yet expired, -reading from /sys/block/*/device/unload_heads will report the number +reading from `/sys/block/*/device/unload_heads` will report the number of milliseconds remaining until normal operation will be resumed; otherwise, reading the unload_heads attribute will return 0. For example, do the following in order to park the heads of drive -/dev/sda and stop all I/O operations for five seconds: +/dev/sda and stop all I/O operations for five seconds:: -# echo 5000 > /sys/block/sda/device/unload_heads + # echo 5000 > /sys/block/sda/device/unload_heads -A simple +A simple:: -# cat /sys/block/sda/device/unload_heads + # cat /sys/block/sda/device/unload_heads will show you how many milliseconds are left before normal operation will be resumed. @@ -112,9 +113,9 @@ unload_heads attribute. If you know that your device really does support the unload feature (for instance, because the vendor of your laptop or the hard drive itself told you so), then you can tell the kernel to enable the usage of this feature for that drive by writing -the special value -1 to the unload_heads attribute: +the special value -1 to the unload_heads attribute:: -# echo -1 > /sys/block/sda/device/unload_heads + # echo -1 > /sys/block/sda/device/unload_heads will enable the feature for /dev/sda, and giving -2 instead of -1 will disable it again. @@ -135,6 +136,7 @@ for use. Please feel free to add projects that have been the victims of my ignorance. - http://www.thinkwiki.org/wiki/HDAPS + See this page for information about Linux support of the hard disk active protection system as implemented in IBM/Lenovo Thinkpads. diff --git a/Documentation/laptops/index.rst b/Documentation/laptops/index.rst new file mode 100644 index 000000000000..001a30910d09 --- /dev/null +++ b/Documentation/laptops/index.rst @@ -0,0 +1,17 @@ +:orphan: + +============== +Laptop Drivers +============== + +.. toctree:: + :maxdepth: 1 + + asus-laptop + disk-shock-protection + laptop-mode + lg-laptop + sony-laptop + sonypi + thinkpad-acpi + toshiba_haps diff --git a/Documentation/laptops/laptop-mode.txt b/Documentation/laptops/laptop-mode.rst index 1c707fc9b141..c984c4262f2e 100644 --- a/Documentation/laptops/laptop-mode.txt +++ b/Documentation/laptops/laptop-mode.rst @@ -1,8 +1,11 @@ +=============================================== How to conserve battery power using laptop-mode ------------------------------------------------ +=============================================== Document Author: Bart Samwel (bart@samwel.tk) + Date created: January 2, 2004 + Last modified: December 06, 2004 Introduction @@ -12,17 +15,16 @@ Laptop mode is used to minimize the time that the hard disk needs to be spun up, to conserve battery power on laptops. It has been reported to cause significant power savings. -Contents --------- +.. Contents -* Introduction -* Installation -* Caveats -* The Details -* Tips & Tricks -* Control script -* ACPI integration -* Monitoring tool + * Introduction + * Installation + * Caveats + * The Details + * Tips & Tricks + * Control script + * ACPI integration + * Monitoring tool Installation @@ -33,7 +35,7 @@ or anything. Simply install all the files included in this document, and laptop mode will automatically be started when you're on battery. For your convenience, a tarball containing an installer can be downloaded at: -http://www.samwel.tk/laptop_mode/laptop_mode/ + http://www.samwel.tk/laptop_mode/laptop_mode/ To configure laptop mode, you need to edit the configuration file, which is located in /etc/default/laptop-mode on Debian-based systems, or in @@ -209,7 +211,7 @@ Tips & Tricks this on powerbooks too. I hope that this is a piece of information that might be useful to the Laptop Mode patch or its users." -* In syslog.conf, you can prefix entries with a dash ``-'' to omit syncing the +* In syslog.conf, you can prefix entries with a dash `-` to omit syncing the file after every logging. When you're using laptop-mode and your disk doesn't spin down, this is a likely culprit. @@ -233,83 +235,82 @@ configuration file It should be installed as /etc/default/laptop-mode on Debian, and as /etc/sysconfig/laptop-mode on Red Hat, SUSE, Mandrake, and other work-alikes. ---------------------CONFIG FILE BEGIN------------------------------------------- -# Maximum time, in seconds, of hard drive spindown time that you are -# comfortable with. Worst case, it's possible that you could lose this -# amount of work if your battery fails you while in laptop mode. -#MAX_AGE=600 - -# Automatically disable laptop mode when the number of minutes of battery -# that you have left goes below this threshold. -MINIMUM_BATTERY_MINUTES=10 - -# Read-ahead, in 512-byte sectors. You can spin down the disk while playing MP3/OGG -# by setting the disk readahead to 8MB (READAHEAD=16384). Effectively, the disk -# will read a complete MP3 at once, and will then spin down while the MP3/OGG is -# playing. -#READAHEAD=4096 - -# Shall we remount journaled fs. with appropriate commit interval? (1=yes) -#DO_REMOUNTS=1 - -# And shall we add the "noatime" option to that as well? (1=yes) -#DO_REMOUNT_NOATIME=1 - -# Dirty synchronous ratio. At this percentage of dirty pages the process -# which -# calls write() does its own writeback -#DIRTY_RATIO=40 - -# -# Allowed dirty background ratio, in percent. Once DIRTY_RATIO has been -# exceeded, the kernel will wake flusher threads which will then reduce the -# amount of dirty memory to dirty_background_ratio. Set this nice and low, -# so once some writeout has commenced, we do a lot of it. -# -#DIRTY_BACKGROUND_RATIO=5 - -# kernel default dirty buffer age -#DEF_AGE=30 -#DEF_UPDATE=5 -#DEF_DIRTY_BACKGROUND_RATIO=10 -#DEF_DIRTY_RATIO=40 -#DEF_XFS_AGE_BUFFER=15 -#DEF_XFS_SYNC_INTERVAL=30 -#DEF_XFS_BUFD_INTERVAL=1 - -# This must be adjusted manually to the value of HZ in the running kernel -# on 2.4, until the XFS people change their 2.4 external interfaces to work in -# centisecs. This can be automated, but it's a work in progress that still -# needs# some fixes. On 2.6 kernels, XFS uses USER_HZ instead of HZ for -# external interfaces, and that is currently always set to 100. So you don't -# need to change this on 2.6. -#XFS_HZ=100 - -# Should the maximum CPU frequency be adjusted down while on battery? -# Requires CPUFreq to be setup. -# See Documentation/admin-guide/pm/cpufreq.rst for more info -#DO_CPU=0 - -# When on battery what is the maximum CPU speed that the system should -# use? Legal values are "slowest" for the slowest speed that your -# CPU is able to operate at, or a value listed in: -# /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies -# Only applicable if DO_CPU=1. -#CPU_MAXFREQ=slowest - -# Idle timeout for your hard drive (man hdparm for valid values, -S option) -# Default is 2 hours on AC (AC_HD=244) and 20 seconds for battery (BATT_HD=4). -#AC_HD=244 -#BATT_HD=4 - -# The drives for which to adjust the idle timeout. Separate them by a space, -# e.g. HD="/dev/hda /dev/hdb". -#HD="/dev/hda" - -# Set the spindown timeout on a hard drive? -#DO_HD=1 - ---------------------CONFIG FILE END--------------------------------------------- +Config file:: + + # Maximum time, in seconds, of hard drive spindown time that you are + # comfortable with. Worst case, it's possible that you could lose this + # amount of work if your battery fails you while in laptop mode. + #MAX_AGE=600 + + # Automatically disable laptop mode when the number of minutes of battery + # that you have left goes below this threshold. + MINIMUM_BATTERY_MINUTES=10 + + # Read-ahead, in 512-byte sectors. You can spin down the disk while playing MP3/OGG + # by setting the disk readahead to 8MB (READAHEAD=16384). Effectively, the disk + # will read a complete MP3 at once, and will then spin down while the MP3/OGG is + # playing. + #READAHEAD=4096 + + # Shall we remount journaled fs. with appropriate commit interval? (1=yes) + #DO_REMOUNTS=1 + + # And shall we add the "noatime" option to that as well? (1=yes) + #DO_REMOUNT_NOATIME=1 + + # Dirty synchronous ratio. At this percentage of dirty pages the process + # which + # calls write() does its own writeback + #DIRTY_RATIO=40 + + # + # Allowed dirty background ratio, in percent. Once DIRTY_RATIO has been + # exceeded, the kernel will wake flusher threads which will then reduce the + # amount of dirty memory to dirty_background_ratio. Set this nice and low, + # so once some writeout has commenced, we do a lot of it. + # + #DIRTY_BACKGROUND_RATIO=5 + + # kernel default dirty buffer age + #DEF_AGE=30 + #DEF_UPDATE=5 + #DEF_DIRTY_BACKGROUND_RATIO=10 + #DEF_DIRTY_RATIO=40 + #DEF_XFS_AGE_BUFFER=15 + #DEF_XFS_SYNC_INTERVAL=30 + #DEF_XFS_BUFD_INTERVAL=1 + + # This must be adjusted manually to the value of HZ in the running kernel + # on 2.4, until the XFS people change their 2.4 external interfaces to work in + # centisecs. This can be automated, but it's a work in progress that still + # needs# some fixes. On 2.6 kernels, XFS uses USER_HZ instead of HZ for + # external interfaces, and that is currently always set to 100. So you don't + # need to change this on 2.6. + #XFS_HZ=100 + + # Should the maximum CPU frequency be adjusted down while on battery? + # Requires CPUFreq to be setup. + # See Documentation/admin-guide/pm/cpufreq.rst for more info + #DO_CPU=0 + + # When on battery what is the maximum CPU speed that the system should + # use? Legal values are "slowest" for the slowest speed that your + # CPU is able to operate at, or a value listed in: + # /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies + # Only applicable if DO_CPU=1. + #CPU_MAXFREQ=slowest + + # Idle timeout for your hard drive (man hdparm for valid values, -S option) + # Default is 2 hours on AC (AC_HD=244) and 20 seconds for battery (BATT_HD=4). + #AC_HD=244 + #BATT_HD=4 + + # The drives for which to adjust the idle timeout. Separate them by a space, + # e.g. HD="/dev/hda /dev/hdb". + #HD="/dev/hda" + + # Set the spindown timeout on a hard drive? + #DO_HD=1 Control script @@ -318,125 +319,126 @@ Control script Please note that this control script works for the Linux 2.4 and 2.6 series (thanks to Kiko Piris). ---------------------CONTROL SCRIPT BEGIN---------------------------------------- -#!/bin/bash - -# start or stop laptop_mode, best run by a power management daemon when -# ac gets connected/disconnected from a laptop -# -# install as /sbin/laptop_mode -# -# Contributors to this script: Kiko Piris -# Bart Samwel -# Micha Feigin -# Andrew Morton -# Herve Eychenne -# Dax Kelson -# -# Original Linux 2.4 version by: Jens Axboe - -############################################################################# - -# Source config -if [ -f /etc/default/laptop-mode ] ; then +Control script:: + + #!/bin/bash + + # start or stop laptop_mode, best run by a power management daemon when + # ac gets connected/disconnected from a laptop + # + # install as /sbin/laptop_mode + # + # Contributors to this script: Kiko Piris + # Bart Samwel + # Micha Feigin + # Andrew Morton + # Herve Eychenne + # Dax Kelson + # + # Original Linux 2.4 version by: Jens Axboe + + ############################################################################# + + # Source config + if [ -f /etc/default/laptop-mode ] ; then # Debian . /etc/default/laptop-mode -elif [ -f /etc/sysconfig/laptop-mode ] ; then + elif [ -f /etc/sysconfig/laptop-mode ] ; then # Others - . /etc/sysconfig/laptop-mode -fi - -# Don't raise an error if the config file is incomplete -# set defaults instead: - -# Maximum time, in seconds, of hard drive spindown time that you are -# comfortable with. Worst case, it's possible that you could lose this -# amount of work if your battery fails you while in laptop mode. -MAX_AGE=${MAX_AGE:-'600'} - -# Read-ahead, in kilobytes -READAHEAD=${READAHEAD:-'4096'} - -# Shall we remount journaled fs. with appropriate commit interval? (1=yes) -DO_REMOUNTS=${DO_REMOUNTS:-'1'} - -# And shall we add the "noatime" option to that as well? (1=yes) -DO_REMOUNT_NOATIME=${DO_REMOUNT_NOATIME:-'1'} - -# Shall we adjust the idle timeout on a hard drive? -DO_HD=${DO_HD:-'1'} - -# Adjust idle timeout on which hard drive? -HD="${HD:-'/dev/hda'}" - -# spindown time for HD (hdparm -S values) -AC_HD=${AC_HD:-'244'} -BATT_HD=${BATT_HD:-'4'} - -# Dirty synchronous ratio. At this percentage of dirty pages the process which -# calls write() does its own writeback -DIRTY_RATIO=${DIRTY_RATIO:-'40'} - -# cpu frequency scaling -# See Documentation/admin-guide/pm/cpufreq.rst for more info -DO_CPU=${CPU_MANAGE:-'0'} -CPU_MAXFREQ=${CPU_MAXFREQ:-'slowest'} - -# -# Allowed dirty background ratio, in percent. Once DIRTY_RATIO has been -# exceeded, the kernel will wake flusher threads which will then reduce the -# amount of dirty memory to dirty_background_ratio. Set this nice and low, -# so once some writeout has commenced, we do a lot of it. -# -DIRTY_BACKGROUND_RATIO=${DIRTY_BACKGROUND_RATIO:-'5'} - -# kernel default dirty buffer age -DEF_AGE=${DEF_AGE:-'30'} -DEF_UPDATE=${DEF_UPDATE:-'5'} -DEF_DIRTY_BACKGROUND_RATIO=${DEF_DIRTY_BACKGROUND_RATIO:-'10'} -DEF_DIRTY_RATIO=${DEF_DIRTY_RATIO:-'40'} -DEF_XFS_AGE_BUFFER=${DEF_XFS_AGE_BUFFER:-'15'} -DEF_XFS_SYNC_INTERVAL=${DEF_XFS_SYNC_INTERVAL:-'30'} -DEF_XFS_BUFD_INTERVAL=${DEF_XFS_BUFD_INTERVAL:-'1'} - -# This must be adjusted manually to the value of HZ in the running kernel -# on 2.4, until the XFS people change their 2.4 external interfaces to work in -# centisecs. This can be automated, but it's a work in progress that still needs -# some fixes. On 2.6 kernels, XFS uses USER_HZ instead of HZ for external -# interfaces, and that is currently always set to 100. So you don't need to -# change this on 2.6. -XFS_HZ=${XFS_HZ:-'100'} - -############################################################################# - -KLEVEL="$(uname -r | - { + . /etc/sysconfig/laptop-mode + fi + + # Don't raise an error if the config file is incomplete + # set defaults instead: + + # Maximum time, in seconds, of hard drive spindown time that you are + # comfortable with. Worst case, it's possible that you could lose this + # amount of work if your battery fails you while in laptop mode. + MAX_AGE=${MAX_AGE:-'600'} + + # Read-ahead, in kilobytes + READAHEAD=${READAHEAD:-'4096'} + + # Shall we remount journaled fs. with appropriate commit interval? (1=yes) + DO_REMOUNTS=${DO_REMOUNTS:-'1'} + + # And shall we add the "noatime" option to that as well? (1=yes) + DO_REMOUNT_NOATIME=${DO_REMOUNT_NOATIME:-'1'} + + # Shall we adjust the idle timeout on a hard drive? + DO_HD=${DO_HD:-'1'} + + # Adjust idle timeout on which hard drive? + HD="${HD:-'/dev/hda'}" + + # spindown time for HD (hdparm -S values) + AC_HD=${AC_HD:-'244'} + BATT_HD=${BATT_HD:-'4'} + + # Dirty synchronous ratio. At this percentage of dirty pages the process which + # calls write() does its own writeback + DIRTY_RATIO=${DIRTY_RATIO:-'40'} + + # cpu frequency scaling + # See Documentation/admin-guide/pm/cpufreq.rst for more info + DO_CPU=${CPU_MANAGE:-'0'} + CPU_MAXFREQ=${CPU_MAXFREQ:-'slowest'} + + # + # Allowed dirty background ratio, in percent. Once DIRTY_RATIO has been + # exceeded, the kernel will wake flusher threads which will then reduce the + # amount of dirty memory to dirty_background_ratio. Set this nice and low, + # so once some writeout has commenced, we do a lot of it. + # + DIRTY_BACKGROUND_RATIO=${DIRTY_BACKGROUND_RATIO:-'5'} + + # kernel default dirty buffer age + DEF_AGE=${DEF_AGE:-'30'} + DEF_UPDATE=${DEF_UPDATE:-'5'} + DEF_DIRTY_BACKGROUND_RATIO=${DEF_DIRTY_BACKGROUND_RATIO:-'10'} + DEF_DIRTY_RATIO=${DEF_DIRTY_RATIO:-'40'} + DEF_XFS_AGE_BUFFER=${DEF_XFS_AGE_BUFFER:-'15'} + DEF_XFS_SYNC_INTERVAL=${DEF_XFS_SYNC_INTERVAL:-'30'} + DEF_XFS_BUFD_INTERVAL=${DEF_XFS_BUFD_INTERVAL:-'1'} + + # This must be adjusted manually to the value of HZ in the running kernel + # on 2.4, until the XFS people change their 2.4 external interfaces to work in + # centisecs. This can be automated, but it's a work in progress that still needs + # some fixes. On 2.6 kernels, XFS uses USER_HZ instead of HZ for external + # interfaces, and that is currently always set to 100. So you don't need to + # change this on 2.6. + XFS_HZ=${XFS_HZ:-'100'} + + ############################################################################# + + KLEVEL="$(uname -r | + { IFS='.' read a b c echo $a.$b } -)" -case "$KLEVEL" in + )" + case "$KLEVEL" in "2.4"|"2.6") ;; *) echo "Unhandled kernel version: $KLEVEL ('uname -r' = '$(uname -r)')" >&2 exit 1 ;; -esac + esac -if [ ! -e /proc/sys/vm/laptop_mode ] ; then + if [ ! -e /proc/sys/vm/laptop_mode ] ; then echo "Kernel is not patched with laptop_mode patch." >&2 exit 1 -fi + fi -if [ ! -w /proc/sys/vm/laptop_mode ] ; then + if [ ! -w /proc/sys/vm/laptop_mode ] ; then echo "You do not have enough privileges to enable laptop_mode." >&2 exit 1 -fi + fi -# Remove an option (the first parameter) of the form option=<number> from -# a mount options string (the rest of the parameters). -parse_mount_opts () { + # Remove an option (the first parameter) of the form option=<number> from + # a mount options string (the rest of the parameters). + parse_mount_opts () { OPT="$1" shift echo ",$*," | sed \ @@ -444,11 +446,11 @@ parse_mount_opts () { -e 's/,,*/,/g' \ -e 's/^,//' \ -e 's/,$//' -} + } -# Remove an option (the first parameter) without any arguments from -# a mount option string (the rest of the parameters). -parse_nonumber_mount_opts () { + # Remove an option (the first parameter) without any arguments from + # a mount option string (the rest of the parameters). + parse_nonumber_mount_opts () { OPT="$1" shift echo ",$*," | sed \ @@ -456,20 +458,20 @@ parse_nonumber_mount_opts () { -e 's/,,*/,/g' \ -e 's/^,//' \ -e 's/,$//' -} - -# Find out the state of a yes/no option (e.g. "atime"/"noatime") in -# fstab for a given filesystem, and use this state to replace the -# value of the option in another mount options string. The device -# is the first argument, the option name the second, and the default -# value the third. The remainder is the mount options string. -# -# Example: -# parse_yesno_opts_wfstab /dev/hda1 atime atime defaults,noatime -# -# If fstab contains, say, "rw" for this filesystem, then the result -# will be "defaults,atime". -parse_yesno_opts_wfstab () { + } + + # Find out the state of a yes/no option (e.g. "atime"/"noatime") in + # fstab for a given filesystem, and use this state to replace the + # value of the option in another mount options string. The device + # is the first argument, the option name the second, and the default + # value the third. The remainder is the mount options string. + # + # Example: + # parse_yesno_opts_wfstab /dev/hda1 atime atime defaults,noatime + # + # If fstab contains, say, "rw" for this filesystem, then the result + # will be "defaults,atime". + parse_yesno_opts_wfstab () { L_DEV="$1" OPT="$2" DEF_OPT="$3" @@ -491,21 +493,21 @@ parse_yesno_opts_wfstab () { # option not specified in fstab -- choose the default. echo "$PARSEDOPTS1,$DEF_OPT" fi -} - -# Find out the state of a numbered option (e.g. "commit=NNN") in -# fstab for a given filesystem, and use this state to replace the -# value of the option in another mount options string. The device -# is the first argument, and the option name the second. The -# remainder is the mount options string in which the replacement -# must be done. -# -# Example: -# parse_mount_opts_wfstab /dev/hda1 commit defaults,commit=7 -# -# If fstab contains, say, "commit=3,rw" for this filesystem, then the -# result will be "rw,commit=3". -parse_mount_opts_wfstab () { + } + + # Find out the state of a numbered option (e.g. "commit=NNN") in + # fstab for a given filesystem, and use this state to replace the + # value of the option in another mount options string. The device + # is the first argument, and the option name the second. The + # remainder is the mount options string in which the replacement + # must be done. + # + # Example: + # parse_mount_opts_wfstab /dev/hda1 commit defaults,commit=7 + # + # If fstab contains, say, "commit=3,rw" for this filesystem, then the + # result will be "rw,commit=3". + parse_mount_opts_wfstab () { L_DEV="$1" OPT="$2" shift 2 @@ -523,9 +525,9 @@ parse_mount_opts_wfstab () { # option not specified in fstab: set it to 0 echo "$PARSEDOPTS1,$OPT=0" fi -} + } -deduce_fstype () { + deduce_fstype () { MP="$1" # My root filesystem unfortunately has # type "unknown" in /etc/mtab. If we encounter @@ -538,13 +540,13 @@ deduce_fstype () { exit 0 fi done -} + } -if [ $DO_REMOUNT_NOATIME -eq 1 ] ; then + if [ $DO_REMOUNT_NOATIME -eq 1 ] ; then NOATIME_OPT=",noatime" -fi + fi -case "$1" in + case "$1" in start) AGE=$((100*$MAX_AGE)) XFS_AGE=$(($XFS_HZ*$MAX_AGE)) @@ -687,10 +689,9 @@ case "$1" in exit 1 ;; -esac + esac -exit 0 ---------------------CONTROL SCRIPT END------------------------------------------ + exit 0 ACPI integration @@ -701,78 +702,76 @@ kick off the laptop_mode script and run hdparm. The part that automatically disables laptop mode when the battery is low was written by Jan Topinski. ------------------/etc/acpi/events/ac_adapter BEGIN------------------------------ -event=ac_adapter -action=/etc/acpi/actions/ac.sh %e -----------------/etc/acpi/events/ac_adapter END--------------------------------- +/etc/acpi/events/ac_adapter:: + + event=ac_adapter + action=/etc/acpi/actions/ac.sh %e + +/etc/acpi/events/battery:: + event=battery.* + action=/etc/acpi/actions/battery.sh %e ------------------/etc/acpi/events/battery BEGIN--------------------------------- -event=battery.* -action=/etc/acpi/actions/battery.sh %e -----------------/etc/acpi/events/battery END------------------------------------ +/etc/acpi/actions/ac.sh:: + #!/bin/bash -----------------/etc/acpi/actions/ac.sh BEGIN----------------------------------- -#!/bin/bash + # ac on/offline event handler -# ac on/offline event handler + status=`awk '/^state: / { print $2 }' /proc/acpi/ac_adapter/$2/state` -status=`awk '/^state: / { print $2 }' /proc/acpi/ac_adapter/$2/state` + case $status in + "on-line") + /sbin/laptop_mode stop + exit 0 + ;; + "off-line") + /sbin/laptop_mode start + exit 0 + ;; + esac -case $status in - "on-line") - /sbin/laptop_mode stop - exit 0 - ;; - "off-line") - /sbin/laptop_mode start - exit 0 - ;; -esac ----------------------------/etc/acpi/actions/ac.sh END-------------------------- +/etc/acpi/actions/battery.sh:: ----------------------------/etc/acpi/actions/battery.sh BEGIN------------------- -#! /bin/bash + #! /bin/bash -# Automatically disable laptop mode when the battery almost runs out. + # Automatically disable laptop mode when the battery almost runs out. -BATT_INFO=/proc/acpi/battery/$2/state + BATT_INFO=/proc/acpi/battery/$2/state -if [[ -f /proc/sys/vm/laptop_mode ]] -then - LM=`cat /proc/sys/vm/laptop_mode` - if [[ $LM -gt 0 ]] - then - if [[ -f $BATT_INFO ]] + if [[ -f /proc/sys/vm/laptop_mode ]] + then + LM=`cat /proc/sys/vm/laptop_mode` + if [[ $LM -gt 0 ]] then - # Source the config file only now that we know we need - if [ -f /etc/default/laptop-mode ] ; then - # Debian - . /etc/default/laptop-mode - elif [ -f /etc/sysconfig/laptop-mode ] ; then - # Others - . /etc/sysconfig/laptop-mode - fi - MINIMUM_BATTERY_MINUTES=${MINIMUM_BATTERY_MINUTES:-'10'} - - ACTION="`cat $BATT_INFO | grep charging | cut -c 26-`" - if [[ ACTION -eq "discharging" ]] - then - PRESENT_RATE=`cat $BATT_INFO | grep "present rate:" | sed "s/.* \([0-9][0-9]* \).*/\1/" ` - REMAINING=`cat $BATT_INFO | grep "remaining capacity:" | sed "s/.* \([0-9][0-9]* \).*/\1/" ` - fi - if (($REMAINING * 60 / $PRESENT_RATE < $MINIMUM_BATTERY_MINUTES)) - then - /sbin/laptop_mode stop - fi - else - logger -p daemon.warning "You are using laptop mode and your battery interface $BATT_INFO is missing. This may lead to loss of data when the battery runs out. Check kernel ACPI support and /proc/acpi/battery folder, and edit /etc/acpi/battery.sh to set BATT_INFO to the correct path." + if [[ -f $BATT_INFO ]] + then + # Source the config file only now that we know we need + if [ -f /etc/default/laptop-mode ] ; then + # Debian + . /etc/default/laptop-mode + elif [ -f /etc/sysconfig/laptop-mode ] ; then + # Others + . /etc/sysconfig/laptop-mode + fi + MINIMUM_BATTERY_MINUTES=${MINIMUM_BATTERY_MINUTES:-'10'} + + ACTION="`cat $BATT_INFO | grep charging | cut -c 26-`" + if [[ ACTION -eq "discharging" ]] + then + PRESENT_RATE=`cat $BATT_INFO | grep "present rate:" | sed "s/.* \([0-9][0-9]* \).*/\1/" ` + REMAINING=`cat $BATT_INFO | grep "remaining capacity:" | sed "s/.* \([0-9][0-9]* \).*/\1/" ` + fi + if (($REMAINING * 60 / $PRESENT_RATE < $MINIMUM_BATTERY_MINUTES)) + then + /sbin/laptop_mode stop + fi + else + logger -p daemon.warning "You are using laptop mode and your battery interface $BATT_INFO is missing. This may lead to loss of data when the battery runs out. Check kernel ACPI support and /proc/acpi/battery folder, and edit /etc/acpi/battery.sh to set BATT_INFO to the correct path." + fi fi - fi -fi ----------------------------/etc/acpi/actions/battery.sh END-------------------- + fi Monitoring tool diff --git a/Documentation/laptops/sony-laptop.txt b/Documentation/laptops/sony-laptop.rst index 978b1e615155..9edcc7f6612f 100644 --- a/Documentation/laptops/sony-laptop.txt +++ b/Documentation/laptops/sony-laptop.rst @@ -1,7 +1,9 @@ +========================================= Sony Notebook Control Driver (SNC) Readme ------------------------------------------ - Copyright (C) 2004- 2005 Stelian Pop <stelian@popies.net> - Copyright (C) 2007 Mattia Dongili <malattia@linux.it> +========================================= + + - Copyright (C) 2004- 2005 Stelian Pop <stelian@popies.net> + - Copyright (C) 2007 Mattia Dongili <malattia@linux.it> This mini-driver drives the SNC and SPIC device present in the ACPI BIOS of the Sony Vaio laptops. This driver mixes both devices functions under the same @@ -10,6 +12,7 @@ obsoleted by sony-laptop now. Fn keys (hotkeys): ------------------ + Some models report hotkeys through the SNC or SPIC devices, such events are reported both through the ACPI subsystem as acpi events and through the INPUT subsystem. See the logs of /proc/bus/input/devices to find out what those @@ -28,11 +31,14 @@ If your laptop model supports it, you will find sysfs files in the /sys/class/backlight/sony/ directory. You will be able to query and set the current screen brightness: + + ====================== ========================================= brightness get/set screen brightness (an integer between 0 and 7) actual_brightness reading from this file will query the HW to get real brightness value max_brightness the maximum brightness value + ====================== ========================================= Platform specific: @@ -45,6 +51,8 @@ You then read/write integer values from/to those files by using standard UNIX tools. The files are: + + ====================== ========================================== brightness_default screen brightness which will be set when the laptop will be rebooted cdpower power on/off the internal CD drive @@ -53,21 +61,39 @@ The files are: (only in debug mode) bluetoothpower power on/off the internal bluetooth device fanspeed get/set the fan speed + ====================== ========================================== Note that some files may be missing if they are not supported by your particular laptop model. -Example usage: +Example usage:: + # echo "1" > /sys/devices/platform/sony-laptop/brightness_default -sets the lowest screen brightness for the next and later reboots, + +sets the lowest screen brightness for the next and later reboots + +:: + # echo "8" > /sys/devices/platform/sony-laptop/brightness_default -sets the highest screen brightness for the next and later reboots, + +sets the highest screen brightness for the next and later reboots + +:: + # cat /sys/devices/platform/sony-laptop/brightness_default -retrieves the value. + +retrieves the value + +:: # echo "0" > /sys/devices/platform/sony-laptop/audiopower -powers off the sound card, + +powers off the sound card + +:: + # echo "1" > /sys/devices/platform/sony-laptop/audiopower + powers on the sound card. @@ -76,7 +102,8 @@ RFkill control: More recent Vaio models expose a consistent set of ACPI methods to control radio frequency emitting devices. If you are a lucky owner of such a laptop you will find the necessary rfkill devices under -/sys/class/rfkill. Check those starting with sony-* in +/sys/class/rfkill. Check those starting with sony-* in:: + # grep . /sys/class/rfkill/*/{state,name} @@ -88,26 +115,29 @@ you are not afraid of any side effects doing strange things with your ACPI BIOS could have on your laptop), load the driver and pass the option 'debug=1'. -REPEAT: DON'T DO THIS IF YOU DON'T LIKE RISKY BUSINESS. +REPEAT: + **DON'T DO THIS IF YOU DON'T LIKE RISKY BUSINESS.** In your kernel logs you will find the list of all ACPI methods the SNC device has on your laptop. * For new models you will see a long list of meaningless method names, -reading the DSDT table source should reveal that: + reading the DSDT table source should reveal that: + (1) the SNC device uses an internal capability lookup table (2) SN00 is used to find values in the lookup table (3) SN06 and SN07 are used to call into the real methods based on offsets you can obtain iterating the table using SN00 (4) SN02 used to enable events. + Some values in the capability lookup table are more or less known, see the code for all sony_call_snc_handle calls, others are more obscure. * For old models you can see the GCDP/GCDP methods used to pwer on/off -the CD drive, but there are others and they are usually different from -model to model. + the CD drive, but there are others and they are usually different from + model to model. -I HAVE NO IDEA WHAT THOSE METHODS DO. +**I HAVE NO IDEA WHAT THOSE METHODS DO.** The sony-laptop driver creates, for some of those methods (the most current ones found on several Vaio models), an entry under diff --git a/Documentation/laptops/sonypi.txt b/Documentation/laptops/sonypi.rst index 606bdb9ce036..2a1975ed7ee4 100644 --- a/Documentation/laptops/sonypi.txt +++ b/Documentation/laptops/sonypi.rst @@ -1,11 +1,13 @@ +================================================== Sony Programmable I/O Control Device Driver Readme --------------------------------------------------- - Copyright (C) 2001-2004 Stelian Pop <stelian@popies.net> - Copyright (C) 2001-2002 Alcôve <www.alcove.com> - Copyright (C) 2001 Michael Ashley <m.ashley@unsw.edu.au> - Copyright (C) 2001 Junichi Morita <jun1m@mars.dti.ne.jp> - Copyright (C) 2000 Takaya Kinjo <t-kinjo@tc4.so-net.ne.jp> - Copyright (C) 2000 Andrew Tridgell <tridge@samba.org> +================================================== + + - Copyright (C) 2001-2004 Stelian Pop <stelian@popies.net> + - Copyright (C) 2001-2002 Alcôve <www.alcove.com> + - Copyright (C) 2001 Michael Ashley <m.ashley@unsw.edu.au> + - Copyright (C) 2001 Junichi Morita <jun1m@mars.dti.ne.jp> + - Copyright (C) 2000 Takaya Kinjo <t-kinjo@tc4.so-net.ne.jp> + - Copyright (C) 2000 Andrew Tridgell <tridge@samba.org> This driver enables access to the Sony Programmable I/O Control Device which can be found in many Sony Vaio laptops. Some newer Sony laptops (seems to be @@ -14,6 +16,7 @@ sonypi device and are not supported at all by this driver. It will give access (through a user space utility) to some events those laptops generate, like: + - jogdial events (the small wheel on the side of Vaios) - capture button events (only on Vaio Picturebook series) - Fn keys @@ -49,6 +52,7 @@ module argument syntax (<param>=<value> when passing the option to the module or sonypi.<param>=<value> on the kernel boot line when sonypi is statically linked into the kernel). Those options are: + =============== ======================================================= minor: minor number of the misc device /dev/sonypi, default is -1 (automatic allocation, see /proc/misc or kernel logs) @@ -86,6 +90,8 @@ statically linked into the kernel). Those options are: will be tried. You can use the following bits to construct your own event mask (from drivers/char/sonypi.h): + + ======================== ====== SONYPI_JOGGER_MASK 0x0001 SONYPI_CAPTURE_MASK 0x0002 SONYPI_FNKEY_MASK 0x0004 @@ -100,22 +106,24 @@ statically linked into the kernel). Those options are: SONYPI_MEMORYSTICK_MASK 0x0800 SONYPI_BATTERY_MASK 0x1000 SONYPI_WIRELESS_MASK 0x2000 + ======================== ====== useinput: if set (which is the default) two input devices are created, one which interprets the jogdial events as mouse events, the other one which acts like a keyboard reporting the pressing of the special keys. + =============== ======================================================= Module use: ----------- In order to automatically load the sonypi module on use, you can put those -lines a configuration file in /etc/modprobe.d/: +lines a configuration file in /etc/modprobe.d/:: alias char-major-10-250 sonypi options sonypi minor=250 -This supposes the use of minor 250 for the sonypi device: +This supposes the use of minor 250 for the sonypi device:: # mknod /dev/sonypi c 10 250 @@ -148,5 +156,5 @@ Bugs: http://www.acc.umu.se/~erikw/program/smartdimmer-0.1.tar.bz2 - since all development was done by reverse engineering, there is - _absolutely no guarantee_ that this driver will not crash your + *absolutely no guarantee* that this driver will not crash your laptop. Permanently. diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.rst index 75ef063622d2..19d52fc3c5e9 100644 --- a/Documentation/laptops/thinkpad-acpi.txt +++ b/Documentation/laptops/thinkpad-acpi.rst @@ -1,12 +1,15 @@ - ThinkPad ACPI Extras Driver +=========================== +ThinkPad ACPI Extras Driver +=========================== - Version 0.25 - October 16th, 2013 +Version 0.25 - Borislav Deianov <borislav@users.sf.net> - Henrique de Moraes Holschuh <hmh@hmh.eng.br> - http://ibm-acpi.sf.net/ +October 16th, 2013 +- Borislav Deianov <borislav@users.sf.net> +- Henrique de Moraes Holschuh <hmh@hmh.eng.br> + +http://ibm-acpi.sf.net/ This is a Linux driver for the IBM and Lenovo ThinkPad laptops. It supports various features of these laptops which are accessible @@ -91,7 +94,8 @@ yet ready or stabilized, it is expected that this interface will change, and any and all userspace programs must deal with it. -Notes about the sysfs interface: +Notes about the sysfs interface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Unlike what was done with the procfs interface, correctness when talking to the sysfs interfaces will be enforced, as will correctness in the @@ -129,6 +133,7 @@ Driver version -------------- procfs: /proc/acpi/ibm/driver + sysfs driver attribute: version The driver name and version. No commands can be written to this file. @@ -141,9 +146,13 @@ sysfs driver attribute: interface_version Version of the thinkpad-acpi sysfs interface, as an unsigned long (output in hex format: 0xAAAABBCC), where: - AAAA - major revision - BB - minor revision - CC - bugfix revision + + AAAA + - major revision + BB + - minor revision + CC + - bugfix revision The sysfs interface version changelog for the driver can be found at the end of this document. Changes to the sysfs interface done by the kernel @@ -170,6 +179,7 @@ Hot keys -------- procfs: /proc/acpi/ibm/hotkey + sysfs device attribute: hotkey_* In a ThinkPad, the ACPI HKEY handler is responsible for communicating @@ -181,7 +191,7 @@ firmware will behave in many situations. The driver enables the HKEY ("hot key") event reporting automatically when loaded, and disables it when it is removed. -The driver will report HKEY events in the following format: +The driver will report HKEY events in the following format:: ibm/hotkey HKEY 00000080 0000xxxx @@ -217,9 +227,10 @@ ThinkPads, it is still possible to support some extra hotkeys by polling the "CMOS NVRAM" at least 10 times per second. The driver attempts to enables this functionality automatically when required. -procfs notes: +procfs notes +^^^^^^^^^^^^ -The following commands can be written to the /proc/acpi/ibm/hotkey file: +The following commands can be written to the /proc/acpi/ibm/hotkey file:: echo 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys @@ -227,7 +238,7 @@ The following commands can be written to the /proc/acpi/ibm/hotkey file: echo reset > /proc/acpi/ibm/hotkey -- restore the recommended mask The following commands have been deprecated and will cause the kernel -to log a warning: +to log a warning:: echo enable > /proc/acpi/ibm/hotkey -- does nothing echo disable > /proc/acpi/ibm/hotkey -- returns an error @@ -237,7 +248,8 @@ maintain maximum bug-to-bug compatibility, it does not report any masks, nor does it allow one to manipulate the hot key mask when the firmware does not support masks at all, even if NVRAM polling is in use. -sysfs notes: +sysfs notes +^^^^^^^^^^^ hotkey_bios_enabled: DEPRECATED, WILL BE REMOVED SOON. @@ -349,7 +361,8 @@ sysfs notes: This attribute has poll()/select() support. -input layer notes: +input layer notes +^^^^^^^^^^^^^^^^^ A Hot key is mapped to a single input layer EV_KEY event, possibly followed by an EV_MSC MSC_SCAN event that shall contain that key's scan @@ -362,11 +375,13 @@ remapping KEY_UNKNOWN keys. The events are available in an input device, with the following id: - Bus: BUS_HOST - vendor: 0x1014 (PCI_VENDOR_ID_IBM) or + ============== ============================== + Bus BUS_HOST + vendor 0x1014 (PCI_VENDOR_ID_IBM) or 0x17aa (PCI_VENDOR_ID_LENOVO) - product: 0x5054 ("TP") - version: 0x4101 + product 0x5054 ("TP") + version 0x4101 + ============== ============================== The version will have its LSB incremented if the keymap changes in a backwards-compatible way. The MSB shall always be 0x41 for this input @@ -380,9 +395,10 @@ backwards-compatible change for this input device. Thinkpad-acpi Hot Key event map (version 0x4101): +======= ======= ============== ============================================== ACPI Scan event code Key Notes - +======= ======= ============== ============================================== 0x1001 0x00 FN+F1 - 0x1002 0x01 FN+F2 IBM: battery (rare) @@ -426,7 +442,9 @@ event code Key Notes or toggle screen expand 0x1009 0x08 FN+F9 - - .. .. .. + +... ... ... ... + 0x100B 0x0A FN+F11 - 0x100C 0x0B FN+F12 Sleep to disk. You are always @@ -480,8 +498,11 @@ event code Key Notes 0x1018 0x17 THINKPAD ThinkPad/Access IBM/Lenovo key 0x1019 0x18 unknown -.. .. .. + +... ... ... + 0x1020 0x1F unknown +======= ======= ============== ============================================== The ThinkPad firmware does not allow one to differentiate when most hot keys are pressed or released (either that, or we don't know how to, yet). @@ -499,14 +520,17 @@ generate input device EV_KEY events. In addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW events for switches: +============== ============================================== SW_RFKILL_ALL T60 and later hardware rfkill rocker switch SW_TABLET_MODE Tablet ThinkPads HKEY events 0x5009 and 0x500A +============== ============================================== -Non hotkey ACPI HKEY event map: -------------------------------- +Non hotkey ACPI HKEY event map +------------------------------ Events that are never propagated by the driver: +====== ================================================== 0x2304 System is waking up from suspend to undock 0x2305 System is waking up from suspend to eject bay 0x2404 System is waking up from hibernation to undock @@ -519,10 +543,12 @@ Events that are never propagated by the driver: 0x6000 KEYBOARD: Numlock key pressed 0x6005 KEYBOARD: Fn key pressed (TO BE VERIFIED) 0x7000 Radio Switch may have changed state +====== ================================================== Events that are propagated by the driver to userspace: +====== ===================================================== 0x2313 ALARM: System is waking up from suspend because the battery is nearly empty 0x2413 ALARM: System is waking up from hibernation because @@ -544,6 +570,7 @@ Events that are propagated by the driver to userspace: 0x6040 Nvidia Optimus/AC adapter related (TO BE VERIFIED) 0x60C0 X1 Yoga 2016, Tablet mode status changed 0x60F0 Thermal Transformation changed (GMTS, Windows) +====== ===================================================== Battery nearly empty alarms are a last resort attempt to get the operating system to hibernate or shutdown cleanly (0x2313), or shutdown @@ -562,7 +589,8 @@ cycle, or a system shutdown. Obviously, something is very wrong if this happens. -Brightness hotkey notes: +Brightness hotkey notes +^^^^^^^^^^^^^^^^^^^^^^^ Don't mess with the brightness hotkeys in a Thinkpad. If you want notifications for OSD, use the sysfs backlight class event support. @@ -579,7 +607,9 @@ Bluetooth --------- procfs: /proc/acpi/ibm/bluetooth + sysfs device attribute: bluetooth_enable (deprecated) + sysfs rfkill class: switch "tpacpi_bluetooth_sw" This feature shows the presence and current state of a ThinkPad @@ -588,22 +618,25 @@ Bluetooth device in the internal ThinkPad CDC slot. If the ThinkPad supports it, the Bluetooth state is stored in NVRAM, so it is kept across reboots and power-off. -Procfs notes: +Procfs notes +^^^^^^^^^^^^ -If Bluetooth is installed, the following commands can be used: +If Bluetooth is installed, the following commands can be used:: echo enable > /proc/acpi/ibm/bluetooth echo disable > /proc/acpi/ibm/bluetooth -Sysfs notes: +Sysfs notes +^^^^^^^^^^^ If the Bluetooth CDC card is installed, it can be enabled / disabled through the "bluetooth_enable" thinkpad-acpi device attribute, and its current status can also be queried. enable: - 0: disables Bluetooth / Bluetooth is disabled - 1: enables Bluetooth / Bluetooth is enabled. + + - 0: disables Bluetooth / Bluetooth is disabled + - 1: enables Bluetooth / Bluetooth is enabled. Note: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year @@ -617,7 +650,7 @@ Video output control -- /proc/acpi/ibm/video -------------------------------------------- This feature allows control over the devices used for video output - -LCD, CRT or DVI (if available). The following commands are available: +LCD, CRT or DVI (if available). The following commands are available:: echo lcd_enable > /proc/acpi/ibm/video echo lcd_disable > /proc/acpi/ibm/video @@ -630,9 +663,10 @@ LCD, CRT or DVI (if available). The following commands are available: echo expand_toggle > /proc/acpi/ibm/video echo video_switch > /proc/acpi/ibm/video -NOTE: Access to this feature is restricted to processes owning the -CAP_SYS_ADMIN capability for safety reasons, as it can interact badly -enough with some versions of X.org to crash it. +NOTE: + Access to this feature is restricted to processes owning the + CAP_SYS_ADMIN capability for safety reasons, as it can interact badly + enough with some versions of X.org to crash it. Each video output device can be enabled or disabled individually. Reading /proc/acpi/ibm/video shows the status of each device. @@ -665,18 +699,21 @@ ThinkLight control ------------------ procfs: /proc/acpi/ibm/light + sysfs attributes: as per LED class, for the "tpacpi::thinklight" LED -procfs notes: +procfs notes +^^^^^^^^^^^^ The ThinkLight status can be read and set through the procfs interface. A few models which do not make the status available will show the ThinkLight -status as "unknown". The available commands are: +status as "unknown". The available commands are:: echo on > /proc/acpi/ibm/light echo off > /proc/acpi/ibm/light -sysfs notes: +sysfs notes +^^^^^^^^^^^ The ThinkLight sysfs interface is documented by the LED class documentation, in Documentation/leds/leds-class.rst. The ThinkLight LED name @@ -691,6 +728,7 @@ CMOS/UCMS control ----------------- procfs: /proc/acpi/ibm/cmos + sysfs device attribute: cmos_command This feature is mostly used internally by the ACPI firmware to keep the legacy @@ -707,16 +745,16 @@ The range of valid cmos command numbers is 0 to 21, but not all have an effect and the behavior varies from model to model. Here is the behavior on the X40 (tpb is the ThinkPad Buttons utility): - 0 - Related to "Volume down" key press - 1 - Related to "Volume up" key press - 2 - Related to "Mute on" key press - 3 - Related to "Access IBM" key press - 4 - Related to "LCD brightness up" key press - 5 - Related to "LCD brightness down" key press - 11 - Related to "toggle screen expansion" key press/function - 12 - Related to "ThinkLight on" - 13 - Related to "ThinkLight off" - 14 - Related to "ThinkLight" key press (toggle ThinkLight) + - 0 - Related to "Volume down" key press + - 1 - Related to "Volume up" key press + - 2 - Related to "Mute on" key press + - 3 - Related to "Access IBM" key press + - 4 - Related to "LCD brightness up" key press + - 5 - Related to "LCD brightness down" key press + - 11 - Related to "toggle screen expansion" key press/function + - 12 - Related to "ThinkLight on" + - 13 - Related to "ThinkLight off" + - 14 - Related to "ThinkLight" key press (toggle ThinkLight) The cmos command interface is prone to firmware split-brain problems, as in newer ThinkPads it is just a compatibility layer. Do not use it, it is @@ -748,9 +786,10 @@ are aware of the consequences are welcome to enabling it. Audio mute and microphone mute LEDs are supported, but currently not visible to userspace. They are used by the snd-hda-intel audio driver. -procfs notes: +procfs notes +^^^^^^^^^^^^ -The available commands are: +The available commands are:: echo '<LED number> on' >/proc/acpi/ibm/led echo '<LED number> off' >/proc/acpi/ibm/led @@ -760,23 +799,24 @@ The <LED number> range is 0 to 15. The set of LEDs that can be controlled varies from model to model. Here is the common ThinkPad mapping: - 0 - power - 1 - battery (orange) - 2 - battery (green) - 3 - UltraBase/dock - 4 - UltraBay - 5 - UltraBase battery slot - 6 - (unknown) - 7 - standby - 8 - dock status 1 - 9 - dock status 2 - 10, 11 - (unknown) - 12 - thinkvantage - 13, 14, 15 - (unknown) + - 0 - power + - 1 - battery (orange) + - 2 - battery (green) + - 3 - UltraBase/dock + - 4 - UltraBay + - 5 - UltraBase battery slot + - 6 - (unknown) + - 7 - standby + - 8 - dock status 1 + - 9 - dock status 2 + - 10, 11 - (unknown) + - 12 - thinkvantage + - 13, 14, 15 - (unknown) All of the above can be turned on and off and can be made to blink. -sysfs notes: +sysfs notes +^^^^^^^^^^^ The ThinkPad LED sysfs interface is described in detail by the LED class documentation, in Documentation/leds/leds-class.rst. @@ -815,7 +855,7 @@ The BEEP method is used internally by the ACPI firmware to provide audible alerts in various situations. This feature allows the same sounds to be triggered manually. -The commands are non-negative integer numbers: +The commands are non-negative integer numbers:: echo <number> >/proc/acpi/ibm/beep @@ -823,25 +863,26 @@ The valid <number> range is 0 to 17. Not all numbers trigger sounds and the sounds vary from model to model. Here is the behavior on the X40: - 0 - stop a sound in progress (but use 17 to stop 16) - 2 - two beeps, pause, third beep ("low battery") - 3 - single beep - 4 - high, followed by low-pitched beep ("unable") - 5 - single beep - 6 - very high, followed by high-pitched beep ("AC/DC") - 7 - high-pitched beep - 9 - three short beeps - 10 - very long beep - 12 - low-pitched beep - 15 - three high-pitched beeps repeating constantly, stop with 0 - 16 - one medium-pitched beep repeating constantly, stop with 17 - 17 - stop 16 + - 0 - stop a sound in progress (but use 17 to stop 16) + - 2 - two beeps, pause, third beep ("low battery") + - 3 - single beep + - 4 - high, followed by low-pitched beep ("unable") + - 5 - single beep + - 6 - very high, followed by high-pitched beep ("AC/DC") + - 7 - high-pitched beep + - 9 - three short beeps + - 10 - very long beep + - 12 - low-pitched beep + - 15 - three high-pitched beeps repeating constantly, stop with 0 + - 16 - one medium-pitched beep repeating constantly, stop with 17 + - 17 - stop 16 Temperature sensors ------------------- procfs: /proc/acpi/ibm/thermal + sysfs device attributes: (hwmon "thinkpad") temp*_input Most ThinkPads include six or more separate temperature sensors but only @@ -850,10 +891,14 @@ feature shows readings from up to eight different sensors on older ThinkPads, and up to sixteen different sensors on newer ThinkPads. For example, on the X40, a typical output may be: -temperatures: 42 42 45 41 36 -128 33 -128 + +temperatures: + 42 42 45 41 36 -128 33 -128 On the T43/p, a typical output may be: -temperatures: 48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128 + +temperatures: + 48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128 The mapping of thermal sensors to physical locations varies depending on system-board model (and thus, on ThinkPad model). @@ -863,46 +908,53 @@ tries to track down these locations for various models. Most (newer?) models seem to follow this pattern: -1: CPU -2: (depends on model) -3: (depends on model) -4: GPU -5: Main battery: main sensor -6: Bay battery: main sensor -7: Main battery: secondary sensor -8: Bay battery: secondary sensor -9-15: (depends on model) +- 1: CPU +- 2: (depends on model) +- 3: (depends on model) +- 4: GPU +- 5: Main battery: main sensor +- 6: Bay battery: main sensor +- 7: Main battery: secondary sensor +- 8: Bay battery: secondary sensor +- 9-15: (depends on model) For the R51 (source: Thomas Gruber): -2: Mini-PCI -3: Internal HDD + +- 2: Mini-PCI +- 3: Internal HDD For the T43, T43/p (source: Shmidoax/Thinkwiki.org) http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p -2: System board, left side (near PCMCIA slot), reported as HDAPS temp -3: PCMCIA slot -9: MCH (northbridge) to DRAM Bus -10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI - card, under touchpad -11: Power regulator, underside of system board, below F2 key + +- 2: System board, left side (near PCMCIA slot), reported as HDAPS temp +- 3: PCMCIA slot +- 9: MCH (northbridge) to DRAM Bus +- 10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI + card, under touchpad +- 11: Power regulator, underside of system board, below F2 key The A31 has a very atypical layout for the thermal sensors (source: Milos Popovic, http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31) -1: CPU -2: Main Battery: main sensor -3: Power Converter -4: Bay Battery: main sensor -5: MCH (northbridge) -6: PCMCIA/ambient -7: Main Battery: secondary sensor -8: Bay Battery: secondary sensor +- 1: CPU +- 2: Main Battery: main sensor +- 3: Power Converter +- 4: Bay Battery: main sensor +- 5: MCH (northbridge) +- 6: PCMCIA/ambient +- 7: Main Battery: secondary sensor +- 8: Bay Battery: secondary sensor + + +Procfs notes +^^^^^^^^^^^^ -Procfs notes: Readings from sensors that are not available return -128. No commands can be written to this file. -Sysfs notes: +Sysfs notes +^^^^^^^^^^^ + Sensors that are not available return the ENXIO error. This status may change at runtime, as there are hotplug thermal sensors, like those inside the batteries and docks. @@ -921,6 +973,7 @@ ftp://ftp.suse.com/pub/people/trenn/sources/ec Use it to determine the register holding the fan speed on some models. To do that, do the following: + - make sure the battery is fully charged - make sure the fan is running - use above mentioned tool to read out the EC @@ -941,6 +994,7 @@ LCD brightness control ---------------------- procfs: /proc/acpi/ibm/brightness + sysfs backlight device "thinkpad_screen" This feature allows software control of the LCD brightness on ThinkPad @@ -985,15 +1039,17 @@ brightness_enable=0 forces it to be disabled. brightness_enable=1 forces it to be enabled when available, even if the standard ACPI interface is also available. -Procfs notes: +Procfs notes +^^^^^^^^^^^^ - The available commands are: +The available commands are:: echo up >/proc/acpi/ibm/brightness echo down >/proc/acpi/ibm/brightness echo 'level <level>' >/proc/acpi/ibm/brightness -Sysfs notes: +Sysfs notes +^^^^^^^^^^^ The interface is implemented through the backlight sysfs class, which is poorly documented at this time. @@ -1038,6 +1094,7 @@ Volume control (Console Audio control) -------------------------------------- procfs: /proc/acpi/ibm/volume + ALSA: "ThinkPad Console Audio Control", default ID: "ThinkPadEC" NOTE: by default, the volume control interface operates in read-only @@ -1053,7 +1110,8 @@ Software volume control should be done only in the main AC97/HDA mixer. -About the ThinkPad Console Audio control: +About the ThinkPad Console Audio control +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ThinkPads have a built-in amplifier and muting circuit that drives the console headphone and speakers. This circuit is after the main AC97 @@ -1092,13 +1150,14 @@ normal key presses to the operating system (thinkpad-acpi is not involved). -The ThinkPad-ACPI volume control: +The ThinkPad-ACPI volume control +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The preferred way to interact with the Console Audio control is the ALSA interface. The legacy procfs interface allows one to read the current state, -and if volume control is enabled, accepts the following commands: +and if volume control is enabled, accepts the following commands:: echo up >/proc/acpi/ibm/volume echo down >/proc/acpi/ibm/volume @@ -1137,13 +1196,15 @@ Fan control and monitoring: fan speed, fan enable/disable --------------------------------------------------------- procfs: /proc/acpi/ibm/fan -sysfs device attributes: (hwmon "thinkpad") fan1_input, pwm1, - pwm1_enable, fan2_input + +sysfs device attributes: (hwmon "thinkpad") fan1_input, pwm1, pwm1_enable, fan2_input + sysfs hwmon driver attributes: fan_watchdog -NOTE NOTE NOTE: fan control operations are disabled by default for -safety reasons. To enable them, the module parameter "fan_control=1" -must be given to thinkpad-acpi. +NOTE NOTE NOTE: + fan control operations are disabled by default for + safety reasons. To enable them, the module parameter "fan_control=1" + must be given to thinkpad-acpi. This feature attempts to show the current fan speed, control mode and other fan data that might be available. The speed is read directly @@ -1154,7 +1215,8 @@ value on other models. Some Lenovo ThinkPads support a secondary fan. This fan cannot be controlled separately, it shares the main fan control. -Fan levels: +Fan levels +^^^^^^^^^^ Most ThinkPad fans work in "levels" at the firmware interface. Level 0 stops the fan. The higher the level, the higher the fan speed, although @@ -1209,9 +1271,10 @@ therefore, not suitable to protect against fan mode changes made through means other than the "enable", "disable", and "level" procfs fan commands, or the hwmon fan control sysfs interface. -Procfs notes: +Procfs notes +^^^^^^^^^^^^ -The fan may be enabled or disabled with the following commands: +The fan may be enabled or disabled with the following commands:: echo enable >/proc/acpi/ibm/fan echo disable >/proc/acpi/ibm/fan @@ -1219,7 +1282,7 @@ The fan may be enabled or disabled with the following commands: Placing a fan on level 0 is the same as disabling it. Enabling a fan will try to place it in a safe level if it is too slow or disabled. -The fan level can be controlled with the command: +The fan level can be controlled with the command:: echo 'level <level>' > /proc/acpi/ibm/fan @@ -1231,7 +1294,7 @@ compatibility. On the X31 and X40 (and ONLY on those models), the fan speed can be controlled to a certain degree. Once the fan is running, it can be -forced to run faster or slower with the following command: +forced to run faster or slower with the following command:: echo 'speed <speed>' > /proc/acpi/ibm/fan @@ -1241,13 +1304,14 @@ effect or the fan speed eventually settles somewhere in that range. The fan cannot be stopped or started with this command. This functionality is incomplete, and not available through the sysfs interface. -To program the safety watchdog, use the "watchdog" command. +To program the safety watchdog, use the "watchdog" command:: echo 'watchdog <interval in seconds>' > /proc/acpi/ibm/fan If you want to disable the watchdog, use 0 as the interval. -Sysfs notes: +Sysfs notes +^^^^^^^^^^^ The sysfs interface follows the hwmon subsystem guidelines for the most part, and the exception is the fan safety watchdog. @@ -1261,10 +1325,10 @@ to the firmware). Features not yet implemented by the driver return ENOSYS. hwmon device attribute pwm1_enable: - 0: PWM offline (fan is set to full-speed mode) - 1: Manual PWM control (use pwm1 to set fan level) - 2: Hardware PWM control (EC "auto" mode) - 3: reserved (Software PWM control, not implemented yet) + - 0: PWM offline (fan is set to full-speed mode) + - 1: Manual PWM control (use pwm1 to set fan level) + - 2: Hardware PWM control (EC "auto" mode) + - 3: reserved (Software PWM control, not implemented yet) Modes 0 and 2 are not supported by all ThinkPads, and the driver is not always able to detect this. If it does know a @@ -1304,7 +1368,9 @@ WAN --- procfs: /proc/acpi/ibm/wan + sysfs device attribute: wwan_enable (deprecated) + sysfs rfkill class: switch "tpacpi_wwan_sw" This feature shows the presence and current state of the built-in @@ -1316,22 +1382,24 @@ so it is kept across reboots and power-off. It was tested on a Lenovo ThinkPad X60. It should probably work on other ThinkPad models which come with this module installed. -Procfs notes: +Procfs notes +^^^^^^^^^^^^ -If the W-WAN card is installed, the following commands can be used: +If the W-WAN card is installed, the following commands can be used:: echo enable > /proc/acpi/ibm/wan echo disable > /proc/acpi/ibm/wan -Sysfs notes: +Sysfs notes +^^^^^^^^^^^ If the W-WAN card is installed, it can be enabled / disabled through the "wwan_enable" thinkpad-acpi device attribute, and its current status can also be queried. enable: - 0: disables WWAN card / WWAN card is disabled - 1: enables WWAN card / WWAN card is enabled. + - 0: disables WWAN card / WWAN card is disabled + - 1: enables WWAN card / WWAN card is enabled. Note: this interface has been superseded by the generic rfkill class. It has been deprecated, and it will be removed in year @@ -1354,7 +1422,8 @@ sysfs rfkill class: switch "tpacpi_uwb_sw" This feature exports an rfkill controller for the UWB device, if one is present and enabled in the BIOS. -Sysfs notes: +Sysfs notes +^^^^^^^^^^^ rfkill controller switch "tpacpi_uwb_sw": refer to Documentation/rfkill.txt for details. @@ -1368,11 +1437,11 @@ This sysfs attribute controls the keyboard "face" that will be shown on the Lenovo X1 Carbon 2nd gen (2014)'s adaptive keyboard. The value can be read and set. -1 = Home mode -2 = Web-browser mode -3 = Web-conference mode -4 = Function mode -5 = Layflat mode +- 1 = Home mode +- 2 = Web-browser mode +- 3 = Web-conference mode +- 4 = Function mode +- 5 = Layflat mode For more details about which buttons will appear depending on the mode, please review the laptop's user guide: @@ -1382,13 +1451,13 @@ Multiple Commands, Module Parameters ------------------------------------ Multiple commands can be written to the proc files in one shot by -separating them with commas, for example: +separating them with commas, for example:: echo enable,0xffff > /proc/acpi/ibm/hotkey echo lcd_disable,crt_enable > /proc/acpi/ibm/video Commands can also be specified when loading the thinkpad-acpi module, -for example: +for example:: modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable @@ -1397,14 +1466,16 @@ Enabling debugging output ------------------------- The module takes a debug parameter which can be used to selectively -enable various classes of debugging output, for example: +enable various classes of debugging output, for example:: modprobe thinkpad_acpi debug=0xffff will enable all debugging output classes. It takes a bitmask, so to enable more than one output class, just add their values. + ============= ====================================== Debug bitmask Description + ============= ====================================== 0x8000 Disclose PID of userspace programs accessing some functions of the driver 0x0001 Initialization and probing @@ -1415,6 +1486,7 @@ to enable more than one output class, just add their values. 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. @@ -1432,8 +1504,10 @@ the module parameter force_load=1. Regardless of whether this works or not, please contact ibm-acpi-devel@lists.sourceforge.net with a report. -Sysfs interface changelog: +Sysfs interface changelog +^^^^^^^^^^^^^^^^^^^^^^^^^ +========= =============================================================== 0x000100: Initial sysfs support, as a single platform driver and device. 0x000200: Hot key support for 32 hot keys, and radio slider switch @@ -1485,3 +1559,4 @@ Sysfs interface changelog: 0x030000: Thermal and fan sysfs attributes were moved to the hwmon device instead of being attached to the backing platform device. +========= =============================================================== diff --git a/Documentation/laptops/toshiba_haps.txt b/Documentation/laptops/toshiba_haps.rst index 0c1d88dedbde..11dfc428c080 100644 --- a/Documentation/laptops/toshiba_haps.txt +++ b/Documentation/laptops/toshiba_haps.rst @@ -1,18 +1,19 @@ -Kernel driver toshiba_haps +==================================== Toshiba HDD Active Protection Sensor ==================================== +Kernel driver: toshiba_haps + Author: Azael Avalos <coproscefalo@gmail.com> -0. Contents ------------ +.. 0. Contents -1. Description -2. Interface -3. Accelerometer axes -4. Supported devices -5. Usage + 1. Description + 2. Interface + 3. Accelerometer axes + 4. Supported devices + 5. Usage 1. Description @@ -32,17 +33,20 @@ file to set the desired protection level or sensor sensibility. ------------ This device comes with 3 methods: -_STA - Checks existence of the device, returning Zero if the device does not + +==== ===================================================================== +_STA Checks existence of the device, returning Zero if the device does not exists or is not supported. -PTLV - Sets the desired protection level. -RSSS - Shuts down the HDD protection interface for a few seconds, +PTLV Sets the desired protection level. +RSSS Shuts down the HDD protection interface for a few seconds, then restores normal operation. +==== ===================================================================== Note: -The presence of Solid State Drives (SSD) can make this driver to fail loading, -given the fact that such drives have no movable parts, and thus, not requiring -any "protection" as well as failing during the evaluation of the _STA method -found under this device. + The presence of Solid State Drives (SSD) can make this driver to fail loading, + given the fact that such drives have no movable parts, and thus, not requiring + any "protection" as well as failing during the evaluation of the _STA method + found under this device. 3. Accelerometer axes @@ -66,11 +70,18 @@ conventional HDD and not only SSD, or a combination of both HDD and SSD. -------- The sysfs files under /sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS620A:00/ are: -protection_level - The protection_level is readable and writeable, and + +================ ============================================================ +protection_level The protection_level is readable and writeable, and provides a way to let userspace query the current protection level, as well as set the desired protection level, the available protection levels are: - 0 - Disabled | 1 - Low | 2 - Medium | 3 - High -reset_protection - The reset_protection entry is writeable only, being "1" + + ============ ======= ========== ======== + 0 - Disabled 1 - Low 2 - Medium 3 - High + ============ ======= ========== ======== + +reset_protection The reset_protection entry is writeable only, being "1" the only parameter it accepts, it is used to trigger a reset of the protection interface. +================ ============================================================ |