diff options
Diffstat (limited to 'Documentation/thinkpad-acpi.txt')
-rw-r--r-- | Documentation/thinkpad-acpi.txt | 92 |
1 files changed, 75 insertions, 17 deletions
diff --git a/Documentation/thinkpad-acpi.txt b/Documentation/thinkpad-acpi.txt index eb2f5986e1eb..ca89711f1584 100644 --- a/Documentation/thinkpad-acpi.txt +++ b/Documentation/thinkpad-acpi.txt | |||
@@ -161,20 +161,22 @@ system. Enabling the hotkey functionality of thinkpad-acpi signals the | |||
161 | firmware that such a driver is present, and modifies how the ThinkPad | 161 | firmware that such a driver is present, and modifies how the ThinkPad |
162 | firmware will behave in many situations. | 162 | firmware will behave in many situations. |
163 | 163 | ||
164 | The driver enables the hot key feature automatically when loaded. The | ||
165 | feature can later be disabled and enabled back at runtime. The driver | ||
166 | will also restore the hot key feature to its previous state and mask | ||
167 | when it is unloaded. | ||
168 | |||
164 | When the hotkey feature is enabled and the hot key mask is set (see | 169 | When the hotkey feature is enabled and the hot key mask is set (see |
165 | below), the various hot keys either generate ACPI events in the | 170 | below), the driver will report HKEY events in the following format: |
166 | following format: | ||
167 | 171 | ||
168 | ibm/hotkey HKEY 00000080 0000xxxx | 172 | ibm/hotkey HKEY 00000080 0000xxxx |
169 | 173 | ||
170 | or events over the input layer. The input layer support accepts the | 174 | Some of these events refer to hot key presses, but not all. |
171 | standard IOCTLs to remap the keycodes assigned to each hotkey. | ||
172 | 175 | ||
173 | When the input device is open, the driver will suppress any ACPI hot key | 176 | The driver will generate events over the input layer for hot keys and |
174 | events that get translated into a meaningful input layer event, in order | 177 | radio switches, and over the ACPI netlink layer for other events. The |
175 | to avoid sending duplicate events to userspace. Hot keys that are | 178 | input layer support accepts the standard IOCTLs to remap the keycodes |
176 | mapped to KEY_RESERVED in the keymap are not translated, and will always | 179 | assigned to each hot key. |
177 | generate an ACPI ibm/hotkey HKEY event, and no input layer events. | ||
178 | 180 | ||
179 | The hot key bit mask allows some control over which hot keys generate | 181 | The hot key bit mask allows some control over which hot keys generate |
180 | events. If a key is "masked" (bit set to 0 in the mask), the firmware | 182 | events. If a key is "masked" (bit set to 0 in the mask), the firmware |
@@ -256,6 +258,20 @@ sysfs notes: | |||
256 | disabled" postition, and 1 if the switch is in the | 258 | disabled" postition, and 1 if the switch is in the |
257 | "radios enabled" position. | 259 | "radios enabled" position. |
258 | 260 | ||
261 | hotkey_report_mode: | ||
262 | Returns the state of the procfs ACPI event report mode | ||
263 | filter for hot keys. If it is set to 1 (the default), | ||
264 | all hot key presses are reported both through the input | ||
265 | layer and also as ACPI events through procfs (but not | ||
266 | through netlink). If it is set to 2, hot key presses | ||
267 | are reported only through the input layer. | ||
268 | |||
269 | This attribute is read-only in kernels 2.6.23 or later, | ||
270 | and read-write on earlier kernels. | ||
271 | |||
272 | May return -EPERM (write access locked out by module | ||
273 | parameter) or -EACCES (read-only). | ||
274 | |||
259 | input layer notes: | 275 | input layer notes: |
260 | 276 | ||
261 | A Hot key is mapped to a single input layer EV_KEY event, possibly | 277 | A Hot key is mapped to a single input layer EV_KEY event, possibly |
@@ -393,21 +409,63 @@ unknown by the driver if the ThinkPad firmware triggered these events on | |||
393 | hot key press or release, but the firmware will do it for either one, not | 409 | hot key press or release, but the firmware will do it for either one, not |
394 | both. | 410 | both. |
395 | 411 | ||
396 | If a key is mapped to KEY_RESERVED, it generates no input events at all, | 412 | If a key is mapped to KEY_RESERVED, it generates no input events at all. |
397 | and it may generate a legacy thinkpad-acpi ACPI hotkey event. | ||
398 | |||
399 | If a key is mapped to KEY_UNKNOWN, it generates an input event that | 413 | If a key is mapped to KEY_UNKNOWN, it generates an input event that |
400 | includes an scan code, and it may also generate a legacy thinkpad-acpi | 414 | includes an scan code. If a key is mapped to anything else, it will |
401 | ACPI hotkey event. | 415 | generate input device EV_KEY events. |
402 | |||
403 | If a key is mapped to anything else, it will only generate legacy | ||
404 | thinkpad-acpi ACPI hotkey events if nobody has opened the input device. | ||
405 | 416 | ||
406 | Non hot-key ACPI HKEY event map: | 417 | Non hot-key ACPI HKEY event map: |
407 | 0x5001 Lid closed | 418 | 0x5001 Lid closed |
408 | 0x5002 Lid opened | 419 | 0x5002 Lid opened |
409 | 0x7000 Radio Switch may have changed state | 420 | 0x7000 Radio Switch may have changed state |
410 | 421 | ||
422 | The above events are not propagated by the driver, except for legacy | ||
423 | compatibility purposes when hotkey_report_mode is set to 1. | ||
424 | |||
425 | Compatibility notes: | ||
426 | |||
427 | ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never | ||
428 | supported the input layer, and sent events over the procfs ACPI event | ||
429 | interface. | ||
430 | |||
431 | To avoid sending duplicate events over the input layer and the ACPI | ||
432 | event interface, thinkpad-acpi 0.16 implements a module parameter | ||
433 | (hotkey_report_mode), and also a sysfs device attribute with the same | ||
434 | name. | ||
435 | |||
436 | Make no mistake here: userspace is expected to switch to using the input | ||
437 | layer interface of thinkpad-acpi, together with the ACPI netlink event | ||
438 | interface in kernels 2.6.23 and later, or with the ACPI procfs event | ||
439 | interface in kernels 2.6.22 and earlier. | ||
440 | |||
441 | If no hotkey_report_mode module parameter is specified (or it is set to | ||
442 | zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22 | ||
443 | and earlier, also allows one to change the hotkey_report_mode through | ||
444 | sysfs. In kernels 2.6.23 and later, where the netlink ACPI event | ||
445 | interface is available, hotkey_report_mode cannot be changed through | ||
446 | sysfs (it is read-only). | ||
447 | |||
448 | If the hotkey_report_mode module parameter is set to 1 or 2, it cannot | ||
449 | be changed later through sysfs (any writes will return -EPERM to signal | ||
450 | that hotkey_report_mode was locked. On 2.6.23 and later, where | ||
451 | hotkey_report_mode cannot be changed at all, writes will return -EACES). | ||
452 | |||
453 | hotkey_report_mode set to 1 makes the driver export through the procfs | ||
454 | ACPI event interface all hot key presses (which are *also* sent to the | ||
455 | input layer). This is a legacy compatibility behaviour, and it is also | ||
456 | the default mode of operation for the driver. | ||
457 | |||
458 | hotkey_report_mode set to 2 makes the driver filter out the hot key | ||
459 | presses from the procfs ACPI event interface, so these events will only | ||
460 | be sent through the input layer. Userspace that has been updated to use | ||
461 | the thinkpad-acpi input layer interface should set hotkey_report_mode to | ||
462 | 2. | ||
463 | |||
464 | Hot key press events are never sent to the ACPI netlink event interface. | ||
465 | Really up-to-date userspace under kernel 2.6.23 and later is to use the | ||
466 | netlink interface and the input layer interface, and don't bother at all | ||
467 | with hotkey_report_mode. | ||
468 | |||
411 | 469 | ||
412 | Bluetooth | 470 | Bluetooth |
413 | --------- | 471 | --------- |