thinkpad-acpi: add new debug helpers and warn of deprecated atts
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / Documentation / laptops / thinkpad-acpi.txt
CommitLineData
643f12db 1 ThinkPad ACPI Extras Driver
1da177e4 2
aa2fbcec
HMH
3 Version 0.22
4 November 23rd, 2008
1da177e4
LT
5
6 Borislav Deianov <borislav@users.sf.net>
c78d5c96
HMH
7 Henrique de Moraes Holschuh <hmh@hmh.eng.br>
8 http://ibm-acpi.sf.net/
1da177e4
LT
9
10
643f12db
HMH
11This is a Linux driver for the IBM and Lenovo ThinkPad laptops. It
12supports various features of these laptops which are accessible
13through the ACPI and ACPI EC framework, but not otherwise fully
14supported by the generic Linux ACPI drivers.
15
16This driver used to be named ibm-acpi until kernel 2.6.21 and release
170.13-20070314. It used to be in the drivers/acpi tree, but it was
18moved to the drivers/misc tree and renamed to thinkpad-acpi for kernel
9abf0eea 192.6.22, and release 0.14. It was moved to drivers/platform/x86 for
aa2fbcec 20kernel 2.6.29 and release 0.22.
1da177e4 21
95e57ab2 22The driver is named "thinkpad-acpi". In some places, like module
078ac19e
HMH
23names and log messages, "thinkpad_acpi" is used because of userspace
24issues.
95e57ab2
HMH
25
26"tpacpi" is used as a shorthand where "thinkpad-acpi" would be too
27long due to length limitations on some Linux kernel versions.
1da177e4
LT
28
29Status
30------
31
32The features currently supported are the following (see below for
33detailed description):
34
35 - Fn key combinations
36 - Bluetooth enable and disable
837ca6dd 37 - video output switching, expansion control
1da177e4
LT
38 - ThinkLight on and off
39 - limited docking and undocking
40 - UltraBay eject
078ac19e 41 - CMOS/UCMS control
78f81cc4
BD
42 - LED control
43 - ACPI sounds
44 - temperature sensors
45 - Experimental: embedded controller register dump
24f7ff0a
SS
46 - LCD brightness control
47 - Volume control
ecf2a80a 48 - Fan control and monitoring: fan speed, fan enable/disable
9662e080 49 - WAN enable and disable
078ac19e 50 - UWB enable and disable
1da177e4
LT
51
52A compatibility table by model and feature is maintained on the web
53site, http://ibm-acpi.sf.net/. I appreciate any success or failure
54reports, especially if they add to or correct the compatibility table.
55Please include the following information in your report:
56
57 - ThinkPad model name
078ac19e 58 - a copy of your ACPI tables, using the "acpidump" utility
643f12db
HMH
59 - a copy of the output of dmidecode, with serial numbers
60 and UUIDs masked off
1da177e4
LT
61 - which driver features work and which don't
62 - the observed behavior of non-working features
63
64Any other comments or patches are also more than welcome.
65
66
67Installation
68------------
69
70If you are compiling this driver as included in the Linux kernel
078ac19e
HMH
71sources, look for the CONFIG_THINKPAD_ACPI Kconfig option.
72It is located on the menu path: "Device Drivers" -> "X86 Platform
73Specific Device Drivers" -> "ThinkPad ACPI Laptop Extras".
74
1da177e4
LT
75
76Features
77--------
78
54ae1501
HMH
79The driver exports two different interfaces to userspace, which can be
80used to access the features it provides. One is a legacy procfs-based
078ac19e
HMH
81interface, which will be removed at some time in the future. The other
82is a new sysfs-based interface which is not complete yet.
54ae1501
HMH
83
84The procfs interface creates the /proc/acpi/ibm directory. There is a
85file under that directory for each feature it supports. The procfs
86interface is mostly frozen, and will change very little if at all: it
87will not be extended to add any new functionality in the driver, instead
88all new functionality will be implemented on the sysfs interface.
89
90The sysfs interface tries to blend in the generic Linux sysfs subsystems
91and classes as much as possible. Since some of these subsystems are not
92yet ready or stabilized, it is expected that this interface will change,
93and any and all userspace programs must deal with it.
94
95
96Notes about the sysfs interface:
97
98Unlike what was done with the procfs interface, correctness when talking
99to the sysfs interfaces will be enforced, as will correctness in the
100thinkpad-acpi's implementation of sysfs interfaces.
101
102Also, any bugs in the thinkpad-acpi sysfs driver code or in the
103thinkpad-acpi's implementation of the sysfs interfaces will be fixed for
104maximum correctness, even if that means changing an interface in
105non-compatible ways. As these interfaces mature both in the kernel and
106in thinkpad-acpi, such changes should become quite rare.
107
108Applications interfacing to the thinkpad-acpi sysfs interfaces must
109follow all sysfs guidelines and correctly process all errors (the sysfs
110interface makes extensive use of errors). File descriptors and open /
111close operations to the sysfs inodes must also be properly implemented.
1da177e4 112
176750d6
HMH
113The version of thinkpad-acpi's sysfs interface is exported by the driver
114as a driver attribute (see below).
115
116Sysfs driver attributes are on the driver's sysfs attribute space,
078ac19e 117for 2.6.23+ this is /sys/bus/platform/drivers/thinkpad_acpi/ and
7fd40029 118/sys/bus/platform/drivers/thinkpad_hwmon/
176750d6 119
7fd40029 120Sysfs device attributes are on the thinkpad_acpi device sysfs attribute
078ac19e 121space, for 2.6.23+ this is /sys/devices/platform/thinkpad_acpi/.
7fd40029
HMH
122
123Sysfs device attributes for the sensors and fan are on the
124thinkpad_hwmon device's sysfs attribute space, but you should locate it
078ac19e
HMH
125looking for a hwmon device with the name attribute of "thinkpad", or
126better yet, through libsensors.
127
176750d6
HMH
128
129Driver version
130--------------
131
132procfs: /proc/acpi/ibm/driver
133sysfs driver attribute: version
1da177e4
LT
134
135The driver name and version. No commands can be written to this file.
136
078ac19e 137
176750d6
HMH
138Sysfs interface version
139-----------------------
140
141sysfs driver attribute: interface_version
142
143Version of the thinkpad-acpi sysfs interface, as an unsigned long
144(output in hex format: 0xAAAABBCC), where:
145 AAAA - major revision
146 BB - minor revision
147 CC - bugfix revision
148
149The sysfs interface version changelog for the driver can be found at the
150end of this document. Changes to the sysfs interface done by the kernel
151subsystems are not documented here, nor are they tracked by this
152attribute.
153
94b08713
HMH
154Changes to the thinkpad-acpi sysfs interface are only considered
155non-experimental when they are submitted to Linux mainline, at which
156point the changes in this interface are documented and interface_version
157may be updated. If you are using any thinkpad-acpi features not yet
158sent to mainline for merging, you do so on your own risk: these features
159may disappear, or be implemented in a different and incompatible way by
160the time they are merged in Linux mainline.
161
162Changes that are backwards-compatible by nature (e.g. the addition of
163attributes that do not change the way the other attributes work) do not
164always warrant an update of interface_version. Therefore, one must
165expect that an attribute might not be there, and deal with it properly
166(an attribute not being there *is* a valid way to make it clear that a
167feature is not available in sysfs).
168
078ac19e 169
a0416420
HMH
170Hot keys
171--------
172
173procfs: /proc/acpi/ibm/hotkey
cc4c24e1 174sysfs device attribute: hotkey_*
1da177e4 175
d0788cfb 176In a ThinkPad, the ACPI HKEY handler is responsible for communicating
1a343760
HMH
177some important events and also keyboard hot key presses to the operating
178system. Enabling the hotkey functionality of thinkpad-acpi signals the
179firmware that such a driver is present, and modifies how the ThinkPad
180firmware will behave in many situations.
181
ff80f137
HMH
182The driver enables the hot key feature automatically when loaded. The
183feature can later be disabled and enabled back at runtime. The driver
184will also restore the hot key feature to its previous state and mask
185when it is unloaded.
186
1a343760 187When the hotkey feature is enabled and the hot key mask is set (see
ff80f137 188below), the driver will report HKEY events in the following format:
1da177e4
LT
189
190 ibm/hotkey HKEY 00000080 0000xxxx
191
ff80f137 192Some of these events refer to hot key presses, but not all.
6a38abbf 193
ff80f137
HMH
194The driver will generate events over the input layer for hot keys and
195radio switches, and over the ACPI netlink layer for other events. The
196input layer support accepts the standard IOCTLs to remap the keycodes
197assigned to each hot key.
1a343760
HMH
198
199The hot key bit mask allows some control over which hot keys generate
200events. If a key is "masked" (bit set to 0 in the mask), the firmware
201will handle it. If it is "unmasked", it signals the firmware that
202thinkpad-acpi would prefer to handle it, if the firmware would be so
203kind to allow it (and it often doesn't!).
204
205Not all bits in the mask can be modified. Not all bits that can be
206modified do anything. Not all hot keys can be individually controlled
207by the mask. Some models do not support the mask at all, and in those
208models, hot keys cannot be controlled individually. The behaviour of
d0788cfb 209the mask is, therefore, highly dependent on the ThinkPad model.
1a343760
HMH
210
211Note that unmasking some keys prevents their default behavior. For
212example, if Fn+F5 is unmasked, that key will no longer enable/disable
213Bluetooth by itself.
214
215Note also that not all Fn key combinations are supported through ACPI.
216For example, on the X40, the brightness, volume and "Access IBM" buttons
217do not generate ACPI events even with this driver. They *can* be used
218through the "ThinkPad Buttons" utility, see http://www.nongnu.org/tpb/
1da177e4 219
a0416420
HMH
220procfs notes:
221
222The following commands can be written to the /proc/acpi/ibm/hotkey file:
223
224 echo enable > /proc/acpi/ibm/hotkey -- enable the hot keys feature
225 echo disable > /proc/acpi/ibm/hotkey -- disable the hot keys feature
ae92bd17
HMH
226 echo 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys
227 echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys
228 ... any other 8-hex-digit mask ...
a0416420
HMH
229 echo reset > /proc/acpi/ibm/hotkey -- restore the original mask
230
01e88f25
HMH
231The procfs interface does not support NVRAM polling control. So as to
232maintain maximum bug-to-bug compatibility, it does not report any masks,
233nor does it allow one to manipulate the hot key mask when the firmware
234does not support masks at all, even if NVRAM polling is in use.
235
a0416420
HMH
236sysfs notes:
237
cc4c24e1 238 hotkey_bios_enabled:
a0416420
HMH
239 Returns the status of the hot keys feature when
240 thinkpad-acpi was loaded. Upon module unload, the hot
241 key feature status will be restored to this value.
242
243 0: hot keys were disabled
1a343760 244 1: hot keys were enabled (unusual)
a0416420 245
cc4c24e1 246 hotkey_bios_mask:
a0416420
HMH
247 Returns the hot keys mask when thinkpad-acpi was loaded.
248 Upon module unload, the hot keys mask will be restored
249 to this value.
250
cc4c24e1 251 hotkey_enable:
01e88f25
HMH
252 Enables/disables the hot keys feature in the ACPI
253 firmware, and reports current status of the hot keys
254 feature. Has no effect on the NVRAM hot key polling
255 functionality.
a0416420
HMH
256
257 0: disables the hot keys feature / feature disabled
258 1: enables the hot keys feature / feature enabled
259
cc4c24e1 260 hotkey_mask:
01e88f25
HMH
261 bit mask to enable driver-handling (and depending on
262 the firmware, ACPI event generation) for each hot key
263 (see above). Returns the current status of the hot keys
264 mask, and allows one to modify it.
265
266 Note: when NVRAM polling is active, the firmware mask
267 will be different from the value returned by
268 hotkey_mask. The driver will retain enabled bits for
269 hotkeys that are under NVRAM polling even if the
270 firmware refuses them, and will not set these bits on
271 the firmware hot key mask.
a0416420 272
9b010de5
HMH
273 hotkey_all_mask:
274 bit mask that should enable event reporting for all
275 supported hot keys, when echoed to hotkey_mask above.
276 Unless you know which events need to be handled
277 passively (because the firmware *will* handle them
278 anyway), do *not* use hotkey_all_mask. Use
279 hotkey_recommended_mask, instead. You have been warned.
280
281 hotkey_recommended_mask:
282 bit mask that should enable event reporting for all
1a343760
HMH
283 supported hot keys, except those which are always
284 handled by the firmware anyway. Echo it to
285 hotkey_mask above, to use.
9b010de5 286
01e88f25
HMH
287 hotkey_source_mask:
288 bit mask that selects which hot keys will the driver
289 poll the NVRAM for. This is auto-detected by the driver
290 based on the capabilities reported by the ACPI firmware,
291 but it can be overridden at runtime.
292
293 Hot keys whose bits are set in both hotkey_source_mask
294 and also on hotkey_mask are polled for in NVRAM. Only a
295 few hot keys are available through CMOS NVRAM polling.
296
297 Warning: when in NVRAM mode, the volume up/down/mute
298 keys are synthesized according to changes in the mixer,
299 so you have to use volume up or volume down to unmute,
300 as per the ThinkPad volume mixer user interface. When
301 in ACPI event mode, volume up/down/mute are reported as
302 separate events, but this behaviour may be corrected in
303 future releases of this driver, in which case the
d0788cfb 304 ThinkPad volume mixer user interface semantics will be
01e88f25
HMH
305 enforced.
306
307 hotkey_poll_freq:
308 frequency in Hz for hot key polling. It must be between
309 0 and 25 Hz. Polling is only carried out when strictly
310 needed.
311
312 Setting hotkey_poll_freq to zero disables polling, and
313 will cause hot key presses that require NVRAM polling
314 to never be reported.
315
316 Setting hotkey_poll_freq too low will cause repeated
317 pressings of the same hot key to be misreported as a
318 single key press, or to not even be detected at all.
319 The recommended polling frequency is 10Hz.
320
74941a69 321 hotkey_radio_sw:
d147da73 322 If the ThinkPad has a hardware radio switch, this
74941a69 323 attribute will read 0 if the switch is in the "radios
d0788cfb 324 disabled" position, and 1 if the switch is in the
74941a69
HMH
325 "radios enabled" position.
326
50ebec09
HMH
327 This attribute has poll()/select() support.
328
6c231bd5
HMH
329 hotkey_tablet_mode:
330 If the ThinkPad has tablet capabilities, this attribute
331 will read 0 if the ThinkPad is in normal mode, and
332 1 if the ThinkPad is in tablet mode.
333
334 This attribute has poll()/select() support.
335
ff80f137
HMH
336 hotkey_report_mode:
337 Returns the state of the procfs ACPI event report mode
338 filter for hot keys. If it is set to 1 (the default),
339 all hot key presses are reported both through the input
340 layer and also as ACPI events through procfs (but not
341 through netlink). If it is set to 2, hot key presses
342 are reported only through the input layer.
343
344 This attribute is read-only in kernels 2.6.23 or later,
345 and read-write on earlier kernels.
346
347 May return -EPERM (write access locked out by module
348 parameter) or -EACCES (read-only).
349
a713b4d7
HMH
350 wakeup_reason:
351 Set to 1 if the system is waking up because the user
352 requested a bay ejection. Set to 2 if the system is
353 waking up because the user requested the system to
354 undock. Set to zero for normal wake-ups or wake-ups
355 due to unknown reasons.
356
50ebec09
HMH
357 This attribute has poll()/select() support.
358
a713b4d7
HMH
359 wakeup_hotunplug_complete:
360 Set to 1 if the system was waken up because of an
361 undock or bay ejection request, and that request
d0788cfb 362 was successfully completed. At this point, it might
a713b4d7
HMH
363 be useful to send the system back to sleep, at the
364 user's choice. Refer to HKEY events 0x4003 and
365 0x3003, below.
366
50ebec09
HMH
367 This attribute has poll()/select() support.
368
6a38abbf
HMH
369input layer notes:
370
371A Hot key is mapped to a single input layer EV_KEY event, possibly
372followed by an EV_MSC MSC_SCAN event that shall contain that key's scan
373code. An EV_SYN event will always be generated to mark the end of the
374event block.
375
376Do not use the EV_MSC MSC_SCAN events to process keys. They are to be
377used as a helper to remap keys, only. They are particularly useful when
378remapping KEY_UNKNOWN keys.
379
380The events are available in an input device, with the following id:
381
382 Bus: BUS_HOST
edf0e0e5
HMH
383 vendor: 0x1014 (PCI_VENDOR_ID_IBM) or
384 0x17aa (PCI_VENDOR_ID_LENOVO)
6a38abbf
HMH
385 product: 0x5054 ("TP")
386 version: 0x4101
387
388The version will have its LSB incremented if the keymap changes in a
389backwards-compatible way. The MSB shall always be 0x41 for this input
390device. If the MSB is not 0x41, do not use the device as described in
391this section, as it is either something else (e.g. another input device
392exported by a thinkpad driver, such as HDAPS) or its functionality has
393been changed in a non-backwards compatible way.
394
395Adding other event types for other functionalities shall be considered a
396backwards-compatible change for this input device.
397
398Thinkpad-acpi Hot Key event map (version 0x4101):
399
400ACPI Scan
401event code Key Notes
402
4030x1001 0x00 FN+F1 -
edf0e0e5
HMH
4040x1002 0x01 FN+F2 IBM: battery (rare)
405 Lenovo: Screen lock
6a38abbf 406
edf0e0e5
HMH
4070x1003 0x02 FN+F3 Many IBM models always report
408 this hot key, even with hot keys
6a38abbf
HMH
409 disabled or with Fn+F3 masked
410 off
edf0e0e5
HMH
411 IBM: screen lock
412 Lenovo: battery
6a38abbf
HMH
413
4140x1004 0x03 FN+F4 Sleep button (ACPI sleep button
d0788cfb 415 semantics, i.e. sleep-to-RAM).
6a38abbf
HMH
416 It is always generate some kind
417 of event, either the hot key
418 event or a ACPI sleep button
419 event. The firmware may
420 refuse to generate further FN+F4
421 key presses until a S3 or S4 ACPI
422 sleep cycle is performed or some
423 time passes.
424
4250x1005 0x04 FN+F5 Radio. Enables/disables
d0788cfb 426 the internal Bluetooth hardware
6a38abbf
HMH
427 and W-WAN card if left in control
428 of the firmware. Does not affect
429 the WLAN card.
edf0e0e5 430 Should be used to turn on/off all
d0788cfb 431 radios (Bluetooth+W-WAN+WLAN),
edf0e0e5 432 really.
6a38abbf
HMH
433
4340x1006 0x05 FN+F6 -
435
4360x1007 0x06 FN+F7 Video output cycle.
437 Do you feel lucky today?
438
edf0e0e5 4390x1008 0x07 FN+F8 IBM: toggle screen expand
d0788cfb 440 Lenovo: configure UltraNav
edf0e0e5
HMH
441
4420x1009 0x08 FN+F9 -
6a38abbf
HMH
443 .. .. ..
4440x100B 0x0A FN+F11 -
445
4460x100C 0x0B FN+F12 Sleep to disk. You are always
447 supposed to handle it yourself,
448 either through the ACPI event,
449 or through a hotkey event.
450 The firmware may refuse to
451 generate further FN+F4 key
452 press events until a S3 or S4
453 ACPI sleep cycle is performed,
454 or some time passes.
455
4560x100D 0x0C FN+BACKSPACE -
4570x100E 0x0D FN+INSERT -
4580x100F 0x0E FN+DELETE -
459
4600x1010 0x0F FN+HOME Brightness up. This key is
edf0e0e5
HMH
461 always handled by the firmware
462 in IBM ThinkPads, even when
463 unmasked. Just leave it alone.
464 For Lenovo ThinkPads with a new
465 BIOS, it has to be handled either
466 by the ACPI OSI, or by userspace.
4670x1011 0x10 FN+END Brightness down. See brightness
468 up for details.
469
d0788cfb 4700x1012 0x11 FN+PGUP ThinkLight toggle. This key is
6a38abbf
HMH
471 always handled by the firmware,
472 even when unmasked.
473
4740x1013 0x12 FN+PGDOWN -
475
4760x1014 0x13 FN+SPACE Zoom key
477
4780x1015 0x14 VOLUME UP Internal mixer volume up. This
479 key is always handled by the
480 firmware, even when unmasked.
edf0e0e5
HMH
481 NOTE: Lenovo seems to be changing
482 this.
6a38abbf
HMH
4830x1016 0x15 VOLUME DOWN Internal mixer volume up. This
484 key is always handled by the
485 firmware, even when unmasked.
edf0e0e5
HMH
486 NOTE: Lenovo seems to be changing
487 this.
6a38abbf
HMH
4880x1017 0x16 MUTE Mute internal mixer. This
489 key is always handled by the
490 firmware, even when unmasked.
491
d0788cfb 4920x1018 0x17 THINKPAD ThinkPad/Access IBM/Lenovo key
6a38abbf
HMH
493
4940x1019 0x18 unknown
495.. .. ..
4960x1020 0x1F unknown
497
498The ThinkPad firmware does not allow one to differentiate when most hot
499keys are pressed or released (either that, or we don't know how to, yet).
500For these keys, the driver generates a set of events for a key press and
501immediately issues the same set of events for a key release. It is
502unknown by the driver if the ThinkPad firmware triggered these events on
503hot key press or release, but the firmware will do it for either one, not
504both.
505
ff80f137 506If a key is mapped to KEY_RESERVED, it generates no input events at all.
6a38abbf 507If a key is mapped to KEY_UNKNOWN, it generates an input event that
ff80f137
HMH
508includes an scan code. If a key is mapped to anything else, it will
509generate input device EV_KEY events.
6a38abbf 510
d0788cfb
HMH
511In addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW
512events for switches:
513
197a2cd9 514SW_RFKILL_ALL T60 and later hardare rfkill rocker switch
d0788cfb
HMH
515SW_TABLET_MODE Tablet ThinkPads HKEY events 0x5009 and 0x500A
516
6a38abbf
HMH
517Non hot-key ACPI HKEY event map:
5180x5001 Lid closed
5190x5002 Lid opened
b3ec6f91
HMH
5200x5009 Tablet swivel: switched to tablet mode
5210x500A Tablet swivel: switched to normal mode
6a38abbf
HMH
5220x7000 Radio Switch may have changed state
523
ff80f137
HMH
524The above events are not propagated by the driver, except for legacy
525compatibility purposes when hotkey_report_mode is set to 1.
526
a713b4d7
HMH
5270x2304 System is waking up from suspend to undock
5280x2305 System is waking up from suspend to eject bay
5290x2404 System is waking up from hibernation to undock
5300x2405 System is waking up from hibernation to eject bay
531
532The above events are never propagated by the driver.
533
5340x3003 Bay ejection (see 0x2x05) complete, can sleep again
5350x4003 Undocked (see 0x2x04), can sleep again
d0788cfb 5360x500B Tablet pen inserted into its storage bay
d1edb2b5 5370x500C Tablet pen removed from its storage bay
3b64b51d
HMH
5380x5010 Brightness level changed (newer Lenovo BIOSes)
539
540The above events are propagated by the driver.
541
ff80f137
HMH
542Compatibility notes:
543
544ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never
545supported the input layer, and sent events over the procfs ACPI event
546interface.
547
548To avoid sending duplicate events over the input layer and the ACPI
549event interface, thinkpad-acpi 0.16 implements a module parameter
550(hotkey_report_mode), and also a sysfs device attribute with the same
551name.
552
553Make no mistake here: userspace is expected to switch to using the input
554layer interface of thinkpad-acpi, together with the ACPI netlink event
555interface in kernels 2.6.23 and later, or with the ACPI procfs event
556interface in kernels 2.6.22 and earlier.
557
558If no hotkey_report_mode module parameter is specified (or it is set to
559zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22
560and earlier, also allows one to change the hotkey_report_mode through
561sysfs. In kernels 2.6.23 and later, where the netlink ACPI event
562interface is available, hotkey_report_mode cannot be changed through
563sysfs (it is read-only).
564
565If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
566be changed later through sysfs (any writes will return -EPERM to signal
567that hotkey_report_mode was locked. On 2.6.23 and later, where
d0788cfb 568hotkey_report_mode cannot be changed at all, writes will return -EACCES).
ff80f137
HMH
569
570hotkey_report_mode set to 1 makes the driver export through the procfs
571ACPI event interface all hot key presses (which are *also* sent to the
572input layer). This is a legacy compatibility behaviour, and it is also
573the default mode of operation for the driver.
574
575hotkey_report_mode set to 2 makes the driver filter out the hot key
576presses from the procfs ACPI event interface, so these events will only
577be sent through the input layer. Userspace that has been updated to use
578the thinkpad-acpi input layer interface should set hotkey_report_mode to
5792.
580
581Hot key press events are never sent to the ACPI netlink event interface.
582Really up-to-date userspace under kernel 2.6.23 and later is to use the
583netlink interface and the input layer interface, and don't bother at all
584with hotkey_report_mode.
585
a0416420 586
b5972796
HMH
587Brightness hotkey notes:
588
589These are the current sane choices for brightness key mapping in
590thinkpad-acpi:
591
592For IBM and Lenovo models *without* ACPI backlight control (the ones on
593which thinkpad-acpi will autoload its backlight interface by default,
594and on which ACPI video does not export a backlight interface):
595
5961. Don't enable or map the brightness hotkeys in thinkpad-acpi, as
597 these older firmware versions unfortunately won't respect the hotkey
598 mask for brightness keys anyway, and always reacts to them. This
599 usually work fine, unless X.org drivers are doing something to block
600 the BIOS. In that case, use (3) below. This is the default mode of
601 operation.
602
6032. Enable the hotkeys, but map them to something else that is NOT
604 KEY_BRIGHTNESS_UP/DOWN or any other keycode that would cause
605 userspace to try to change the backlight level, and use that as an
606 on-screen-display hint.
607
6083. IF AND ONLY IF X.org drivers find a way to block the firmware from
609 automatically changing the brightness, enable the hotkeys and map
610 them to KEY_BRIGHTNESS_UP and KEY_BRIGHTNESS_DOWN, and feed that to
611 something that calls xbacklight. thinkpad-acpi will not be able to
612 change brightness in that case either, so you should disable its
613 backlight interface.
614
615For Lenovo models *with* ACPI backlight control:
616
6171. Load up ACPI video and use that. ACPI video will report ACPI
618 events for brightness change keys. Do not mess with thinkpad-acpi
619 defaults in this case. thinkpad-acpi should not have anything to do
620 with backlight events in a scenario where ACPI video is loaded:
621 brightness hotkeys must be disabled, and the backlight interface is
622 to be kept disabled as well. This is the default mode of operation.
623
6242. Do *NOT* load up ACPI video, enable the hotkeys in thinkpad-acpi,
625 and map them to KEY_BRIGHTNESS_UP and KEY_BRIGHTNESS_DOWN. Process
626 these keys on userspace somehow (e.g. by calling xbacklight).
627
078ac19e 628
d3a6ade4
HMH
629Bluetooth
630---------
1da177e4 631
d3a6ade4 632procfs: /proc/acpi/ibm/bluetooth
0e74dc26
HMH
633sysfs device attribute: bluetooth_enable (deprecated)
634sysfs rfkill class: switch "tpacpi_bluetooth_sw"
d3a6ade4
HMH
635
636This feature shows the presence and current state of a ThinkPad
637Bluetooth device in the internal ThinkPad CDC slot.
638
078ac19e
HMH
639If the ThinkPad supports it, the Bluetooth state is stored in NVRAM,
640so it is kept across reboots and power-off.
641
d3a6ade4
HMH
642Procfs notes:
643
644If Bluetooth is installed, the following commands can be used:
1da177e4
LT
645
646 echo enable > /proc/acpi/ibm/bluetooth
647 echo disable > /proc/acpi/ibm/bluetooth
648
d3a6ade4
HMH
649Sysfs notes:
650
651 If the Bluetooth CDC card is installed, it can be enabled /
cc4c24e1 652 disabled through the "bluetooth_enable" thinkpad-acpi device
d3a6ade4
HMH
653 attribute, and its current status can also be queried.
654
655 enable:
656 0: disables Bluetooth / Bluetooth is disabled
657 1: enables Bluetooth / Bluetooth is enabled.
658
0e74dc26
HMH
659 Note: this interface has been superseded by the generic rfkill
660 class. It has been deprecated, and it will be removed in year
661 2010.
662
663 rfkill controller switch "tpacpi_bluetooth_sw": refer to
664 Documentation/rfkill.txt for details.
d3a6ade4 665
078ac19e 666
1da177e4
LT
667Video output control -- /proc/acpi/ibm/video
668--------------------------------------------
669
670This feature allows control over the devices used for video output -
671LCD, CRT or DVI (if available). The following commands are available:
672
673 echo lcd_enable > /proc/acpi/ibm/video
674 echo lcd_disable > /proc/acpi/ibm/video
675 echo crt_enable > /proc/acpi/ibm/video
676 echo crt_disable > /proc/acpi/ibm/video
677 echo dvi_enable > /proc/acpi/ibm/video
678 echo dvi_disable > /proc/acpi/ibm/video
679 echo auto_enable > /proc/acpi/ibm/video
680 echo auto_disable > /proc/acpi/ibm/video
681 echo expand_toggle > /proc/acpi/ibm/video
682 echo video_switch > /proc/acpi/ibm/video
683
684Each video output device can be enabled or disabled individually.
685Reading /proc/acpi/ibm/video shows the status of each device.
686
687Automatic video switching can be enabled or disabled. When automatic
688video switching is enabled, certain events (e.g. opening the lid,
689docking or undocking) cause the video output device to change
690automatically. While this can be useful, it also causes flickering
691and, on the X40, video corruption. By disabling automatic switching,
692the flickering or video corruption can be avoided.
693
694The video_switch command cycles through the available video outputs
78f81cc4 695(it simulates the behavior of Fn-F7).
1da177e4
LT
696
697Video expansion can be toggled through this feature. This controls
698whether the display is expanded to fill the entire LCD screen when a
699mode with less than full resolution is used. Note that the current
700video expansion status cannot be determined through this feature.
701
702Note that on many models (particularly those using Radeon graphics
703chips) the X driver configures the video card in a way which prevents
704Fn-F7 from working. This also disables the video output switching
705features of this driver, as it uses the same ACPI methods as
706Fn-F7. Video switching on the console should still work.
707
078ac19e 708UPDATE: refer to https://bugs.freedesktop.org/show_bug.cgi?id=2000
78f81cc4 709
78f81cc4 710
e306501d
HMH
711ThinkLight control
712------------------
713
714procfs: /proc/acpi/ibm/light
65807cc2 715sysfs attributes: as per LED class, for the "tpacpi::thinklight" LED
e306501d
HMH
716
717procfs notes:
1da177e4 718
e306501d
HMH
719The ThinkLight status can be read and set through the procfs interface. A
720few models which do not make the status available will show the ThinkLight
721status as "unknown". The available commands are:
1da177e4
LT
722
723 echo on > /proc/acpi/ibm/light
724 echo off > /proc/acpi/ibm/light
725
e306501d
HMH
726sysfs notes:
727
65807cc2
HMH
728The ThinkLight sysfs interface is documented by the LED class
729documentation, in Documentation/leds-class.txt. The ThinkLight LED name
e306501d
HMH
730is "tpacpi::thinklight".
731
078ac19e 732Due to limitations in the sysfs LED class, if the status of the ThinkLight
e306501d
HMH
733cannot be read or if it is unknown, thinkpad-acpi will report it as "off".
734It is impossible to know if the status returned through sysfs is valid.
735
078ac19e 736
78f81cc4 737Docking / undocking -- /proc/acpi/ibm/dock
1da177e4
LT
738------------------------------------------
739
740Docking and undocking (e.g. with the X4 UltraBase) requires some
741actions to be taken by the operating system to safely make or break
742the electrical connections with the dock.
743
744The docking feature of this driver generates the following ACPI events:
745
746 ibm/dock GDCK 00000003 00000001 -- eject request
747 ibm/dock GDCK 00000003 00000002 -- undocked
748 ibm/dock GDCK 00000000 00000003 -- docked
749
750NOTE: These events will only be generated if the laptop was docked
751when originally booted. This is due to the current lack of support for
752hot plugging of devices in the Linux ACPI framework. If the laptop was
753booted while not in the dock, the following message is shown in the
78f81cc4
BD
754logs:
755
643f12db 756 Mar 17 01:42:34 aero kernel: thinkpad_acpi: dock device not present
78f81cc4
BD
757
758In this case, no dock-related events are generated but the dock and
759undock commands described below still work. They can be executed
760manually or triggered by Fn key combinations (see the example acpid
761configuration files included in the driver tarball package available
762on the web site).
1da177e4
LT
763
764When the eject request button on the dock is pressed, the first event
765above is generated. The handler for this event should issue the
766following command:
767
768 echo undock > /proc/acpi/ibm/dock
769
770After the LED on the dock goes off, it is safe to eject the laptop.
771Note: if you pressed this key by mistake, go ahead and eject the
772laptop, then dock it back in. Otherwise, the dock may not function as
773expected.
774
775When the laptop is docked, the third event above is generated. The
776handler for this event should issue the following command to fully
777enable the dock:
778
779 echo dock > /proc/acpi/ibm/dock
780
781The contents of the /proc/acpi/ibm/dock file shows the current status
782of the dock, as provided by the ACPI framework.
783
784The docking support in this driver does not take care of enabling or
785disabling any other devices you may have attached to the dock. For
786example, a CD drive plugged into the UltraBase needs to be disabled or
787enabled separately. See the provided example acpid configuration files
788for how this can be accomplished.
789
790There is no support yet for PCI devices that may be attached to a
791docking station, e.g. in the ThinkPad Dock II. The driver currently
792does not recognize, enable or disable such devices. This means that
793the only docking stations currently supported are the X-series
794UltraBase docks and "dumb" port replicators like the Mini Dock (the
795latter don't need any ACPI support, actually).
796
078ac19e 797
78f81cc4 798UltraBay eject -- /proc/acpi/ibm/bay
1da177e4
LT
799------------------------------------
800
801Inserting or ejecting an UltraBay device requires some actions to be
802taken by the operating system to safely make or break the electrical
803connections with the device.
804
805This feature generates the following ACPI events:
806
807 ibm/bay MSTR 00000003 00000000 -- eject request
808 ibm/bay MSTR 00000001 00000000 -- eject lever inserted
809
810NOTE: These events will only be generated if the UltraBay was present
811when the laptop was originally booted (on the X series, the UltraBay
812is in the dock, so it may not be present if the laptop was undocked).
813This is due to the current lack of support for hot plugging of devices
814in the Linux ACPI framework. If the laptop was booted without the
78f81cc4
BD
815UltraBay, the following message is shown in the logs:
816
643f12db 817 Mar 17 01:42:34 aero kernel: thinkpad_acpi: bay device not present
78f81cc4
BD
818
819In this case, no bay-related events are generated but the eject
1da177e4
LT
820command described below still works. It can be executed manually or
821triggered by a hot key combination.
822
823Sliding the eject lever generates the first event shown above. The
824handler for this event should take whatever actions are necessary to
825shut down the device in the UltraBay (e.g. call idectl), then issue
826the following command:
827
828 echo eject > /proc/acpi/ibm/bay
829
830After the LED on the UltraBay goes off, it is safe to pull out the
831device.
832
833When the eject lever is inserted, the second event above is
834generated. The handler for this event should take whatever actions are
835necessary to enable the UltraBay device (e.g. call idectl).
836
837The contents of the /proc/acpi/ibm/bay file shows the current status
838of the UltraBay, as provided by the ACPI framework.
839
78f81cc4
BD
840EXPERIMENTAL warm eject support on the 600e/x, A22p and A3x (To use
841this feature, you need to supply the experimental=1 parameter when
842loading the module):
843
844These models do not have a button near the UltraBay device to request
845a hot eject but rather require the laptop to be put to sleep
846(suspend-to-ram) before the bay device is ejected or inserted).
847The sequence of steps to eject the device is as follows:
848
849 echo eject > /proc/acpi/ibm/bay
850 put the ThinkPad to sleep
851 remove the drive
852 resume from sleep
853 cat /proc/acpi/ibm/bay should show that the drive was removed
854
855On the A3x, both the UltraBay 2000 and UltraBay Plus devices are
856supported. Use "eject2" instead of "eject" for the second bay.
1da177e4 857
78f81cc4
BD
858Note: the UltraBay eject support on the 600e/x, A22p and A3x is
859EXPERIMENTAL and may not work as expected. USE WITH CAUTION!
1da177e4 860
078ac19e
HMH
861
862CMOS/UCMS control
863-----------------
b616004c
HMH
864
865procfs: /proc/acpi/ibm/cmos
866sysfs device attribute: cmos_command
1da177e4 867
d54b7d7f
HMH
868This feature is mostly used internally by the ACPI firmware to keep the legacy
869CMOS NVRAM bits in sync with the current machine state, and to record this
870state so that the ThinkPad will retain such settings across reboots.
871
872Some of these commands actually perform actions in some ThinkPad models, but
873this is expected to disappear more and more in newer models. As an example, in
874a T43 and in a X40, commands 12 and 13 still control the ThinkLight state for
875real, but commands 0 to 2 don't control the mixer anymore (they have been
876phased out) and just update the NVRAM.
1da177e4 877
b616004c
HMH
878The range of valid cmos command numbers is 0 to 21, but not all have an
879effect and the behavior varies from model to model. Here is the behavior
880on the X40 (tpb is the ThinkPad Buttons utility):
1da177e4 881
d54b7d7f
HMH
882 0 - Related to "Volume down" key press
883 1 - Related to "Volume up" key press
884 2 - Related to "Mute on" key press
885 3 - Related to "Access IBM" key press
d0788cfb 886 4 - Related to "LCD brightness up" key press
d54b7d7f
HMH
887 5 - Related to "LCD brightness down" key press
888 11 - Related to "toggle screen expansion" key press/function
889 12 - Related to "ThinkLight on"
890 13 - Related to "ThinkLight off"
d0788cfb 891 14 - Related to "ThinkLight" key press (toggle ThinkLight)
1da177e4 892
b616004c 893The cmos command interface is prone to firmware split-brain problems, as
d54b7d7f
HMH
894in newer ThinkPads it is just a compatibility layer. Do not use it, it is
895exported just as a debug tool.
b616004c 896
078ac19e 897
af116101
HMH
898LED control
899-----------
1da177e4 900
af116101 901procfs: /proc/acpi/ibm/led
65807cc2 902sysfs attributes: as per LED class, see below for names
af116101
HMH
903
904Some of the LED indicators can be controlled through this feature. On
905some older ThinkPad models, it is possible to query the status of the
906LED indicators as well. Newer ThinkPads cannot query the real status
907of the LED indicators.
908
909procfs notes:
910
911The available commands are:
1da177e4 912
65807cc2
HMH
913 echo '<LED number> on' >/proc/acpi/ibm/led
914 echo '<LED number> off' >/proc/acpi/ibm/led
915 echo '<LED number> blink' >/proc/acpi/ibm/led
1da177e4 916
65807cc2 917The <LED number> range is 0 to 7. The set of LEDs that can be
af116101
HMH
918controlled varies from model to model. Here is the common ThinkPad
919mapping:
1da177e4
LT
920
921 0 - power
922 1 - battery (orange)
923 2 - battery (green)
af116101 924 3 - UltraBase/dock
1da177e4 925 4 - UltraBay
af116101
HMH
926 5 - UltraBase battery slot
927 6 - (unknown)
1da177e4
LT
928 7 - standby
929
930All of the above can be turned on and off and can be made to blink.
931
af116101
HMH
932sysfs notes:
933
65807cc2 934The ThinkPad LED sysfs interface is described in detail by the LED class
af116101
HMH
935documentation, in Documentation/leds-class.txt.
936
937The leds are named (in LED ID order, from 0 to 7):
938"tpacpi::power", "tpacpi:orange:batt", "tpacpi:green:batt",
939"tpacpi::dock_active", "tpacpi::bay_active", "tpacpi::dock_batt",
940"tpacpi::unknown_led", "tpacpi::standby".
941
65807cc2 942Due to limitations in the sysfs LED class, if the status of the LED
af116101
HMH
943indicators cannot be read due to an error, thinkpad-acpi will report it as
944a brightness of zero (same as LED off).
945
946If the thinkpad firmware doesn't support reading the current status,
947trying to read the current LED brightness will just return whatever
948brightness was last written to that attribute.
949
950These LEDs can blink using hardware acceleration. To request that a
951ThinkPad indicator LED should blink in hardware accelerated mode, use the
952"timer" trigger, and leave the delay_on and delay_off parameters set to
953zero (to request hardware acceleration autodetection).
954
078ac19e 955
78f81cc4
BD
956ACPI sounds -- /proc/acpi/ibm/beep
957----------------------------------
1da177e4
LT
958
959The BEEP method is used internally by the ACPI firmware to provide
78f81cc4 960audible alerts in various situations. This feature allows the same
1da177e4
LT
961sounds to be triggered manually.
962
963The commands are non-negative integer numbers:
964
78f81cc4 965 echo <number> >/proc/acpi/ibm/beep
1da177e4 966
78f81cc4
BD
967The valid <number> range is 0 to 17. Not all numbers trigger sounds
968and the sounds vary from model to model. Here is the behavior on the
969X40:
1da177e4 970
78f81cc4
BD
971 0 - stop a sound in progress (but use 17 to stop 16)
972 2 - two beeps, pause, third beep ("low battery")
1da177e4 973 3 - single beep
78f81cc4 974 4 - high, followed by low-pitched beep ("unable")
1da177e4 975 5 - single beep
78f81cc4 976 6 - very high, followed by high-pitched beep ("AC/DC")
1da177e4
LT
977 7 - high-pitched beep
978 9 - three short beeps
979 10 - very long beep
980 12 - low-pitched beep
78f81cc4
BD
981 15 - three high-pitched beeps repeating constantly, stop with 0
982 16 - one medium-pitched beep repeating constantly, stop with 17
983 17 - stop 16
984
078ac19e 985
2c37aa4e
HMH
986Temperature sensors
987-------------------
988
989procfs: /proc/acpi/ibm/thermal
7fd40029 990sysfs device attributes: (hwmon "thinkpad") temp*_input
78f81cc4 991
3d6f99ca
HMH
992Most ThinkPads include six or more separate temperature sensors but only
993expose the CPU temperature through the standard ACPI methods. This
994feature shows readings from up to eight different sensors on older
995ThinkPads, and up to sixteen different sensors on newer ThinkPads.
60eb0b35
HMH
996
997For example, on the X40, a typical output may be:
78f81cc4
BD
998temperatures: 42 42 45 41 36 -128 33 -128
999
3d6f99ca 1000On the T43/p, a typical output may be:
60eb0b35
HMH
1001temperatures: 48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128
1002
1003The mapping of thermal sensors to physical locations varies depending on
1004system-board model (and thus, on ThinkPad model).
1005
1006http://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that
1007tries to track down these locations for various models.
1008
1009Most (newer?) models seem to follow this pattern:
78f81cc4
BD
1010
10111: CPU
60eb0b35
HMH
10122: (depends on model)
10133: (depends on model)
78f81cc4 10144: GPU
60eb0b35
HMH
10155: Main battery: main sensor
10166: Bay battery: main sensor
10177: Main battery: secondary sensor
10188: Bay battery: secondary sensor
10199-15: (depends on model)
1020
1021For the R51 (source: Thomas Gruber):
10222: Mini-PCI
10233: Internal HDD
1024
1025For the T43, T43/p (source: Shmidoax/Thinkwiki.org)
1026http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p
10272: System board, left side (near PCMCIA slot), reported as HDAPS temp
10283: PCMCIA slot
10299: MCH (northbridge) to DRAM Bus
b8b26402
HMH
103010: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI
1031 card, under touchpad
60eb0b35 103211: Power regulator, underside of system board, below F2 key
78f81cc4 1033
88679a15
HMH
1034The A31 has a very atypical layout for the thermal sensors
1035(source: Milos Popovic, http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31)
10361: CPU
10372: Main Battery: main sensor
10383: Power Converter
10394: Bay Battery: main sensor
10405: MCH (northbridge)
10416: PCMCIA/ambient
10427: Main Battery: secondary sensor
10438: Bay Battery: secondary sensor
1044
78f81cc4 1045
2c37aa4e
HMH
1046Procfs notes:
1047 Readings from sensors that are not available return -128.
1048 No commands can be written to this file.
1049
1050Sysfs notes:
1051 Sensors that are not available return the ENXIO error. This
1052 status may change at runtime, as there are hotplug thermal
1053 sensors, like those inside the batteries and docks.
1054
1055 thinkpad-acpi thermal sensors are reported through the hwmon
1056 subsystem, and follow all of the hwmon guidelines at
1057 Documentation/hwmon.
1058
1059
d6bc8ac9 1060EXPERIMENTAL: Embedded controller register dump -- /proc/acpi/ibm/ecdump
78f81cc4
BD
1061------------------------------------------------------------------------
1062
1063This feature is marked EXPERIMENTAL because the implementation
1064directly accesses hardware registers and may not work as expected. USE
1065WITH CAUTION! To use this feature, you need to supply the
1066experimental=1 parameter when loading the module.
1067
1068This feature dumps the values of 256 embedded controller
1069registers. Values which have changed since the last time the registers
1070were dumped are marked with a star:
1071
837ca6dd 1072[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
78f81cc4
BD
1073EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
1074EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00
1075EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00
1076EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80
1077EC 0x30: 01 07 1a 00 30 04 00 00 *85 00 00 10 00 50 00 00
1078EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00
1079EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 *bc *02 *bc
1080EC 0x60: *02 *bc *02 00 00 00 00 00 00 00 00 00 00 00 00 00
1081EC 0x70: 00 00 00 00 00 12 30 40 *24 *26 *2c *27 *20 80 *1f 80
1082EC 0x80: 00 00 00 06 *37 *0e 03 00 00 00 0e 07 00 00 00 00
1083EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1084EC 0xa0: *ff 09 ff 09 ff ff *64 00 *00 *00 *a2 41 *ff *ff *e0 00
1085EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1086EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1087EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1088EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03
1089EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a
1090
1091This feature can be used to determine the register holding the fan
1092speed on some models. To do that, do the following:
1093
1094 - make sure the battery is fully charged
1095 - make sure the fan is running
1096 - run 'cat /proc/acpi/ibm/ecdump' several times, once per second or so
1097
1098The first step makes sure various charging-related values don't
1099vary. The second ensures that the fan-related values do vary, since
1100the fan speed fluctuates a bit. The third will (hopefully) mark the
1101fan register with a star:
1102
837ca6dd 1103[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
78f81cc4
BD
1104EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
1105EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00
1106EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00
1107EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80
1108EC 0x30: 01 07 1a 00 30 04 00 00 85 00 00 10 00 50 00 00
1109EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00
1110EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 bc 02 bc
1111EC 0x60: 02 bc 02 00 00 00 00 00 00 00 00 00 00 00 00 00
1112EC 0x70: 00 00 00 00 00 12 30 40 24 27 2c 27 21 80 1f 80
1113EC 0x80: 00 00 00 06 *be 0d 03 00 00 00 0e 07 00 00 00 00
1114EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1115EC 0xa0: ff 09 ff 09 ff ff 64 00 00 00 a2 41 ff ff e0 00
1116EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1117EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1118EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1119EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03
1120EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a
1121
1122Another set of values that varies often is the temperature
1123readings. Since temperatures don't change vary fast, you can take
1124several quick dumps to eliminate them.
1125
1126You can use a similar method to figure out the meaning of other
1127embedded controller registers - e.g. make sure nothing else changes
1128except the charging or discharging battery to determine which
1129registers contain the current battery capacity, etc. If you experiment
1130with this, do send me your results (including some complete dumps with
1131a description of the conditions when they were taken.)
1132
078ac19e 1133
7d5a015e
HMH
1134LCD brightness control
1135----------------------
1136
1137procfs: /proc/acpi/ibm/brightness
1138sysfs backlight device "thinkpad_screen"
78f81cc4
BD
1139
1140This feature allows software control of the LCD brightness on ThinkPad
7d5a015e
HMH
1141models which don't have a hardware brightness slider.
1142
078ac19e
HMH
1143It has some limitations: the LCD backlight cannot be actually turned
1144on or off by this interface, it just controls the backlight brightness
1145level.
a3f104c0
HMH
1146
1147On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
1148has eight brightness levels, ranging from 0 to 7. Some of the levels
1149may not be distinct. Later Lenovo models that implement the ACPI
1150display backlight brightness control methods have 16 levels, ranging
1151from 0 to 15.
1152
1153There are two interfaces to the firmware for direct brightness control,
1154EC and CMOS. To select which one should be used, use the
1155brightness_mode module parameter: brightness_mode=1 selects EC mode,
1156brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
d0788cfb 1157and CMOS. The driver tries to auto-detect which interface to use.
a3f104c0
HMH
1158
1159When display backlight brightness controls are available through the
1160standard ACPI interface, it is best to use it instead of this direct
e11e211a
HMH
1161ThinkPad-specific interface. The driver will disable its native
1162backlight brightness control interface if it detects that the standard
1163ACPI interface is available in the ThinkPad.
24d3b774 1164
87cc537a
HMH
1165The brightness_enable module parameter can be used to control whether
1166the LCD brightness control feature will be enabled when available.
e11e211a
HMH
1167brightness_enable=0 forces it to be disabled. brightness_enable=1
1168forces it to be enabled when available, even if the standard ACPI
1169interface is also available.
87cc537a 1170
7d5a015e
HMH
1171Procfs notes:
1172
1173 The available commands are:
78f81cc4
BD
1174
1175 echo up >/proc/acpi/ibm/brightness
1176 echo down >/proc/acpi/ibm/brightness
1177 echo 'level <level>' >/proc/acpi/ibm/brightness
1178
7d5a015e
HMH
1179Sysfs notes:
1180
a3f104c0
HMH
1181The interface is implemented through the backlight sysfs class, which is
1182poorly documented at this time.
7d5a015e 1183
a3f104c0
HMH
1184Locate the thinkpad_screen device under /sys/class/backlight, and inside
1185it there will be the following attributes:
7d5a015e
HMH
1186
1187 max_brightness:
1188 Reads the maximum brightness the hardware can be set to.
1189 The minimum is always zero.
1190
1191 actual_brightness:
1192 Reads what brightness the screen is set to at this instant.
1193
1194 brightness:
a3f104c0
HMH
1195 Writes request the driver to change brightness to the
1196 given value. Reads will tell you what brightness the
1197 driver is trying to set the display to when "power" is set
1198 to zero and the display has not been dimmed by a kernel
1199 power management event.
7d5a015e
HMH
1200
1201 power:
a3f104c0
HMH
1202 power management mode, where 0 is "display on", and 1 to 3
1203 will dim the display backlight to brightness level 0
1204 because thinkpad-acpi cannot really turn the backlight
1205 off. Kernel power management events can temporarily
1206 increase the current power management level, i.e. they can
1207 dim the display.
7d5a015e 1208
78f81cc4 1209
b5972796
HMH
1210WARNING:
1211
1212 Whatever you do, do NOT ever call thinkpad-acpi backlight-level change
1213 interface and the ACPI-based backlight level change interface
1214 (available on newer BIOSes, and driven by the Linux ACPI video driver)
1215 at the same time. The two will interact in bad ways, do funny things,
1216 and maybe reduce the life of the backlight lamps by needlessly kicking
1217 its level up and down at every change.
1218
078ac19e 1219
24f7ff0a
SS
1220Volume control -- /proc/acpi/ibm/volume
1221---------------------------------------
78f81cc4
BD
1222
1223This feature allows volume control on ThinkPad models which don't have
1224a hardware volume knob. The available commands are:
1225
1226 echo up >/proc/acpi/ibm/volume
1227 echo down >/proc/acpi/ibm/volume
1228 echo mute >/proc/acpi/ibm/volume
1229 echo 'level <level>' >/proc/acpi/ibm/volume
1230
1231The <level> number range is 0 to 15 although not all of them may be
1232distinct. The unmute the volume after the mute command, use either the
1233up or down command (the level command will not unmute the volume).
1234The current volume level and mute state is shown in the file.
1235
078ac19e
HMH
1236The ALSA mixer interface to this feature is still missing, but patches
1237to add it exist. That problem should be addressed in the not so
1238distant future.
1239
1240
ecf2a80a
HMH
1241Fan control and monitoring: fan speed, fan enable/disable
1242---------------------------------------------------------
fe98a52c
HMH
1243
1244procfs: /proc/acpi/ibm/fan
7fd40029
HMH
1245sysfs device attributes: (hwmon "thinkpad") fan1_input, pwm1,
1246 pwm1_enable
1247sysfs hwmon driver attributes: fan_watchdog
78f81cc4 1248
ecf2a80a
HMH
1249NOTE NOTE NOTE: fan control operations are disabled by default for
1250safety reasons. To enable them, the module parameter "fan_control=1"
1251must be given to thinkpad-acpi.
78f81cc4 1252
a12095c2
HMH
1253This feature attempts to show the current fan speed, control mode and
1254other fan data that might be available. The speed is read directly
1255from the hardware registers of the embedded controller. This is known
ecf2a80a 1256to work on later R, T, X and Z series ThinkPads but may show a bogus
a12095c2
HMH
1257value on other models.
1258
fe98a52c 1259Fan levels:
a12095c2 1260
fe98a52c
HMH
1261Most ThinkPad fans work in "levels" at the firmware interface. Level 0
1262stops the fan. The higher the level, the higher the fan speed, although
1263adjacent levels often map to the same fan speed. 7 is the highest
1264level, where the fan reaches the maximum recommended speed.
78f81cc4 1265
fe98a52c
HMH
1266Level "auto" means the EC changes the fan level according to some
1267internal algorithm, usually based on readings from the thermal sensors.
78f81cc4 1268
fe98a52c
HMH
1269There is also a "full-speed" level, also known as "disengaged" level.
1270In this level, the EC disables the speed-locked closed-loop fan control,
1271and drives the fan as fast as it can go, which might exceed hardware
1272limits, so use this level with caution.
78f81cc4 1273
fe98a52c
HMH
1274The fan usually ramps up or down slowly from one speed to another, and
1275it is normal for the EC to take several seconds to react to fan
1276commands. The full-speed level may take up to two minutes to ramp up to
1277maximum speed, and in some ThinkPads, the tachometer readings go stale
1278while the EC is transitioning to the full-speed level.
a12095c2 1279
78f81cc4 1280WARNING WARNING WARNING: do not leave the fan disabled unless you are
a12095c2
HMH
1281monitoring all of the temperature sensor readings and you are ready to
1282enable it if necessary to avoid overheating.
1283
1284An enabled fan in level "auto" may stop spinning if the EC decides the
1285ThinkPad is cool enough and doesn't need the extra airflow. This is
01dd2fbf 1286normal, and the EC will spin the fan up if the various thermal readings
a12095c2
HMH
1287rise too much.
1288
1289On the X40, this seems to depend on the CPU and HDD temperatures.
1290Specifically, the fan is turned on when either the CPU temperature
1291climbs to 56 degrees or the HDD temperature climbs to 46 degrees. The
1292fan is turned off when the CPU temperature drops to 49 degrees and the
1293HDD temperature drops to 41 degrees. These thresholds cannot
1294currently be controlled.
1295
fe98a52c
HMH
1296The ThinkPad's ACPI DSDT code will reprogram the fan on its own when
1297certain conditions are met. It will override any fan programming done
1298through thinkpad-acpi.
1299
1300The thinkpad-acpi kernel driver can be programmed to revert the fan
1301level to a safe setting if userspace does not issue one of the procfs
1302fan commands: "enable", "disable", "level" or "watchdog", or if there
1303are no writes to pwm1_enable (or to pwm1 *if and only if* pwm1_enable is
1304set to 1, manual mode) within a configurable amount of time of up to
1305120 seconds. This functionality is called fan safety watchdog.
1306
1307Note that the watchdog timer stops after it enables the fan. It will be
1308rearmed again automatically (using the same interval) when one of the
1309above mentioned fan commands is received. The fan watchdog is,
1310therefore, not suitable to protect against fan mode changes made through
1311means other than the "enable", "disable", and "level" procfs fan
1312commands, or the hwmon fan control sysfs interface.
1313
1314Procfs notes:
1315
1316The fan may be enabled or disabled with the following commands:
1317
1318 echo enable >/proc/acpi/ibm/fan
1319 echo disable >/proc/acpi/ibm/fan
1320
1321Placing a fan on level 0 is the same as disabling it. Enabling a fan
1322will try to place it in a safe level if it is too slow or disabled.
1323
a12095c2 1324The fan level can be controlled with the command:
78f81cc4 1325
fe98a52c 1326 echo 'level <level>' > /proc/acpi/ibm/fan
a12095c2 1327
fe98a52c
HMH
1328Where <level> is an integer from 0 to 7, or one of the words "auto" or
1329"full-speed" (without the quotes). Not all ThinkPads support the "auto"
1330and "full-speed" levels. The driver accepts "disengaged" as an alias for
1331"full-speed", and reports it as "disengaged" for backwards
1332compatibility.
78f81cc4
BD
1333
1334On the X31 and X40 (and ONLY on those models), the fan speed can be
fe98a52c 1335controlled to a certain degree. Once the fan is running, it can be
78f81cc4
BD
1336forced to run faster or slower with the following command:
1337
fe98a52c 1338 echo 'speed <speed>' > /proc/acpi/ibm/fan
78f81cc4 1339
fe98a52c
HMH
1340The sustainable range of fan speeds on the X40 appears to be from about
13413700 to about 7350. Values outside this range either do not have any
1342effect or the fan speed eventually settles somewhere in that range. The
1343fan cannot be stopped or started with this command. This functionality
1344is incomplete, and not available through the sysfs interface.
78f81cc4 1345
fe98a52c
HMH
1346To program the safety watchdog, use the "watchdog" command.
1347
1348 echo 'watchdog <interval in seconds>' > /proc/acpi/ibm/fan
1349
1350If you want to disable the watchdog, use 0 as the interval.
1351
1352Sysfs notes:
1353
1354The sysfs interface follows the hwmon subsystem guidelines for the most
1355part, and the exception is the fan safety watchdog.
1356
b39fe582
HMH
1357Writes to any of the sysfs attributes may return the EINVAL error if
1358that operation is not supported in a given ThinkPad or if the parameter
1359is out-of-bounds, and EPERM if it is forbidden. They may also return
1360EINTR (interrupted system call), and EIO (I/O error while trying to talk
1361to the firmware).
1362
1363Features not yet implemented by the driver return ENOSYS.
1364
fe98a52c
HMH
1365hwmon device attribute pwm1_enable:
1366 0: PWM offline (fan is set to full-speed mode)
1367 1: Manual PWM control (use pwm1 to set fan level)
1368 2: Hardware PWM control (EC "auto" mode)
1369 3: reserved (Software PWM control, not implemented yet)
1370
b39fe582
HMH
1371 Modes 0 and 2 are not supported by all ThinkPads, and the
1372 driver is not always able to detect this. If it does know a
1373 mode is unsupported, it will return -EINVAL.
fe98a52c
HMH
1374
1375hwmon device attribute pwm1:
1376 Fan level, scaled from the firmware values of 0-7 to the hwmon
1377 scale of 0-255. 0 means fan stopped, 255 means highest normal
1378 speed (level 7).
1379
1380 This attribute only commands the fan if pmw1_enable is set to 1
1381 (manual PWM control).
1382
1383hwmon device attribute fan1_input:
1384 Fan tachometer reading, in RPM. May go stale on certain
1385 ThinkPads while the EC transitions the PWM to offline mode,
1386 which can take up to two minutes. May return rubbish on older
1387 ThinkPads.
1388
7fd40029 1389hwmon driver attribute fan_watchdog:
fe98a52c
HMH
1390 Fan safety watchdog timer interval, in seconds. Minimum is
1391 1 second, maximum is 120 seconds. 0 disables the watchdog.
1392
1393To stop the fan: set pwm1 to zero, and pwm1_enable to 1.
1394
1395To start the fan in a safe mode: set pwm1_enable to 2. If that fails
b39fe582
HMH
1396with EINVAL, try to set pwm1_enable to 1 and pwm1 to at least 128 (255
1397would be the safest choice, though).
1da177e4 1398
38f996ed 1399
9662e080
JF
1400WAN
1401---
d3a6ade4
HMH
1402
1403procfs: /proc/acpi/ibm/wan
0e74dc26
HMH
1404sysfs device attribute: wwan_enable (deprecated)
1405sysfs rfkill class: switch "tpacpi_wwan_sw"
28b779d1 1406
078ac19e
HMH
1407This feature shows the presence and current state of the built-in
1408Wireless WAN device.
1409
1410If the ThinkPad supports it, the WWAN state is stored in NVRAM,
1411so it is kept across reboots and power-off.
d3a6ade4 1412
d0788cfb
HMH
1413It was tested on a Lenovo ThinkPad X60. It should probably work on other
1414ThinkPad models which come with this module installed.
d3a6ade4
HMH
1415
1416Procfs notes:
1417
1418If the W-WAN card is installed, the following commands can be used:
28b779d1
SS
1419
1420 echo enable > /proc/acpi/ibm/wan
1421 echo disable > /proc/acpi/ibm/wan
1422
d3a6ade4
HMH
1423Sysfs notes:
1424
1425 If the W-WAN card is installed, it can be enabled /
cc4c24e1 1426 disabled through the "wwan_enable" thinkpad-acpi device
d3a6ade4
HMH
1427 attribute, and its current status can also be queried.
1428
1429 enable:
1430 0: disables WWAN card / WWAN card is disabled
1431 1: enables WWAN card / WWAN card is enabled.
1432
0e74dc26
HMH
1433 Note: this interface has been superseded by the generic rfkill
1434 class. It has been deprecated, and it will be removed in year
1435 2010.
1436
1437 rfkill controller switch "tpacpi_wwan_sw": refer to
1438 Documentation/rfkill.txt for details.
1da177e4 1439
078ac19e 1440
0045c0aa
HMH
1441EXPERIMENTAL: UWB
1442-----------------
1443
1444This feature is marked EXPERIMENTAL because it has not been extensively
1445tested and validated in various ThinkPad models yet. The feature may not
1446work as expected. USE WITH CAUTION! To use this feature, you need to supply
1447the experimental=1 parameter when loading the module.
1448
1449sysfs rfkill class: switch "tpacpi_uwb_sw"
1450
1451This feature exports an rfkill controller for the UWB device, if one is
1452present and enabled in the BIOS.
1453
1454Sysfs notes:
1455
1456 rfkill controller switch "tpacpi_uwb_sw": refer to
1457 Documentation/rfkill.txt for details.
1458
078ac19e 1459
78f81cc4
BD
1460Multiple Commands, Module Parameters
1461------------------------------------
1da177e4
LT
1462
1463Multiple commands can be written to the proc files in one shot by
1464separating them with commas, for example:
1465
1466 echo enable,0xffff > /proc/acpi/ibm/hotkey
1467 echo lcd_disable,crt_enable > /proc/acpi/ibm/video
1468
643f12db
HMH
1469Commands can also be specified when loading the thinkpad-acpi module,
1470for example:
1da177e4 1471
643f12db 1472 modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable
1da177e4 1473
078ac19e 1474
132ce091
HMH
1475Enabling debugging output
1476-------------------------
1477
0f035b8e 1478The module takes a debug parameter which can be used to selectively
132ce091
HMH
1479enable various classes of debugging output, for example:
1480
5f24927f 1481 modprobe thinkpad_acpi debug=0xffff
132ce091
HMH
1482
1483will enable all debugging output classes. It takes a bitmask, so
1484to enable more than one output class, just add their values.
1485
fe08bc4b 1486 Debug bitmask Description
73a94d86
HMH
1487 0x8000 Disclose PID of userspace programs
1488 accessing some functions of the driver
fe08bc4b
HMH
1489 0x0001 Initialization and probing
1490 0x0002 Removal
1491
132ce091
HMH
1492There is also a kernel build option to enable more debugging
1493information, which may be necessary to debug driver problems.
0dcef77c 1494
176750d6
HMH
1495The level of debugging information output by the driver can be changed
1496at runtime through sysfs, using the driver attribute debug_level. The
1497attribute takes the same bitmask as the debug module parameter above.
1498
078ac19e 1499
0dcef77c
HMH
1500Force loading of module
1501-----------------------
1502
1503If thinkpad-acpi refuses to detect your ThinkPad, you can try to specify
1504the module parameter force_load=1. Regardless of whether this works or
1505not, please contact ibm-acpi-devel@lists.sourceforge.net with a report.
176750d6
HMH
1506
1507
1508Sysfs interface changelog:
1509
15100x000100: Initial sysfs support, as a single platform driver and
1511 device.
94b08713
HMH
15120x000200: Hot key support for 32 hot keys, and radio slider switch
1513 support.
741553c2
HMH
15140x010000: Hot keys are now handled by default over the input
1515 layer, the radio switch generates input event EV_RADIO,
1516 and the driver enables hot key handling by default in
1517 the firmware.
7fd40029
HMH
1518
15190x020000: ABI fix: added a separate hwmon platform device and
1520 driver, which must be located by name (thinkpad)
1521 and the hwmon class for libsensors4 (lm-sensors 3)
1522 compatibility. Moved all hwmon attributes to this
1523 new platform device.
01e88f25
HMH
1524
15250x020100: Marker for thinkpad-acpi with hot key NVRAM polling
1526 support. If you must, use it to know you should not
0211a9c8 1527 start a userspace NVRAM poller (allows to detect when
01e88f25
HMH
1528 NVRAM is compiled out by the user because it is
1529 unneeded/undesired in the first place).
15300x020101: Marker for thinkpad-acpi with hot key NVRAM polling
d0788cfb 1531 and proper hotkey_mask semantics (version 8 of the
01e88f25
HMH
1532 NVRAM polling patch). Some development snapshots of
1533 0.18 had an earlier version that did strange things
1534 to hotkey_mask.
50ebec09
HMH
1535
15360x020200: Add poll()/select() support to the following attributes:
1537 hotkey_radio_sw, wakeup_hotunplug_complete, wakeup_reason