Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[wrt350n-kernel.git] / Documentation / laptops / thinkpad-acpi.txt
blob45c67f9ac8dbc51cc3ea39149f7c522d39f4b4cf
1                      ThinkPad ACPI Extras Driver
3                             Version 0.19
4                          January 06th, 2008
6                Borislav Deianov <borislav@users.sf.net>
7              Henrique de Moraes Holschuh <hmh@hmh.eng.br>
8                       http://ibm-acpi.sf.net/
11 This is a Linux driver for the IBM and Lenovo ThinkPad laptops. It
12 supports various features of these laptops which are accessible
13 through the ACPI and ACPI EC framework, but not otherwise fully
14 supported by the generic Linux ACPI drivers.
16 This driver used to be named ibm-acpi until kernel 2.6.21 and release
17 0.13-20070314.  It used to be in the drivers/acpi tree, but it was
18 moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel
19 2.6.22, and release 0.14.
22 Status
23 ------
25 The features currently supported are the following (see below for
26 detailed description):
28         - Fn key combinations
29         - Bluetooth enable and disable
30         - video output switching, expansion control
31         - ThinkLight on and off
32         - limited docking and undocking
33         - UltraBay eject
34         - CMOS control
35         - LED control
36         - ACPI sounds
37         - temperature sensors
38         - Experimental: embedded controller register dump
39         - LCD brightness control
40         - Volume control
41         - Fan control and monitoring: fan speed, fan enable/disable
42         - Experimental: WAN enable and disable
44 A compatibility table by model and feature is maintained on the web
45 site, http://ibm-acpi.sf.net/. I appreciate any success or failure
46 reports, especially if they add to or correct the compatibility table.
47 Please include the following information in your report:
49         - ThinkPad model name
50         - a copy of your DSDT, from /proc/acpi/dsdt
51         - a copy of the output of dmidecode, with serial numbers
52           and UUIDs masked off
53         - which driver features work and which don't
54         - the observed behavior of non-working features
56 Any other comments or patches are also more than welcome.
59 Installation
60 ------------
62 If you are compiling this driver as included in the Linux kernel
63 sources, simply enable the CONFIG_THINKPAD_ACPI option, and optionally
64 enable the CONFIG_THINKPAD_ACPI_BAY option if you want the
65 thinkpad-specific bay functionality.
67 Features
68 --------
70 The driver exports two different interfaces to userspace, which can be
71 used to access the features it provides.  One is a legacy procfs-based
72 interface, which will be removed at some time in the distant future.
73 The other is a new sysfs-based interface which is not complete yet.
75 The procfs interface creates the /proc/acpi/ibm directory.  There is a
76 file under that directory for each feature it supports.  The procfs
77 interface is mostly frozen, and will change very little if at all: it
78 will not be extended to add any new functionality in the driver, instead
79 all new functionality will be implemented on the sysfs interface.
81 The sysfs interface tries to blend in the generic Linux sysfs subsystems
82 and classes as much as possible.  Since some of these subsystems are not
83 yet ready or stabilized, it is expected that this interface will change,
84 and any and all userspace programs must deal with it.
87 Notes about the sysfs interface:
89 Unlike what was done with the procfs interface, correctness when talking
90 to the sysfs interfaces will be enforced, as will correctness in the
91 thinkpad-acpi's implementation of sysfs interfaces.
93 Also, any bugs in the thinkpad-acpi sysfs driver code or in the
94 thinkpad-acpi's implementation of the sysfs interfaces will be fixed for
95 maximum correctness, even if that means changing an interface in
96 non-compatible ways.  As these interfaces mature both in the kernel and
97 in thinkpad-acpi, such changes should become quite rare.
99 Applications interfacing to the thinkpad-acpi sysfs interfaces must
100 follow all sysfs guidelines and correctly process all errors (the sysfs
101 interface makes extensive use of errors).  File descriptors and open /
102 close operations to the sysfs inodes must also be properly implemented.
104 The version of thinkpad-acpi's sysfs interface is exported by the driver
105 as a driver attribute (see below).
107 Sysfs driver attributes are on the driver's sysfs attribute space,
108 for 2.6.23 this is /sys/bus/platform/drivers/thinkpad_acpi/ and
109 /sys/bus/platform/drivers/thinkpad_hwmon/
111 Sysfs device attributes are on the thinkpad_acpi device sysfs attribute
112 space, for 2.6.23 this is /sys/devices/platform/thinkpad_acpi/.
114 Sysfs device attributes for the sensors and fan are on the
115 thinkpad_hwmon device's sysfs attribute space, but you should locate it
116 looking for a hwmon device with the name attribute of "thinkpad".
118 Driver version
119 --------------
121 procfs: /proc/acpi/ibm/driver
122 sysfs driver attribute: version
124 The driver name and version. No commands can be written to this file.
126 Sysfs interface version
127 -----------------------
129 sysfs driver attribute: interface_version
131 Version of the thinkpad-acpi sysfs interface, as an unsigned long
132 (output in hex format: 0xAAAABBCC), where:
133         AAAA - major revision
134         BB - minor revision
135         CC - bugfix revision
137 The sysfs interface version changelog for the driver can be found at the
138 end of this document.  Changes to the sysfs interface done by the kernel
139 subsystems are not documented here, nor are they tracked by this
140 attribute.
142 Changes to the thinkpad-acpi sysfs interface are only considered
143 non-experimental when they are submitted to Linux mainline, at which
144 point the changes in this interface are documented and interface_version
145 may be updated.  If you are using any thinkpad-acpi features not yet
146 sent to mainline for merging, you do so on your own risk: these features
147 may disappear, or be implemented in a different and incompatible way by
148 the time they are merged in Linux mainline.
150 Changes that are backwards-compatible by nature (e.g. the addition of
151 attributes that do not change the way the other attributes work) do not
152 always warrant an update of interface_version.  Therefore, one must
153 expect that an attribute might not be there, and deal with it properly
154 (an attribute not being there *is* a valid way to make it clear that a
155 feature is not available in sysfs).
157 Hot keys
158 --------
160 procfs: /proc/acpi/ibm/hotkey
161 sysfs device attribute: hotkey_*
163 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
164 In a ThinkPad, the ACPI HKEY handler is responsible for comunicating
165 =======
166 In a ThinkPad, the ACPI HKEY handler is responsible for communicating
167 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
168 some important events and also keyboard hot key presses to the operating
169 system.  Enabling the hotkey functionality of thinkpad-acpi signals the
170 firmware that such a driver is present, and modifies how the ThinkPad
171 firmware will behave in many situations.
173 The driver enables the hot key feature automatically when loaded.  The
174 feature can later be disabled and enabled back at runtime.  The driver
175 will also restore the hot key feature to its previous state and mask
176 when it is unloaded.
178 When the hotkey feature is enabled and the hot key mask is set (see
179 below), the driver will report HKEY events in the following format:
181         ibm/hotkey HKEY 00000080 0000xxxx
183 Some of these events refer to hot key presses, but not all.
185 The driver will generate events over the input layer for hot keys and
186 radio switches, and over the ACPI netlink layer for other events.  The
187 input layer support accepts the standard IOCTLs to remap the keycodes
188 assigned to each hot key.
190 The hot key bit mask allows some control over which hot keys generate
191 events.  If a key is "masked" (bit set to 0 in the mask), the firmware
192 will handle it.  If it is "unmasked", it signals the firmware that
193 thinkpad-acpi would prefer to handle it, if the firmware would be so
194 kind to allow it (and it often doesn't!).
196 Not all bits in the mask can be modified.  Not all bits that can be
197 modified do anything.  Not all hot keys can be individually controlled
198 by the mask.  Some models do not support the mask at all, and in those
199 models, hot keys cannot be controlled individually.  The behaviour of
200 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
201 the mask is, therefore, higly dependent on the ThinkPad model.
202 =======
203 the mask is, therefore, highly dependent on the ThinkPad model.
204 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
206 Note that unmasking some keys prevents their default behavior.  For
207 example, if Fn+F5 is unmasked, that key will no longer enable/disable
208 Bluetooth by itself.
210 Note also that not all Fn key combinations are supported through ACPI.
211 For example, on the X40, the brightness, volume and "Access IBM" buttons
212 do not generate ACPI events even with this driver.  They *can* be used
213 through the "ThinkPad Buttons" utility, see http://www.nongnu.org/tpb/
215 procfs notes:
217 The following commands can be written to the /proc/acpi/ibm/hotkey file:
219         echo enable > /proc/acpi/ibm/hotkey -- enable the hot keys feature
220         echo disable > /proc/acpi/ibm/hotkey -- disable the hot keys feature
221         echo 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys
222         echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys
223         ... any other 8-hex-digit mask ...
224         echo reset > /proc/acpi/ibm/hotkey -- restore the original mask
226 The procfs interface does not support NVRAM polling control.  So as to
227 maintain maximum bug-to-bug compatibility, it does not report any masks,
228 nor does it allow one to manipulate the hot key mask when the firmware
229 does not support masks at all, even if NVRAM polling is in use.
231 sysfs notes:
233         hotkey_bios_enabled:
234                 Returns the status of the hot keys feature when
235                 thinkpad-acpi was loaded.  Upon module unload, the hot
236                 key feature status will be restored to this value.
238                 0: hot keys were disabled
239                 1: hot keys were enabled (unusual)
241         hotkey_bios_mask:
242                 Returns the hot keys mask when thinkpad-acpi was loaded.
243                 Upon module unload, the hot keys mask will be restored
244                 to this value.
246         hotkey_enable:
247                 Enables/disables the hot keys feature in the ACPI
248                 firmware, and reports current status of the hot keys
249                 feature.  Has no effect on the NVRAM hot key polling
250                 functionality.
252                 0: disables the hot keys feature / feature disabled
253                 1: enables the hot keys feature / feature enabled
255         hotkey_mask:
256                 bit mask to enable driver-handling (and depending on
257                 the firmware, ACPI event generation) for each hot key
258                 (see above).  Returns the current status of the hot keys
259                 mask, and allows one to modify it.
261                 Note: when NVRAM polling is active, the firmware mask
262                 will be different from the value returned by
263                 hotkey_mask.  The driver will retain enabled bits for
264                 hotkeys that are under NVRAM polling even if the
265                 firmware refuses them, and will not set these bits on
266                 the firmware hot key mask.
268         hotkey_all_mask:
269                 bit mask that should enable event reporting for all
270                 supported hot keys, when echoed to hotkey_mask above.
271                 Unless you know which events need to be handled
272                 passively (because the firmware *will* handle them
273                 anyway), do *not* use hotkey_all_mask.  Use
274                 hotkey_recommended_mask, instead. You have been warned.
276         hotkey_recommended_mask:
277                 bit mask that should enable event reporting for all
278                 supported hot keys, except those which are always
279                 handled by the firmware anyway.  Echo it to
280                 hotkey_mask above, to use.
282         hotkey_source_mask:
283                 bit mask that selects which hot keys will the driver
284                 poll the NVRAM for.  This is auto-detected by the driver
285                 based on the capabilities reported by the ACPI firmware,
286                 but it can be overridden at runtime.
288                 Hot keys whose bits are set in both hotkey_source_mask
289                 and also on hotkey_mask are polled for in NVRAM.  Only a
290                 few hot keys are available through CMOS NVRAM polling.
292                 Warning: when in NVRAM mode, the volume up/down/mute
293                 keys are synthesized according to changes in the mixer,
294                 so you have to use volume up or volume down to unmute,
295                 as per the ThinkPad volume mixer user interface.  When
296                 in ACPI event mode, volume up/down/mute are reported as
297                 separate events, but this behaviour may be corrected in
298                 future releases of this driver, in which case the
299 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
300                 ThinkPad volume mixer user interface semanthics will be
301 =======
302                 ThinkPad volume mixer user interface semantics will be
303 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
304                 enforced.
306         hotkey_poll_freq:
307                 frequency in Hz for hot key polling. It must be between
308                 0 and 25 Hz.  Polling is only carried out when strictly
309                 needed.
311                 Setting hotkey_poll_freq to zero disables polling, and
312                 will cause hot key presses that require NVRAM polling
313                 to never be reported.
315                 Setting hotkey_poll_freq too low will cause repeated
316                 pressings of the same hot key to be misreported as a
317                 single key press, or to not even be detected at all.
318                 The recommended polling frequency is 10Hz.
320         hotkey_radio_sw:
321 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
322                 if the ThinkPad has a hardware radio switch, this
323 =======
324                 If the ThinkPad has a hardware radio switch, this
325 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
326                 attribute will read 0 if the switch is in the "radios
327 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
328                 disabled" postition, and 1 if the switch is in the
329 =======
330                 disabled" position, and 1 if the switch is in the
331 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
332                 "radios enabled" position.
334                 This attribute has poll()/select() support.
336 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
337 =======
338         hotkey_tablet_mode:
339                 If the ThinkPad has tablet capabilities, this attribute
340                 will read 0 if the ThinkPad is in normal mode, and
341                 1 if the ThinkPad is in tablet mode.
343                 This attribute has poll()/select() support.
345 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
346         hotkey_report_mode:
347                 Returns the state of the procfs ACPI event report mode
348                 filter for hot keys.  If it is set to 1 (the default),
349                 all hot key presses are reported both through the input
350                 layer and also as ACPI events through procfs (but not
351                 through netlink).  If it is set to 2, hot key presses
352                 are reported only through the input layer.
354                 This attribute is read-only in kernels 2.6.23 or later,
355                 and read-write on earlier kernels.
357                 May return -EPERM (write access locked out by module
358                 parameter) or -EACCES (read-only).
360         wakeup_reason:
361                 Set to 1 if the system is waking up because the user
362                 requested a bay ejection.  Set to 2 if the system is
363                 waking up because the user requested the system to
364                 undock.  Set to zero for normal wake-ups or wake-ups
365                 due to unknown reasons.
367                 This attribute has poll()/select() support.
369         wakeup_hotunplug_complete:
370                 Set to 1 if the system was waken up because of an
371                 undock or bay ejection request, and that request
372 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
373                 was sucessfully completed.  At this point, it might
374 =======
375                 was successfully completed.  At this point, it might
376 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
377                 be useful to send the system back to sleep, at the
378                 user's choice.  Refer to HKEY events 0x4003 and
379                 0x3003, below.
381                 This attribute has poll()/select() support.
383 input layer notes:
385 A Hot key is mapped to a single input layer EV_KEY event, possibly
386 followed by an EV_MSC MSC_SCAN event that shall contain that key's scan
387 code.  An EV_SYN event will always be generated to mark the end of the
388 event block.
390 Do not use the EV_MSC MSC_SCAN events to process keys.  They are to be
391 used as a helper to remap keys, only.  They are particularly useful when
392 remapping KEY_UNKNOWN keys.
394 The events are available in an input device, with the following id:
396         Bus:            BUS_HOST
397         vendor:         0x1014 (PCI_VENDOR_ID_IBM)  or
398                         0x17aa (PCI_VENDOR_ID_LENOVO)
399         product:        0x5054 ("TP")
400         version:        0x4101
402 The version will have its LSB incremented if the keymap changes in a
403 backwards-compatible way.  The MSB shall always be 0x41 for this input
404 device.  If the MSB is not 0x41, do not use the device as described in
405 this section, as it is either something else (e.g. another input device
406 exported by a thinkpad driver, such as HDAPS) or its functionality has
407 been changed in a non-backwards compatible way.
409 Adding other event types for other functionalities shall be considered a
410 backwards-compatible change for this input device.
412 Thinkpad-acpi Hot Key event map (version 0x4101):
414 ACPI    Scan
415 event   code    Key             Notes
417 0x1001  0x00    FN+F1           -
418 0x1002  0x01    FN+F2           IBM: battery (rare)
419                                 Lenovo: Screen lock
421 0x1003  0x02    FN+F3           Many IBM models always report
422                                 this hot key, even with hot keys
423                                 disabled or with Fn+F3 masked
424                                 off
425                                 IBM: screen lock
426                                 Lenovo: battery
428 0x1004  0x03    FN+F4           Sleep button (ACPI sleep button
429 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
430                                 semanthics, i.e. sleep-to-RAM).
431 =======
432                                 semantics, i.e. sleep-to-RAM).
433 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
434                                 It is always generate some kind
435                                 of event, either the hot key
436                                 event or a ACPI sleep button
437                                 event. The firmware may
438                                 refuse to generate further FN+F4
439                                 key presses until a S3 or S4 ACPI
440                                 sleep cycle is performed or some
441                                 time passes.
443 0x1005  0x04    FN+F5           Radio.  Enables/disables
444 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
445                                 the internal BlueTooth hardware
446 =======
447                                 the internal Bluetooth hardware
448 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
449                                 and W-WAN card if left in control
450                                 of the firmware.  Does not affect
451                                 the WLAN card.
452                                 Should be used to turn on/off all
453 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
454                                 radios (bluetooth+W-WAN+WLAN),
455 =======
456                                 radios (Bluetooth+W-WAN+WLAN),
457 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
458                                 really.
460 0x1006  0x05    FN+F6           -
462 0x1007  0x06    FN+F7           Video output cycle.
463                                 Do you feel lucky today?
465 0x1008  0x07    FN+F8           IBM: toggle screen expand
466 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
467                                 Lenovo: configure ultranav
468 =======
469                                 Lenovo: configure UltraNav
470 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
472 0x1009  0x08    FN+F9           -
473         ..      ..              ..
474 0x100B  0x0A    FN+F11          -
476 0x100C  0x0B    FN+F12          Sleep to disk.  You are always
477                                 supposed to handle it yourself,
478                                 either through the ACPI event,
479                                 or through a hotkey event.
480                                 The firmware may refuse to
481                                 generate further FN+F4 key
482                                 press events until a S3 or S4
483                                 ACPI sleep cycle is performed,
484                                 or some time passes.
486 0x100D  0x0C    FN+BACKSPACE    -
487 0x100E  0x0D    FN+INSERT       -
488 0x100F  0x0E    FN+DELETE       -
490 0x1010  0x0F    FN+HOME         Brightness up.  This key is
491                                 always handled by the firmware
492                                 in IBM ThinkPads, even when
493                                 unmasked.  Just leave it alone.
494                                 For Lenovo ThinkPads with a new
495                                 BIOS, it has to be handled either
496                                 by the ACPI OSI, or by userspace.
497 0x1011  0x10    FN+END          Brightness down.  See brightness
498                                 up for details.
500 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
501 0x1012  0x11    FN+PGUP         Thinklight toggle.  This key is
502 =======
503 0x1012  0x11    FN+PGUP         ThinkLight toggle.  This key is
504 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
505                                 always handled by the firmware,
506                                 even when unmasked.
508 0x1013  0x12    FN+PGDOWN       -
510 0x1014  0x13    FN+SPACE        Zoom key
512 0x1015  0x14    VOLUME UP       Internal mixer volume up. This
513                                 key is always handled by the
514                                 firmware, even when unmasked.
515                                 NOTE: Lenovo seems to be changing
516                                 this.
517 0x1016  0x15    VOLUME DOWN     Internal mixer volume up. This
518                                 key is always handled by the
519                                 firmware, even when unmasked.
520                                 NOTE: Lenovo seems to be changing
521                                 this.
522 0x1017  0x16    MUTE            Mute internal mixer. This
523                                 key is always handled by the
524                                 firmware, even when unmasked.
526 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
527 0x1018  0x17    THINKPAD        Thinkpad/Access IBM/Lenovo key
528 =======
529 0x1018  0x17    THINKPAD        ThinkPad/Access IBM/Lenovo key
530 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
532 0x1019  0x18    unknown
533 ..      ..      ..
534 0x1020  0x1F    unknown
536 The ThinkPad firmware does not allow one to differentiate when most hot
537 keys are pressed or released (either that, or we don't know how to, yet).
538 For these keys, the driver generates a set of events for a key press and
539 immediately issues the same set of events for a key release.  It is
540 unknown by the driver if the ThinkPad firmware triggered these events on
541 hot key press or release, but the firmware will do it for either one, not
542 both.
544 If a key is mapped to KEY_RESERVED, it generates no input events at all.
545 If a key is mapped to KEY_UNKNOWN, it generates an input event that
546 includes an scan code.  If a key is mapped to anything else, it will
547 generate input device EV_KEY events.
549 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
550 =======
551 In addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW
552 events for switches:
554 SW_RADIO        T60 and later hardare rfkill rocker switch
555 SW_TABLET_MODE  Tablet ThinkPads HKEY events 0x5009 and 0x500A
557 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
558 Non hot-key ACPI HKEY event map:
559 0x5001          Lid closed
560 0x5002          Lid opened
561 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
562 =======
563 0x5009          Tablet swivel: switched to tablet mode
564 0x500A          Tablet swivel: switched to normal mode
565 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
566 0x7000          Radio Switch may have changed state
568 The above events are not propagated by the driver, except for legacy
569 compatibility purposes when hotkey_report_mode is set to 1.
571 0x2304          System is waking up from suspend to undock
572 0x2305          System is waking up from suspend to eject bay
573 0x2404          System is waking up from hibernation to undock
574 0x2405          System is waking up from hibernation to eject bay
576 The above events are never propagated by the driver.
578 0x3003          Bay ejection (see 0x2x05) complete, can sleep again
579 0x4003          Undocked (see 0x2x04), can sleep again
580 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
581 0x5009          Tablet swivel: switched to tablet mode
582 0x500A          Tablet swivel: switched to normal mode
583 0x500B          Tablet pen insterted into its storage bay
584 =======
585 0x500B          Tablet pen inserted into its storage bay
586 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
587 0x500C          Tablet pen removed from its storage bay
588 0x5010          Brightness level changed (newer Lenovo BIOSes)
590 The above events are propagated by the driver.
592 Compatibility notes:
594 ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never
595 supported the input layer, and sent events over the procfs ACPI event
596 interface.
598 To avoid sending duplicate events over the input layer and the ACPI
599 event interface, thinkpad-acpi 0.16 implements a module parameter
600 (hotkey_report_mode), and also a sysfs device attribute with the same
601 name.
603 Make no mistake here: userspace is expected to switch to using the input
604 layer interface of thinkpad-acpi, together with the ACPI netlink event
605 interface in kernels 2.6.23 and later, or with the ACPI procfs event
606 interface in kernels 2.6.22 and earlier.
608 If no hotkey_report_mode module parameter is specified (or it is set to
609 zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22
610 and earlier, also allows one to change the hotkey_report_mode through
611 sysfs.  In kernels 2.6.23 and later, where the netlink ACPI event
612 interface is available, hotkey_report_mode cannot be changed through
613 sysfs (it is read-only).
615 If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
616 be changed later through sysfs (any writes will return -EPERM to signal
617 that hotkey_report_mode was locked.  On 2.6.23 and later, where
618 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
619 hotkey_report_mode cannot be changed at all, writes will return -EACES).
620 =======
621 hotkey_report_mode cannot be changed at all, writes will return -EACCES).
622 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
624 hotkey_report_mode set to 1 makes the driver export through the procfs
625 ACPI event interface all hot key presses (which are *also* sent to the
626 input layer).  This is a legacy compatibility behaviour, and it is also
627 the default mode of operation for the driver.
629 hotkey_report_mode set to 2 makes the driver filter out the hot key
630 presses from the procfs ACPI event interface, so these events will only
631 be sent through the input layer.  Userspace that has been updated to use
632 the thinkpad-acpi input layer interface should set hotkey_report_mode to
635 Hot key press events are never sent to the ACPI netlink event interface.
636 Really up-to-date userspace under kernel 2.6.23 and later is to use the
637 netlink interface and the input layer interface, and don't bother at all
638 with hotkey_report_mode.
641 Bluetooth
642 ---------
644 procfs: /proc/acpi/ibm/bluetooth
645 sysfs device attribute: bluetooth_enable
647 This feature shows the presence and current state of a ThinkPad
648 Bluetooth device in the internal ThinkPad CDC slot.
650 Procfs notes:
652 If Bluetooth is installed, the following commands can be used:
654         echo enable > /proc/acpi/ibm/bluetooth
655         echo disable > /proc/acpi/ibm/bluetooth
657 Sysfs notes:
659         If the Bluetooth CDC card is installed, it can be enabled /
660         disabled through the "bluetooth_enable" thinkpad-acpi device
661         attribute, and its current status can also be queried.
663         enable:
664                 0: disables Bluetooth / Bluetooth is disabled
665                 1: enables Bluetooth / Bluetooth is enabled.
667 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
668         Note: this interface will be probably be superseeded by the
669 =======
670         Note: this interface will be probably be superseded by the
671 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
672         generic rfkill class, so it is NOT to be considered stable yet.
674 Video output control -- /proc/acpi/ibm/video
675 --------------------------------------------
677 This feature allows control over the devices used for video output -
678 LCD, CRT or DVI (if available). The following commands are available:
680         echo lcd_enable > /proc/acpi/ibm/video
681         echo lcd_disable > /proc/acpi/ibm/video
682         echo crt_enable > /proc/acpi/ibm/video
683         echo crt_disable > /proc/acpi/ibm/video
684         echo dvi_enable > /proc/acpi/ibm/video
685         echo dvi_disable > /proc/acpi/ibm/video
686         echo auto_enable > /proc/acpi/ibm/video
687         echo auto_disable > /proc/acpi/ibm/video
688         echo expand_toggle > /proc/acpi/ibm/video
689         echo video_switch > /proc/acpi/ibm/video
691 Each video output device can be enabled or disabled individually.
692 Reading /proc/acpi/ibm/video shows the status of each device.
694 Automatic video switching can be enabled or disabled.  When automatic
695 video switching is enabled, certain events (e.g. opening the lid,
696 docking or undocking) cause the video output device to change
697 automatically. While this can be useful, it also causes flickering
698 and, on the X40, video corruption. By disabling automatic switching,
699 the flickering or video corruption can be avoided.
701 The video_switch command cycles through the available video outputs
702 (it simulates the behavior of Fn-F7).
704 Video expansion can be toggled through this feature. This controls
705 whether the display is expanded to fill the entire LCD screen when a
706 mode with less than full resolution is used. Note that the current
707 video expansion status cannot be determined through this feature.
709 Note that on many models (particularly those using Radeon graphics
710 chips) the X driver configures the video card in a way which prevents
711 Fn-F7 from working. This also disables the video output switching
712 features of this driver, as it uses the same ACPI methods as
713 Fn-F7. Video switching on the console should still work.
715 UPDATE: There's now a patch for the X.org Radeon driver which
716 addresses this issue. Some people are reporting success with the patch
717 while others are still having problems. For more information:
719 https://bugs.freedesktop.org/show_bug.cgi?id=2000
721 ThinkLight control -- /proc/acpi/ibm/light
722 ------------------------------------------
724 The current status of the ThinkLight can be found in this file. A few
725 models which do not make the status available will show it as
726 "unknown". The available commands are:
728         echo on  > /proc/acpi/ibm/light
729         echo off > /proc/acpi/ibm/light
731 Docking / undocking -- /proc/acpi/ibm/dock
732 ------------------------------------------
734 Docking and undocking (e.g. with the X4 UltraBase) requires some
735 actions to be taken by the operating system to safely make or break
736 the electrical connections with the dock.
738 The docking feature of this driver generates the following ACPI events:
740         ibm/dock GDCK 00000003 00000001 -- eject request
741         ibm/dock GDCK 00000003 00000002 -- undocked
742         ibm/dock GDCK 00000000 00000003 -- docked
744 NOTE: These events will only be generated if the laptop was docked
745 when originally booted. This is due to the current lack of support for
746 hot plugging of devices in the Linux ACPI framework. If the laptop was
747 booted while not in the dock, the following message is shown in the
748 logs:
750         Mar 17 01:42:34 aero kernel: thinkpad_acpi: dock device not present
752 In this case, no dock-related events are generated but the dock and
753 undock commands described below still work. They can be executed
754 manually or triggered by Fn key combinations (see the example acpid
755 configuration files included in the driver tarball package available
756 on the web site).
758 When the eject request button on the dock is pressed, the first event
759 above is generated. The handler for this event should issue the
760 following command:
762         echo undock > /proc/acpi/ibm/dock
764 After the LED on the dock goes off, it is safe to eject the laptop.
765 Note: if you pressed this key by mistake, go ahead and eject the
766 laptop, then dock it back in. Otherwise, the dock may not function as
767 expected.
769 When the laptop is docked, the third event above is generated. The
770 handler for this event should issue the following command to fully
771 enable the dock:
773         echo dock > /proc/acpi/ibm/dock
775 The contents of the /proc/acpi/ibm/dock file shows the current status
776 of the dock, as provided by the ACPI framework.
778 The docking support in this driver does not take care of enabling or
779 disabling any other devices you may have attached to the dock. For
780 example, a CD drive plugged into the UltraBase needs to be disabled or
781 enabled separately. See the provided example acpid configuration files
782 for how this can be accomplished.
784 There is no support yet for PCI devices that may be attached to a
785 docking station, e.g. in the ThinkPad Dock II. The driver currently
786 does not recognize, enable or disable such devices. This means that
787 the only docking stations currently supported are the X-series
788 UltraBase docks and "dumb" port replicators like the Mini Dock (the
789 latter don't need any ACPI support, actually).
791 UltraBay eject -- /proc/acpi/ibm/bay
792 ------------------------------------
794 Inserting or ejecting an UltraBay device requires some actions to be
795 taken by the operating system to safely make or break the electrical
796 connections with the device.
798 This feature generates the following ACPI events:
800         ibm/bay MSTR 00000003 00000000 -- eject request
801         ibm/bay MSTR 00000001 00000000 -- eject lever inserted
803 NOTE: These events will only be generated if the UltraBay was present
804 when the laptop was originally booted (on the X series, the UltraBay
805 is in the dock, so it may not be present if the laptop was undocked).
806 This is due to the current lack of support for hot plugging of devices
807 in the Linux ACPI framework. If the laptop was booted without the
808 UltraBay, the following message is shown in the logs:
810         Mar 17 01:42:34 aero kernel: thinkpad_acpi: bay device not present
812 In this case, no bay-related events are generated but the eject
813 command described below still works. It can be executed manually or
814 triggered by a hot key combination.
816 Sliding the eject lever generates the first event shown above. The
817 handler for this event should take whatever actions are necessary to
818 shut down the device in the UltraBay (e.g. call idectl), then issue
819 the following command:
821         echo eject > /proc/acpi/ibm/bay
823 After the LED on the UltraBay goes off, it is safe to pull out the
824 device.
826 When the eject lever is inserted, the second event above is
827 generated. The handler for this event should take whatever actions are
828 necessary to enable the UltraBay device (e.g. call idectl).
830 The contents of the /proc/acpi/ibm/bay file shows the current status
831 of the UltraBay, as provided by the ACPI framework.
833 EXPERIMENTAL warm eject support on the 600e/x, A22p and A3x (To use
834 this feature, you need to supply the experimental=1 parameter when
835 loading the module):
837 These models do not have a button near the UltraBay device to request
838 a hot eject but rather require the laptop to be put to sleep
839 (suspend-to-ram) before the bay device is ejected or inserted).
840 The sequence of steps to eject the device is as follows:
842         echo eject > /proc/acpi/ibm/bay
843         put the ThinkPad to sleep
844         remove the drive
845         resume from sleep
846         cat /proc/acpi/ibm/bay should show that the drive was removed
848 On the A3x, both the UltraBay 2000 and UltraBay Plus devices are
849 supported. Use "eject2" instead of "eject" for the second bay.
851 Note: the UltraBay eject support on the 600e/x, A22p and A3x is
852 EXPERIMENTAL and may not work as expected. USE WITH CAUTION!
854 CMOS control
855 ------------
857 procfs: /proc/acpi/ibm/cmos
858 sysfs device attribute: cmos_command
860 This feature is mostly used internally by the ACPI firmware to keep the legacy
861 CMOS NVRAM bits in sync with the current machine state, and to record this
862 state so that the ThinkPad will retain such settings across reboots.
864 Some of these commands actually perform actions in some ThinkPad models, but
865 this is expected to disappear more and more in newer models.  As an example, in
866 a T43 and in a X40, commands 12 and 13 still control the ThinkLight state for
867 real, but commands 0 to 2 don't control the mixer anymore (they have been
868 phased out) and just update the NVRAM.
870 The range of valid cmos command numbers is 0 to 21, but not all have an
871 effect and the behavior varies from model to model.  Here is the behavior
872 on the X40 (tpb is the ThinkPad Buttons utility):
874         0 - Related to "Volume down" key press
875         1 - Related to "Volume up" key press
876         2 - Related to "Mute on" key press
877         3 - Related to "Access IBM" key press
878 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
879         4 - Related to "LCD brightness up" key pess
880 =======
881         4 - Related to "LCD brightness up" key press
882 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
883         5 - Related to "LCD brightness down" key press
884         11 - Related to "toggle screen expansion" key press/function
885         12 - Related to "ThinkLight on"
886         13 - Related to "ThinkLight off"
887 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
888         14 - Related to "ThinkLight" key press (toggle thinklight)
889 =======
890         14 - Related to "ThinkLight" key press (toggle ThinkLight)
891 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
893 The cmos command interface is prone to firmware split-brain problems, as
894 in newer ThinkPads it is just a compatibility layer.  Do not use it, it is
895 exported just as a debug tool.
897 LED control -- /proc/acpi/ibm/led
898 ---------------------------------
900 Some of the LED indicators can be controlled through this feature. The
901 available commands are:
903         echo '<led number> on' >/proc/acpi/ibm/led
904         echo '<led number> off' >/proc/acpi/ibm/led
905         echo '<led number> blink' >/proc/acpi/ibm/led
907 The <led number> range is 0 to 7. The set of LEDs that can be
908 controlled varies from model to model. Here is the mapping on the X40:
910         0 - power
911         1 - battery (orange)
912         2 - battery (green)
913         3 - UltraBase
914         4 - UltraBay
915         7 - standby
917 All of the above can be turned on and off and can be made to blink.
919 ACPI sounds -- /proc/acpi/ibm/beep
920 ----------------------------------
922 The BEEP method is used internally by the ACPI firmware to provide
923 audible alerts in various situations. This feature allows the same
924 sounds to be triggered manually.
926 The commands are non-negative integer numbers:
928         echo <number> >/proc/acpi/ibm/beep
930 The valid <number> range is 0 to 17. Not all numbers trigger sounds
931 and the sounds vary from model to model. Here is the behavior on the
932 X40:
934         0 - stop a sound in progress (but use 17 to stop 16)
935         2 - two beeps, pause, third beep ("low battery")
936         3 - single beep
937         4 - high, followed by low-pitched beep ("unable")
938         5 - single beep
939         6 - very high, followed by high-pitched beep ("AC/DC")
940         7 - high-pitched beep
941         9 - three short beeps
942         10 - very long beep
943         12 - low-pitched beep
944         15 - three high-pitched beeps repeating constantly, stop with 0
945         16 - one medium-pitched beep repeating constantly, stop with 17
946         17 - stop 16
948 Temperature sensors
949 -------------------
951 procfs: /proc/acpi/ibm/thermal
952 sysfs device attributes: (hwmon "thinkpad") temp*_input
954 Most ThinkPads include six or more separate temperature sensors but only
955 expose the CPU temperature through the standard ACPI methods.  This
956 feature shows readings from up to eight different sensors on older
957 ThinkPads, and up to sixteen different sensors on newer ThinkPads.
959 For example, on the X40, a typical output may be:
960 temperatures:   42 42 45 41 36 -128 33 -128
962 On the T43/p, a typical output may be:
963 temperatures:   48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128
965 The mapping of thermal sensors to physical locations varies depending on
966 system-board model (and thus, on ThinkPad model).
968 http://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that
969 tries to track down these locations for various models.
971 Most (newer?) models seem to follow this pattern:
973 1:  CPU
974 2:  (depends on model)
975 3:  (depends on model)
976 4:  GPU
977 5:  Main battery: main sensor
978 6:  Bay battery: main sensor
979 7:  Main battery: secondary sensor
980 8:  Bay battery: secondary sensor
981 9-15: (depends on model)
983 For the R51 (source: Thomas Gruber):
984 2:  Mini-PCI
985 3:  Internal HDD
987 For the T43, T43/p (source: Shmidoax/Thinkwiki.org)
988 http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p
989 2:  System board, left side (near PCMCIA slot), reported as HDAPS temp
990 3:  PCMCIA slot
991 9:  MCH (northbridge) to DRAM Bus
992 10: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI
993     card, under touchpad
994 11: Power regulator, underside of system board, below F2 key
996 The A31 has a very atypical layout for the thermal sensors
997 (source: Milos Popovic, http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31)
998 1:  CPU
999 2:  Main Battery: main sensor
1000 3:  Power Converter
1001 4:  Bay Battery: main sensor
1002 5:  MCH (northbridge)
1003 6:  PCMCIA/ambient
1004 7:  Main Battery: secondary sensor
1005 8:  Bay Battery: secondary sensor
1008 Procfs notes:
1009         Readings from sensors that are not available return -128.
1010         No commands can be written to this file.
1012 Sysfs notes:
1013         Sensors that are not available return the ENXIO error.  This
1014         status may change at runtime, as there are hotplug thermal
1015         sensors, like those inside the batteries and docks.
1017         thinkpad-acpi thermal sensors are reported through the hwmon
1018         subsystem, and follow all of the hwmon guidelines at
1019         Documentation/hwmon.
1022 EXPERIMENTAL: Embedded controller register dump -- /proc/acpi/ibm/ecdump
1023 ------------------------------------------------------------------------
1025 This feature is marked EXPERIMENTAL because the implementation
1026 directly accesses hardware registers and may not work as expected. USE
1027 WITH CAUTION! To use this feature, you need to supply the
1028 experimental=1 parameter when loading the module.
1030 This feature dumps the values of 256 embedded controller
1031 registers. Values which have changed since the last time the registers
1032 were dumped are marked with a star:
1034 [root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
1035 EC       +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
1036 EC 0x00:  a7  47  87  01  fe  96  00  08  01  00  cb  00  00  00  40  00
1037 EC 0x10:  00  00  ff  ff  f4  3c  87  09  01  ff  42  01  ff  ff  0d  00
1038 EC 0x20:  00  00  00  00  00  00  00  00  00  00  00  03  43  00  00  80
1039 EC 0x30:  01  07  1a  00  30  04  00  00 *85  00  00  10  00  50  00  00
1040 EC 0x40:  00  00  00  00  00  00  14  01  00  04  00  00  00  00  00  00
1041 EC 0x50:  00  c0  02  0d  00  01  01  02  02  03  03  03  03 *bc *02 *bc
1042 EC 0x60: *02 *bc *02  00  00  00  00  00  00  00  00  00  00  00  00  00
1043 EC 0x70:  00  00  00  00  00  12  30  40 *24 *26 *2c *27 *20  80 *1f  80
1044 EC 0x80:  00  00  00  06 *37 *0e  03  00  00  00  0e  07  00  00  00  00
1045 EC 0x90:  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1046 EC 0xa0: *ff  09  ff  09  ff  ff *64  00 *00 *00 *a2  41 *ff *ff *e0  00
1047 EC 0xb0:  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1048 EC 0xc0:  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1049 EC 0xd0:  03  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1050 EC 0xe0:  00  00  00  00  00  00  00  00  11  20  49  04  24  06  55  03
1051 EC 0xf0:  31  55  48  54  35  38  57  57  08  2f  45  73  07  65  6c  1a
1053 This feature can be used to determine the register holding the fan
1054 speed on some models. To do that, do the following:
1056         - make sure the battery is fully charged
1057         - make sure the fan is running
1058         - run 'cat /proc/acpi/ibm/ecdump' several times, once per second or so
1060 The first step makes sure various charging-related values don't
1061 vary. The second ensures that the fan-related values do vary, since
1062 the fan speed fluctuates a bit. The third will (hopefully) mark the
1063 fan register with a star:
1065 [root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
1066 EC       +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
1067 EC 0x00:  a7  47  87  01  fe  96  00  08  01  00  cb  00  00  00  40  00
1068 EC 0x10:  00  00  ff  ff  f4  3c  87  09  01  ff  42  01  ff  ff  0d  00
1069 EC 0x20:  00  00  00  00  00  00  00  00  00  00  00  03  43  00  00  80
1070 EC 0x30:  01  07  1a  00  30  04  00  00  85  00  00  10  00  50  00  00
1071 EC 0x40:  00  00  00  00  00  00  14  01  00  04  00  00  00  00  00  00
1072 EC 0x50:  00  c0  02  0d  00  01  01  02  02  03  03  03  03  bc  02  bc
1073 EC 0x60:  02  bc  02  00  00  00  00  00  00  00  00  00  00  00  00  00
1074 EC 0x70:  00  00  00  00  00  12  30  40  24  27  2c  27  21  80  1f  80
1075 EC 0x80:  00  00  00  06 *be  0d  03  00  00  00  0e  07  00  00  00  00
1076 EC 0x90:  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1077 EC 0xa0:  ff  09  ff  09  ff  ff  64  00  00  00  a2  41  ff  ff  e0  00
1078 EC 0xb0:  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1079 EC 0xc0:  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1080 EC 0xd0:  03  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
1081 EC 0xe0:  00  00  00  00  00  00  00  00  11  20  49  04  24  06  55  03
1082 EC 0xf0:  31  55  48  54  35  38  57  57  08  2f  45  73  07  65  6c  1a
1084 Another set of values that varies often is the temperature
1085 readings. Since temperatures don't change vary fast, you can take
1086 several quick dumps to eliminate them.
1088 You can use a similar method to figure out the meaning of other
1089 embedded controller registers - e.g. make sure nothing else changes
1090 except the charging or discharging battery to determine which
1091 registers contain the current battery capacity, etc. If you experiment
1092 with this, do send me your results (including some complete dumps with
1093 a description of the conditions when they were taken.)
1095 LCD brightness control
1096 ----------------------
1098 procfs: /proc/acpi/ibm/brightness
1099 sysfs backlight device "thinkpad_screen"
1101 This feature allows software control of the LCD brightness on ThinkPad
1102 models which don't have a hardware brightness slider.
1104 It has some limitations: the LCD backlight cannot be actually turned on or
1105 off by this interface, and in many ThinkPad models, the "dim while on
1106 battery" functionality will be enabled by the BIOS when this interface is
1107 used, and cannot be controlled.
1109 On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
1110 has eight brightness levels, ranging from 0 to 7.  Some of the levels
1111 may not be distinct.  Later Lenovo models that implement the ACPI
1112 display backlight brightness control methods have 16 levels, ranging
1113 from 0 to 15.
1115 There are two interfaces to the firmware for direct brightness control,
1116 EC and CMOS.  To select which one should be used, use the
1117 brightness_mode module parameter: brightness_mode=1 selects EC mode,
1118 brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
1119 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
1120 and CMOS.  The driver tries to autodetect which interface to use.
1121 =======
1122 and CMOS.  The driver tries to auto-detect which interface to use.
1123 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
1125 When display backlight brightness controls are available through the
1126 standard ACPI interface, it is best to use it instead of this direct
1127 ThinkPad-specific interface.  The driver will disable its native
1128 backlight brightness control interface if it detects that the standard
1129 ACPI interface is available in the ThinkPad.
1131 The brightness_enable module parameter can be used to control whether
1132 the LCD brightness control feature will be enabled when available.
1133 brightness_enable=0 forces it to be disabled.  brightness_enable=1
1134 forces it to be enabled when available, even if the standard ACPI
1135 interface is also available.
1137 Procfs notes:
1139         The available commands are:
1141         echo up   >/proc/acpi/ibm/brightness
1142         echo down >/proc/acpi/ibm/brightness
1143         echo 'level <level>' >/proc/acpi/ibm/brightness
1145 Sysfs notes:
1147 The interface is implemented through the backlight sysfs class, which is
1148 poorly documented at this time.
1150 Locate the thinkpad_screen device under /sys/class/backlight, and inside
1151 it there will be the following attributes:
1153         max_brightness:
1154                 Reads the maximum brightness the hardware can be set to.
1155                 The minimum is always zero.
1157         actual_brightness:
1158                 Reads what brightness the screen is set to at this instant.
1160         brightness:
1161                 Writes request the driver to change brightness to the
1162                 given value.  Reads will tell you what brightness the
1163                 driver is trying to set the display to when "power" is set
1164                 to zero and the display has not been dimmed by a kernel
1165                 power management event.
1167         power:
1168                 power management mode, where 0 is "display on", and 1 to 3
1169                 will dim the display backlight to brightness level 0
1170                 because thinkpad-acpi cannot really turn the backlight
1171                 off.  Kernel power management events can temporarily
1172                 increase the current power management level, i.e. they can
1173                 dim the display.
1176 Volume control -- /proc/acpi/ibm/volume
1177 ---------------------------------------
1179 This feature allows volume control on ThinkPad models which don't have
1180 a hardware volume knob. The available commands are:
1182         echo up   >/proc/acpi/ibm/volume
1183         echo down >/proc/acpi/ibm/volume
1184         echo mute >/proc/acpi/ibm/volume
1185         echo 'level <level>' >/proc/acpi/ibm/volume
1187 The <level> number range is 0 to 15 although not all of them may be
1188 distinct. The unmute the volume after the mute command, use either the
1189 up or down command (the level command will not unmute the volume).
1190 The current volume level and mute state is shown in the file.
1192 Fan control and monitoring: fan speed, fan enable/disable
1193 ---------------------------------------------------------
1195 procfs: /proc/acpi/ibm/fan
1196 sysfs device attributes: (hwmon "thinkpad") fan1_input, pwm1,
1197                           pwm1_enable
1198 sysfs hwmon driver attributes: fan_watchdog
1200 NOTE NOTE NOTE: fan control operations are disabled by default for
1201 safety reasons.  To enable them, the module parameter "fan_control=1"
1202 must be given to thinkpad-acpi.
1204 This feature attempts to show the current fan speed, control mode and
1205 other fan data that might be available.  The speed is read directly
1206 from the hardware registers of the embedded controller.  This is known
1207 to work on later R, T, X and Z series ThinkPads but may show a bogus
1208 value on other models.
1210 Fan levels:
1212 Most ThinkPad fans work in "levels" at the firmware interface.  Level 0
1213 stops the fan.  The higher the level, the higher the fan speed, although
1214 adjacent levels often map to the same fan speed.  7 is the highest
1215 level, where the fan reaches the maximum recommended speed.
1217 Level "auto" means the EC changes the fan level according to some
1218 internal algorithm, usually based on readings from the thermal sensors.
1220 There is also a "full-speed" level, also known as "disengaged" level.
1221 In this level, the EC disables the speed-locked closed-loop fan control,
1222 and drives the fan as fast as it can go, which might exceed hardware
1223 limits, so use this level with caution.
1225 The fan usually ramps up or down slowly from one speed to another, and
1226 it is normal for the EC to take several seconds to react to fan
1227 commands.  The full-speed level may take up to two minutes to ramp up to
1228 maximum speed, and in some ThinkPads, the tachometer readings go stale
1229 while the EC is transitioning to the full-speed level.
1231 WARNING WARNING WARNING: do not leave the fan disabled unless you are
1232 monitoring all of the temperature sensor readings and you are ready to
1233 enable it if necessary to avoid overheating.
1235 An enabled fan in level "auto" may stop spinning if the EC decides the
1236 ThinkPad is cool enough and doesn't need the extra airflow.  This is
1237 normal, and the EC will spin the fan up if the various thermal readings
1238 rise too much.
1240 On the X40, this seems to depend on the CPU and HDD temperatures.
1241 Specifically, the fan is turned on when either the CPU temperature
1242 climbs to 56 degrees or the HDD temperature climbs to 46 degrees.  The
1243 fan is turned off when the CPU temperature drops to 49 degrees and the
1244 HDD temperature drops to 41 degrees.  These thresholds cannot
1245 currently be controlled.
1247 The ThinkPad's ACPI DSDT code will reprogram the fan on its own when
1248 certain conditions are met.  It will override any fan programming done
1249 through thinkpad-acpi.
1251 The thinkpad-acpi kernel driver can be programmed to revert the fan
1252 level to a safe setting if userspace does not issue one of the procfs
1253 fan commands: "enable", "disable", "level" or "watchdog", or if there
1254 are no writes to pwm1_enable (or to pwm1 *if and only if* pwm1_enable is
1255 set to 1, manual mode) within a configurable amount of time of up to
1256 120 seconds.  This functionality is called fan safety watchdog.
1258 Note that the watchdog timer stops after it enables the fan.  It will be
1259 rearmed again automatically (using the same interval) when one of the
1260 above mentioned fan commands is received.  The fan watchdog is,
1261 therefore, not suitable to protect against fan mode changes made through
1262 means other than the "enable", "disable", and "level" procfs fan
1263 commands, or the hwmon fan control sysfs interface.
1265 Procfs notes:
1267 The fan may be enabled or disabled with the following commands:
1269         echo enable  >/proc/acpi/ibm/fan
1270         echo disable >/proc/acpi/ibm/fan
1272 Placing a fan on level 0 is the same as disabling it.  Enabling a fan
1273 will try to place it in a safe level if it is too slow or disabled.
1275 The fan level can be controlled with the command:
1277         echo 'level <level>' > /proc/acpi/ibm/fan
1279 Where <level> is an integer from 0 to 7, or one of the words "auto" or
1280 "full-speed" (without the quotes).  Not all ThinkPads support the "auto"
1281 and "full-speed" levels.  The driver accepts "disengaged" as an alias for
1282 "full-speed", and reports it as "disengaged" for backwards
1283 compatibility.
1285 On the X31 and X40 (and ONLY on those models), the fan speed can be
1286 controlled to a certain degree.  Once the fan is running, it can be
1287 forced to run faster or slower with the following command:
1289         echo 'speed <speed>' > /proc/acpi/ibm/fan
1291 The sustainable range of fan speeds on the X40 appears to be from about
1292 3700 to about 7350. Values outside this range either do not have any
1293 effect or the fan speed eventually settles somewhere in that range.  The
1294 fan cannot be stopped or started with this command.  This functionality
1295 is incomplete, and not available through the sysfs interface.
1297 To program the safety watchdog, use the "watchdog" command.
1299         echo 'watchdog <interval in seconds>' > /proc/acpi/ibm/fan
1301 If you want to disable the watchdog, use 0 as the interval.
1303 Sysfs notes:
1305 The sysfs interface follows the hwmon subsystem guidelines for the most
1306 part, and the exception is the fan safety watchdog.
1308 Writes to any of the sysfs attributes may return the EINVAL error if
1309 that operation is not supported in a given ThinkPad or if the parameter
1310 is out-of-bounds, and EPERM if it is forbidden.  They may also return
1311 EINTR (interrupted system call), and EIO (I/O error while trying to talk
1312 to the firmware).
1314 Features not yet implemented by the driver return ENOSYS.
1316 hwmon device attribute pwm1_enable:
1317         0: PWM offline (fan is set to full-speed mode)
1318         1: Manual PWM control (use pwm1 to set fan level)
1319         2: Hardware PWM control (EC "auto" mode)
1320         3: reserved (Software PWM control, not implemented yet)
1322         Modes 0 and 2 are not supported by all ThinkPads, and the
1323         driver is not always able to detect this.  If it does know a
1324         mode is unsupported, it will return -EINVAL.
1326 hwmon device attribute pwm1:
1327         Fan level, scaled from the firmware values of 0-7 to the hwmon
1328         scale of 0-255.  0 means fan stopped, 255 means highest normal
1329         speed (level 7).
1331         This attribute only commands the fan if pmw1_enable is set to 1
1332         (manual PWM control).
1334 hwmon device attribute fan1_input:
1335         Fan tachometer reading, in RPM.  May go stale on certain
1336         ThinkPads while the EC transitions the PWM to offline mode,
1337         which can take up to two minutes.  May return rubbish on older
1338         ThinkPads.
1340 hwmon driver attribute fan_watchdog:
1341         Fan safety watchdog timer interval, in seconds.  Minimum is
1342         1 second, maximum is 120 seconds.  0 disables the watchdog.
1344 To stop the fan: set pwm1 to zero, and pwm1_enable to 1.
1346 To start the fan in a safe mode: set pwm1_enable to 2.  If that fails
1347 with EINVAL, try to set pwm1_enable to 1 and pwm1 to at least 128 (255
1348 would be the safest choice, though).
1351 EXPERIMENTAL: WAN
1352 -----------------
1354 procfs: /proc/acpi/ibm/wan
1355 sysfs device attribute: wwan_enable
1357 This feature is marked EXPERIMENTAL because the implementation
1358 directly accesses hardware registers and may not work as expected. USE
1359 WITH CAUTION! To use this feature, you need to supply the
1360 experimental=1 parameter when loading the module.
1362 This feature shows the presence and current state of a W-WAN (Sierra
1363 Wireless EV-DO) device.
1365 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
1366 It was tested on a Lenovo Thinkpad X60. It should probably work on other
1367 Thinkpad models which come with this module installed.
1368 =======
1369 It was tested on a Lenovo ThinkPad X60. It should probably work on other
1370 ThinkPad models which come with this module installed.
1371 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
1373 Procfs notes:
1375 If the W-WAN card is installed, the following commands can be used:
1377         echo enable > /proc/acpi/ibm/wan
1378         echo disable > /proc/acpi/ibm/wan
1380 Sysfs notes:
1382         If the W-WAN card is installed, it can be enabled /
1383         disabled through the "wwan_enable" thinkpad-acpi device
1384         attribute, and its current status can also be queried.
1386         enable:
1387                 0: disables WWAN card / WWAN card is disabled
1388                 1: enables WWAN card / WWAN card is enabled.
1390 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
1391         Note: this interface will be probably be superseeded by the
1392 =======
1393         Note: this interface will be probably be superseded by the
1394 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
1395         generic rfkill class, so it is NOT to be considered stable yet.
1397 Multiple Commands, Module Parameters
1398 ------------------------------------
1400 Multiple commands can be written to the proc files in one shot by
1401 separating them with commas, for example:
1403         echo enable,0xffff > /proc/acpi/ibm/hotkey
1404         echo lcd_disable,crt_enable > /proc/acpi/ibm/video
1406 Commands can also be specified when loading the thinkpad-acpi module,
1407 for example:
1409         modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable
1411 Enabling debugging output
1412 -------------------------
1414 The module takes a debug parameter which can be used to selectively
1415 enable various classes of debugging output, for example:
1417 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
1418          modprobe ibm_acpi debug=0xffff
1419 =======
1420          modprobe thinkpad_acpi debug=0xffff
1421 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
1423 will enable all debugging output classes.  It takes a bitmask, so
1424 to enable more than one output class, just add their values.
1426         Debug bitmask           Description
1427         0x0001                  Initialization and probing
1428         0x0002                  Removal
1430 There is also a kernel build option to enable more debugging
1431 information, which may be necessary to debug driver problems.
1433 The level of debugging information output by the driver can be changed
1434 at runtime through sysfs, using the driver attribute debug_level.  The
1435 attribute takes the same bitmask as the debug module parameter above.
1437 Force loading of module
1438 -----------------------
1440 If thinkpad-acpi refuses to detect your ThinkPad, you can try to specify
1441 the module parameter force_load=1.  Regardless of whether this works or
1442 not, please contact ibm-acpi-devel@lists.sourceforge.net with a report.
1445 Sysfs interface changelog:
1447 0x000100:       Initial sysfs support, as a single platform driver and
1448                 device.
1449 0x000200:       Hot key support for 32 hot keys, and radio slider switch
1450                 support.
1451 0x010000:       Hot keys are now handled by default over the input
1452                 layer, the radio switch generates input event EV_RADIO,
1453                 and the driver enables hot key handling by default in
1454                 the firmware.
1456 0x020000:       ABI fix: added a separate hwmon platform device and
1457                 driver, which must be located by name (thinkpad)
1458                 and the hwmon class for libsensors4 (lm-sensors 3)
1459                 compatibility.  Moved all hwmon attributes to this
1460                 new platform device.
1462 0x020100:       Marker for thinkpad-acpi with hot key NVRAM polling
1463                 support.  If you must, use it to know you should not
1464                 start an userspace NVRAM poller (allows to detect when
1465                 NVRAM is compiled out by the user because it is
1466                 unneeded/undesired in the first place).
1467 0x020101:       Marker for thinkpad-acpi with hot key NVRAM polling
1468 <<<<<<< HEAD:Documentation/laptops/thinkpad-acpi.txt
1469                 and proper hotkey_mask semanthics (version 8 of the
1470 =======
1471                 and proper hotkey_mask semantics (version 8 of the
1472 >>>>>>> 264e3e889d86e552b4191d69bb60f4f3b383135a:Documentation/laptops/thinkpad-acpi.txt
1473                 NVRAM polling patch).  Some development snapshots of
1474                 0.18 had an earlier version that did strange things
1475                 to hotkey_mask.
1477 0x020200:       Add poll()/select() support to the following attributes:
1478                 hotkey_radio_sw, wakeup_hotunplug_complete, wakeup_reason