Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.24-rc2 1248 lines 48 kB view raw
1 ThinkPad ACPI Extras Driver 2 3 Version 0.16 4 August 2nd, 2007 5 6 Borislav Deianov <borislav@users.sf.net> 7 Henrique de Moraes Holschuh <hmh@hmh.eng.br> 8 http://ibm-acpi.sf.net/ 9 10 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 192.6.22, and release 0.14. 20 21 22Status 23------ 24 25The features currently supported are the following (see below for 26detailed description): 27 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 43 44A compatibility table by model and feature is maintained on the web 45site, http://ibm-acpi.sf.net/. I appreciate any success or failure 46reports, especially if they add to or correct the compatibility table. 47Please include the following information in your report: 48 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 55 56Any other comments or patches are also more than welcome. 57 58 59Installation 60------------ 61 62If you are compiling this driver as included in the Linux kernel 63sources, simply enable the CONFIG_THINKPAD_ACPI option, and optionally 64enable the CONFIG_THINKPAD_ACPI_BAY option if you want the 65thinkpad-specific bay functionality. 66 67Features 68-------- 69 70The driver exports two different interfaces to userspace, which can be 71used to access the features it provides. One is a legacy procfs-based 72interface, which will be removed at some time in the distant future. 73The other is a new sysfs-based interface which is not complete yet. 74 75The procfs interface creates the /proc/acpi/ibm directory. There is a 76file under that directory for each feature it supports. The procfs 77interface is mostly frozen, and will change very little if at all: it 78will not be extended to add any new functionality in the driver, instead 79all new functionality will be implemented on the sysfs interface. 80 81The sysfs interface tries to blend in the generic Linux sysfs subsystems 82and classes as much as possible. Since some of these subsystems are not 83yet ready or stabilized, it is expected that this interface will change, 84and any and all userspace programs must deal with it. 85 86 87Notes about the sysfs interface: 88 89Unlike what was done with the procfs interface, correctness when talking 90to the sysfs interfaces will be enforced, as will correctness in the 91thinkpad-acpi's implementation of sysfs interfaces. 92 93Also, any bugs in the thinkpad-acpi sysfs driver code or in the 94thinkpad-acpi's implementation of the sysfs interfaces will be fixed for 95maximum correctness, even if that means changing an interface in 96non-compatible ways. As these interfaces mature both in the kernel and 97in thinkpad-acpi, such changes should become quite rare. 98 99Applications interfacing to the thinkpad-acpi sysfs interfaces must 100follow all sysfs guidelines and correctly process all errors (the sysfs 101interface makes extensive use of errors). File descriptors and open / 102close operations to the sysfs inodes must also be properly implemented. 103 104The version of thinkpad-acpi's sysfs interface is exported by the driver 105as a driver attribute (see below). 106 107Sysfs driver attributes are on the driver's sysfs attribute space, 108for 2.6.23 this is /sys/bus/platform/drivers/thinkpad_acpi/ and 109/sys/bus/platform/drivers/thinkpad_hwmon/ 110 111Sysfs device attributes are on the thinkpad_acpi device sysfs attribute 112space, for 2.6.23 this is /sys/devices/platform/thinkpad_acpi/. 113 114Sysfs device attributes for the sensors and fan are on the 115thinkpad_hwmon device's sysfs attribute space, but you should locate it 116looking for a hwmon device with the name attribute of "thinkpad". 117 118Driver version 119-------------- 120 121procfs: /proc/acpi/ibm/driver 122sysfs driver attribute: version 123 124The driver name and version. No commands can be written to this file. 125 126Sysfs interface version 127----------------------- 128 129sysfs driver attribute: interface_version 130 131Version 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 136 137The sysfs interface version changelog for the driver can be found at the 138end of this document. Changes to the sysfs interface done by the kernel 139subsystems are not documented here, nor are they tracked by this 140attribute. 141 142Changes to the thinkpad-acpi sysfs interface are only considered 143non-experimental when they are submitted to Linux mainline, at which 144point the changes in this interface are documented and interface_version 145may be updated. If you are using any thinkpad-acpi features not yet 146sent to mainline for merging, you do so on your own risk: these features 147may disappear, or be implemented in a different and incompatible way by 148the time they are merged in Linux mainline. 149 150Changes that are backwards-compatible by nature (e.g. the addition of 151attributes that do not change the way the other attributes work) do not 152always warrant an update of interface_version. Therefore, one must 153expect 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 155feature is not available in sysfs). 156 157Hot keys 158-------- 159 160procfs: /proc/acpi/ibm/hotkey 161sysfs device attribute: hotkey_* 162 163In a ThinkPad, the ACPI HKEY handler is responsible for comunicating 164some important events and also keyboard hot key presses to the operating 165system. Enabling the hotkey functionality of thinkpad-acpi signals the 166firmware that such a driver is present, and modifies how the ThinkPad 167firmware will behave in many situations. 168 169The driver enables the hot key feature automatically when loaded. The 170feature can later be disabled and enabled back at runtime. The driver 171will also restore the hot key feature to its previous state and mask 172when it is unloaded. 173 174When the hotkey feature is enabled and the hot key mask is set (see 175below), the driver will report HKEY events in the following format: 176 177 ibm/hotkey HKEY 00000080 0000xxxx 178 179Some of these events refer to hot key presses, but not all. 180 181The driver will generate events over the input layer for hot keys and 182radio switches, and over the ACPI netlink layer for other events. The 183input layer support accepts the standard IOCTLs to remap the keycodes 184assigned to each hot key. 185 186The hot key bit mask allows some control over which hot keys generate 187events. If a key is "masked" (bit set to 0 in the mask), the firmware 188will handle it. If it is "unmasked", it signals the firmware that 189thinkpad-acpi would prefer to handle it, if the firmware would be so 190kind to allow it (and it often doesn't!). 191 192Not all bits in the mask can be modified. Not all bits that can be 193modified do anything. Not all hot keys can be individually controlled 194by the mask. Some models do not support the mask at all, and in those 195models, hot keys cannot be controlled individually. The behaviour of 196the mask is, therefore, higly dependent on the ThinkPad model. 197 198Note that unmasking some keys prevents their default behavior. For 199example, if Fn+F5 is unmasked, that key will no longer enable/disable 200Bluetooth by itself. 201 202Note also that not all Fn key combinations are supported through ACPI. 203For example, on the X40, the brightness, volume and "Access IBM" buttons 204do not generate ACPI events even with this driver. They *can* be used 205through the "ThinkPad Buttons" utility, see http://www.nongnu.org/tpb/ 206 207procfs notes: 208 209The following commands can be written to the /proc/acpi/ibm/hotkey file: 210 211 echo enable > /proc/acpi/ibm/hotkey -- enable the hot keys feature 212 echo disable > /proc/acpi/ibm/hotkey -- disable the hot keys feature 213 echo 0xffffffff > /proc/acpi/ibm/hotkey -- enable all hot keys 214 echo 0 > /proc/acpi/ibm/hotkey -- disable all possible hot keys 215 ... any other 8-hex-digit mask ... 216 echo reset > /proc/acpi/ibm/hotkey -- restore the original mask 217 218sysfs notes: 219 220 hotkey_bios_enabled: 221 Returns the status of the hot keys feature when 222 thinkpad-acpi was loaded. Upon module unload, the hot 223 key feature status will be restored to this value. 224 225 0: hot keys were disabled 226 1: hot keys were enabled (unusual) 227 228 hotkey_bios_mask: 229 Returns the hot keys mask when thinkpad-acpi was loaded. 230 Upon module unload, the hot keys mask will be restored 231 to this value. 232 233 hotkey_enable: 234 Enables/disables the hot keys feature, and reports 235 current status of the hot keys feature. 236 237 0: disables the hot keys feature / feature disabled 238 1: enables the hot keys feature / feature enabled 239 240 hotkey_mask: 241 bit mask to enable driver-handling and ACPI event 242 generation for each hot key (see above). Returns the 243 current status of the hot keys mask, and allows one to 244 modify it. 245 246 hotkey_all_mask: 247 bit mask that should enable event reporting for all 248 supported hot keys, when echoed to hotkey_mask above. 249 Unless you know which events need to be handled 250 passively (because the firmware *will* handle them 251 anyway), do *not* use hotkey_all_mask. Use 252 hotkey_recommended_mask, instead. You have been warned. 253 254 hotkey_recommended_mask: 255 bit mask that should enable event reporting for all 256 supported hot keys, except those which are always 257 handled by the firmware anyway. Echo it to 258 hotkey_mask above, to use. 259 260 hotkey_radio_sw: 261 if the ThinkPad has a hardware radio switch, this 262 attribute will read 0 if the switch is in the "radios 263 disabled" postition, and 1 if the switch is in the 264 "radios enabled" position. 265 266 hotkey_report_mode: 267 Returns the state of the procfs ACPI event report mode 268 filter for hot keys. If it is set to 1 (the default), 269 all hot key presses are reported both through the input 270 layer and also as ACPI events through procfs (but not 271 through netlink). If it is set to 2, hot key presses 272 are reported only through the input layer. 273 274 This attribute is read-only in kernels 2.6.23 or later, 275 and read-write on earlier kernels. 276 277 May return -EPERM (write access locked out by module 278 parameter) or -EACCES (read-only). 279 280input layer notes: 281 282A Hot key is mapped to a single input layer EV_KEY event, possibly 283followed by an EV_MSC MSC_SCAN event that shall contain that key's scan 284code. An EV_SYN event will always be generated to mark the end of the 285event block. 286 287Do not use the EV_MSC MSC_SCAN events to process keys. They are to be 288used as a helper to remap keys, only. They are particularly useful when 289remapping KEY_UNKNOWN keys. 290 291The events are available in an input device, with the following id: 292 293 Bus: BUS_HOST 294 vendor: 0x1014 (PCI_VENDOR_ID_IBM) or 295 0x17aa (PCI_VENDOR_ID_LENOVO) 296 product: 0x5054 ("TP") 297 version: 0x4101 298 299The version will have its LSB incremented if the keymap changes in a 300backwards-compatible way. The MSB shall always be 0x41 for this input 301device. If the MSB is not 0x41, do not use the device as described in 302this section, as it is either something else (e.g. another input device 303exported by a thinkpad driver, such as HDAPS) or its functionality has 304been changed in a non-backwards compatible way. 305 306Adding other event types for other functionalities shall be considered a 307backwards-compatible change for this input device. 308 309Thinkpad-acpi Hot Key event map (version 0x4101): 310 311ACPI Scan 312event code Key Notes 313 3140x1001 0x00 FN+F1 - 3150x1002 0x01 FN+F2 IBM: battery (rare) 316 Lenovo: Screen lock 317 3180x1003 0x02 FN+F3 Many IBM models always report 319 this hot key, even with hot keys 320 disabled or with Fn+F3 masked 321 off 322 IBM: screen lock 323 Lenovo: battery 324 3250x1004 0x03 FN+F4 Sleep button (ACPI sleep button 326 semanthics, i.e. sleep-to-RAM). 327 It is always generate some kind 328 of event, either the hot key 329 event or a ACPI sleep button 330 event. The firmware may 331 refuse to generate further FN+F4 332 key presses until a S3 or S4 ACPI 333 sleep cycle is performed or some 334 time passes. 335 3360x1005 0x04 FN+F5 Radio. Enables/disables 337 the internal BlueTooth hardware 338 and W-WAN card if left in control 339 of the firmware. Does not affect 340 the WLAN card. 341 Should be used to turn on/off all 342 radios (bluetooth+W-WAN+WLAN), 343 really. 344 3450x1006 0x05 FN+F6 - 346 3470x1007 0x06 FN+F7 Video output cycle. 348 Do you feel lucky today? 349 3500x1008 0x07 FN+F8 IBM: toggle screen expand 351 Lenovo: configure ultranav 352 3530x1009 0x08 FN+F9 - 354 .. .. .. 3550x100B 0x0A FN+F11 - 356 3570x100C 0x0B FN+F12 Sleep to disk. You are always 358 supposed to handle it yourself, 359 either through the ACPI event, 360 or through a hotkey event. 361 The firmware may refuse to 362 generate further FN+F4 key 363 press events until a S3 or S4 364 ACPI sleep cycle is performed, 365 or some time passes. 366 3670x100D 0x0C FN+BACKSPACE - 3680x100E 0x0D FN+INSERT - 3690x100F 0x0E FN+DELETE - 370 3710x1010 0x0F FN+HOME Brightness up. This key is 372 always handled by the firmware 373 in IBM ThinkPads, even when 374 unmasked. Just leave it alone. 375 For Lenovo ThinkPads with a new 376 BIOS, it has to be handled either 377 by the ACPI OSI, or by userspace. 3780x1011 0x10 FN+END Brightness down. See brightness 379 up for details. 380 3810x1012 0x11 FN+PGUP Thinklight toggle. This key is 382 always handled by the firmware, 383 even when unmasked. 384 3850x1013 0x12 FN+PGDOWN - 386 3870x1014 0x13 FN+SPACE Zoom key 388 3890x1015 0x14 VOLUME UP Internal mixer volume up. This 390 key is always handled by the 391 firmware, even when unmasked. 392 NOTE: Lenovo seems to be changing 393 this. 3940x1016 0x15 VOLUME DOWN Internal mixer volume up. This 395 key is always handled by the 396 firmware, even when unmasked. 397 NOTE: Lenovo seems to be changing 398 this. 3990x1017 0x16 MUTE Mute internal mixer. This 400 key is always handled by the 401 firmware, even when unmasked. 402 4030x1018 0x17 THINKPAD Thinkpad/Access IBM/Lenovo key 404 4050x1019 0x18 unknown 406.. .. .. 4070x1020 0x1F unknown 408 409The ThinkPad firmware does not allow one to differentiate when most hot 410keys are pressed or released (either that, or we don't know how to, yet). 411For these keys, the driver generates a set of events for a key press and 412immediately issues the same set of events for a key release. It is 413unknown by the driver if the ThinkPad firmware triggered these events on 414hot key press or release, but the firmware will do it for either one, not 415both. 416 417If a key is mapped to KEY_RESERVED, it generates no input events at all. 418If a key is mapped to KEY_UNKNOWN, it generates an input event that 419includes an scan code. If a key is mapped to anything else, it will 420generate input device EV_KEY events. 421 422Non hot-key ACPI HKEY event map: 4230x5001 Lid closed 4240x5002 Lid opened 4250x7000 Radio Switch may have changed state 426 427The above events are not propagated by the driver, except for legacy 428compatibility purposes when hotkey_report_mode is set to 1. 429 430Compatibility notes: 431 432ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never 433supported the input layer, and sent events over the procfs ACPI event 434interface. 435 436To avoid sending duplicate events over the input layer and the ACPI 437event interface, thinkpad-acpi 0.16 implements a module parameter 438(hotkey_report_mode), and also a sysfs device attribute with the same 439name. 440 441Make no mistake here: userspace is expected to switch to using the input 442layer interface of thinkpad-acpi, together with the ACPI netlink event 443interface in kernels 2.6.23 and later, or with the ACPI procfs event 444interface in kernels 2.6.22 and earlier. 445 446If no hotkey_report_mode module parameter is specified (or it is set to 447zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22 448and earlier, also allows one to change the hotkey_report_mode through 449sysfs. In kernels 2.6.23 and later, where the netlink ACPI event 450interface is available, hotkey_report_mode cannot be changed through 451sysfs (it is read-only). 452 453If the hotkey_report_mode module parameter is set to 1 or 2, it cannot 454be changed later through sysfs (any writes will return -EPERM to signal 455that hotkey_report_mode was locked. On 2.6.23 and later, where 456hotkey_report_mode cannot be changed at all, writes will return -EACES). 457 458hotkey_report_mode set to 1 makes the driver export through the procfs 459ACPI event interface all hot key presses (which are *also* sent to the 460input layer). This is a legacy compatibility behaviour, and it is also 461the default mode of operation for the driver. 462 463hotkey_report_mode set to 2 makes the driver filter out the hot key 464presses from the procfs ACPI event interface, so these events will only 465be sent through the input layer. Userspace that has been updated to use 466the thinkpad-acpi input layer interface should set hotkey_report_mode to 4672. 468 469Hot key press events are never sent to the ACPI netlink event interface. 470Really up-to-date userspace under kernel 2.6.23 and later is to use the 471netlink interface and the input layer interface, and don't bother at all 472with hotkey_report_mode. 473 474 475Bluetooth 476--------- 477 478procfs: /proc/acpi/ibm/bluetooth 479sysfs device attribute: bluetooth_enable 480 481This feature shows the presence and current state of a ThinkPad 482Bluetooth device in the internal ThinkPad CDC slot. 483 484Procfs notes: 485 486If Bluetooth is installed, the following commands can be used: 487 488 echo enable > /proc/acpi/ibm/bluetooth 489 echo disable > /proc/acpi/ibm/bluetooth 490 491Sysfs notes: 492 493 If the Bluetooth CDC card is installed, it can be enabled / 494 disabled through the "bluetooth_enable" thinkpad-acpi device 495 attribute, and its current status can also be queried. 496 497 enable: 498 0: disables Bluetooth / Bluetooth is disabled 499 1: enables Bluetooth / Bluetooth is enabled. 500 501 Note: this interface will be probably be superseeded by the 502 generic rfkill class, so it is NOT to be considered stable yet. 503 504Video output control -- /proc/acpi/ibm/video 505-------------------------------------------- 506 507This feature allows control over the devices used for video output - 508LCD, CRT or DVI (if available). The following commands are available: 509 510 echo lcd_enable > /proc/acpi/ibm/video 511 echo lcd_disable > /proc/acpi/ibm/video 512 echo crt_enable > /proc/acpi/ibm/video 513 echo crt_disable > /proc/acpi/ibm/video 514 echo dvi_enable > /proc/acpi/ibm/video 515 echo dvi_disable > /proc/acpi/ibm/video 516 echo auto_enable > /proc/acpi/ibm/video 517 echo auto_disable > /proc/acpi/ibm/video 518 echo expand_toggle > /proc/acpi/ibm/video 519 echo video_switch > /proc/acpi/ibm/video 520 521Each video output device can be enabled or disabled individually. 522Reading /proc/acpi/ibm/video shows the status of each device. 523 524Automatic video switching can be enabled or disabled. When automatic 525video switching is enabled, certain events (e.g. opening the lid, 526docking or undocking) cause the video output device to change 527automatically. While this can be useful, it also causes flickering 528and, on the X40, video corruption. By disabling automatic switching, 529the flickering or video corruption can be avoided. 530 531The video_switch command cycles through the available video outputs 532(it simulates the behavior of Fn-F7). 533 534Video expansion can be toggled through this feature. This controls 535whether the display is expanded to fill the entire LCD screen when a 536mode with less than full resolution is used. Note that the current 537video expansion status cannot be determined through this feature. 538 539Note that on many models (particularly those using Radeon graphics 540chips) the X driver configures the video card in a way which prevents 541Fn-F7 from working. This also disables the video output switching 542features of this driver, as it uses the same ACPI methods as 543Fn-F7. Video switching on the console should still work. 544 545UPDATE: There's now a patch for the X.org Radeon driver which 546addresses this issue. Some people are reporting success with the patch 547while others are still having problems. For more information: 548 549https://bugs.freedesktop.org/show_bug.cgi?id=2000 550 551ThinkLight control -- /proc/acpi/ibm/light 552------------------------------------------ 553 554The current status of the ThinkLight can be found in this file. A few 555models which do not make the status available will show it as 556"unknown". The available commands are: 557 558 echo on > /proc/acpi/ibm/light 559 echo off > /proc/acpi/ibm/light 560 561Docking / undocking -- /proc/acpi/ibm/dock 562------------------------------------------ 563 564Docking and undocking (e.g. with the X4 UltraBase) requires some 565actions to be taken by the operating system to safely make or break 566the electrical connections with the dock. 567 568The docking feature of this driver generates the following ACPI events: 569 570 ibm/dock GDCK 00000003 00000001 -- eject request 571 ibm/dock GDCK 00000003 00000002 -- undocked 572 ibm/dock GDCK 00000000 00000003 -- docked 573 574NOTE: These events will only be generated if the laptop was docked 575when originally booted. This is due to the current lack of support for 576hot plugging of devices in the Linux ACPI framework. If the laptop was 577booted while not in the dock, the following message is shown in the 578logs: 579 580 Mar 17 01:42:34 aero kernel: thinkpad_acpi: dock device not present 581 582In this case, no dock-related events are generated but the dock and 583undock commands described below still work. They can be executed 584manually or triggered by Fn key combinations (see the example acpid 585configuration files included in the driver tarball package available 586on the web site). 587 588When the eject request button on the dock is pressed, the first event 589above is generated. The handler for this event should issue the 590following command: 591 592 echo undock > /proc/acpi/ibm/dock 593 594After the LED on the dock goes off, it is safe to eject the laptop. 595Note: if you pressed this key by mistake, go ahead and eject the 596laptop, then dock it back in. Otherwise, the dock may not function as 597expected. 598 599When the laptop is docked, the third event above is generated. The 600handler for this event should issue the following command to fully 601enable the dock: 602 603 echo dock > /proc/acpi/ibm/dock 604 605The contents of the /proc/acpi/ibm/dock file shows the current status 606of the dock, as provided by the ACPI framework. 607 608The docking support in this driver does not take care of enabling or 609disabling any other devices you may have attached to the dock. For 610example, a CD drive plugged into the UltraBase needs to be disabled or 611enabled separately. See the provided example acpid configuration files 612for how this can be accomplished. 613 614There is no support yet for PCI devices that may be attached to a 615docking station, e.g. in the ThinkPad Dock II. The driver currently 616does not recognize, enable or disable such devices. This means that 617the only docking stations currently supported are the X-series 618UltraBase docks and "dumb" port replicators like the Mini Dock (the 619latter don't need any ACPI support, actually). 620 621UltraBay eject -- /proc/acpi/ibm/bay 622------------------------------------ 623 624Inserting or ejecting an UltraBay device requires some actions to be 625taken by the operating system to safely make or break the electrical 626connections with the device. 627 628This feature generates the following ACPI events: 629 630 ibm/bay MSTR 00000003 00000000 -- eject request 631 ibm/bay MSTR 00000001 00000000 -- eject lever inserted 632 633NOTE: These events will only be generated if the UltraBay was present 634when the laptop was originally booted (on the X series, the UltraBay 635is in the dock, so it may not be present if the laptop was undocked). 636This is due to the current lack of support for hot plugging of devices 637in the Linux ACPI framework. If the laptop was booted without the 638UltraBay, the following message is shown in the logs: 639 640 Mar 17 01:42:34 aero kernel: thinkpad_acpi: bay device not present 641 642In this case, no bay-related events are generated but the eject 643command described below still works. It can be executed manually or 644triggered by a hot key combination. 645 646Sliding the eject lever generates the first event shown above. The 647handler for this event should take whatever actions are necessary to 648shut down the device in the UltraBay (e.g. call idectl), then issue 649the following command: 650 651 echo eject > /proc/acpi/ibm/bay 652 653After the LED on the UltraBay goes off, it is safe to pull out the 654device. 655 656When the eject lever is inserted, the second event above is 657generated. The handler for this event should take whatever actions are 658necessary to enable the UltraBay device (e.g. call idectl). 659 660The contents of the /proc/acpi/ibm/bay file shows the current status 661of the UltraBay, as provided by the ACPI framework. 662 663EXPERIMENTAL warm eject support on the 600e/x, A22p and A3x (To use 664this feature, you need to supply the experimental=1 parameter when 665loading the module): 666 667These models do not have a button near the UltraBay device to request 668a hot eject but rather require the laptop to be put to sleep 669(suspend-to-ram) before the bay device is ejected or inserted). 670The sequence of steps to eject the device is as follows: 671 672 echo eject > /proc/acpi/ibm/bay 673 put the ThinkPad to sleep 674 remove the drive 675 resume from sleep 676 cat /proc/acpi/ibm/bay should show that the drive was removed 677 678On the A3x, both the UltraBay 2000 and UltraBay Plus devices are 679supported. Use "eject2" instead of "eject" for the second bay. 680 681Note: the UltraBay eject support on the 600e/x, A22p and A3x is 682EXPERIMENTAL and may not work as expected. USE WITH CAUTION! 683 684CMOS control 685------------ 686 687procfs: /proc/acpi/ibm/cmos 688sysfs device attribute: cmos_command 689 690This feature is mostly used internally by the ACPI firmware to keep the legacy 691CMOS NVRAM bits in sync with the current machine state, and to record this 692state so that the ThinkPad will retain such settings across reboots. 693 694Some of these commands actually perform actions in some ThinkPad models, but 695this is expected to disappear more and more in newer models. As an example, in 696a T43 and in a X40, commands 12 and 13 still control the ThinkLight state for 697real, but commands 0 to 2 don't control the mixer anymore (they have been 698phased out) and just update the NVRAM. 699 700The range of valid cmos command numbers is 0 to 21, but not all have an 701effect and the behavior varies from model to model. Here is the behavior 702on the X40 (tpb is the ThinkPad Buttons utility): 703 704 0 - Related to "Volume down" key press 705 1 - Related to "Volume up" key press 706 2 - Related to "Mute on" key press 707 3 - Related to "Access IBM" key press 708 4 - Related to "LCD brightness up" key pess 709 5 - Related to "LCD brightness down" key press 710 11 - Related to "toggle screen expansion" key press/function 711 12 - Related to "ThinkLight on" 712 13 - Related to "ThinkLight off" 713 14 - Related to "ThinkLight" key press (toggle thinklight) 714 715The cmos command interface is prone to firmware split-brain problems, as 716in newer ThinkPads it is just a compatibility layer. Do not use it, it is 717exported just as a debug tool. 718 719LED control -- /proc/acpi/ibm/led 720--------------------------------- 721 722Some of the LED indicators can be controlled through this feature. The 723available commands are: 724 725 echo '<led number> on' >/proc/acpi/ibm/led 726 echo '<led number> off' >/proc/acpi/ibm/led 727 echo '<led number> blink' >/proc/acpi/ibm/led 728 729The <led number> range is 0 to 7. The set of LEDs that can be 730controlled varies from model to model. Here is the mapping on the X40: 731 732 0 - power 733 1 - battery (orange) 734 2 - battery (green) 735 3 - UltraBase 736 4 - UltraBay 737 7 - standby 738 739All of the above can be turned on and off and can be made to blink. 740 741ACPI sounds -- /proc/acpi/ibm/beep 742---------------------------------- 743 744The BEEP method is used internally by the ACPI firmware to provide 745audible alerts in various situations. This feature allows the same 746sounds to be triggered manually. 747 748The commands are non-negative integer numbers: 749 750 echo <number> >/proc/acpi/ibm/beep 751 752The valid <number> range is 0 to 17. Not all numbers trigger sounds 753and the sounds vary from model to model. Here is the behavior on the 754X40: 755 756 0 - stop a sound in progress (but use 17 to stop 16) 757 2 - two beeps, pause, third beep ("low battery") 758 3 - single beep 759 4 - high, followed by low-pitched beep ("unable") 760 5 - single beep 761 6 - very high, followed by high-pitched beep ("AC/DC") 762 7 - high-pitched beep 763 9 - three short beeps 764 10 - very long beep 765 12 - low-pitched beep 766 15 - three high-pitched beeps repeating constantly, stop with 0 767 16 - one medium-pitched beep repeating constantly, stop with 17 768 17 - stop 16 769 770Temperature sensors 771------------------- 772 773procfs: /proc/acpi/ibm/thermal 774sysfs device attributes: (hwmon "thinkpad") temp*_input 775 776Most ThinkPads include six or more separate temperature sensors but only 777expose the CPU temperature through the standard ACPI methods. This 778feature shows readings from up to eight different sensors on older 779ThinkPads, and up to sixteen different sensors on newer ThinkPads. 780 781For example, on the X40, a typical output may be: 782temperatures: 42 42 45 41 36 -128 33 -128 783 784On the T43/p, a typical output may be: 785temperatures: 48 48 36 52 38 -128 31 -128 48 52 48 -128 -128 -128 -128 -128 786 787The mapping of thermal sensors to physical locations varies depending on 788system-board model (and thus, on ThinkPad model). 789 790http://thinkwiki.org/wiki/Thermal_Sensors is a public wiki page that 791tries to track down these locations for various models. 792 793Most (newer?) models seem to follow this pattern: 794 7951: CPU 7962: (depends on model) 7973: (depends on model) 7984: GPU 7995: Main battery: main sensor 8006: Bay battery: main sensor 8017: Main battery: secondary sensor 8028: Bay battery: secondary sensor 8039-15: (depends on model) 804 805For the R51 (source: Thomas Gruber): 8062: Mini-PCI 8073: Internal HDD 808 809For the T43, T43/p (source: Shmidoax/Thinkwiki.org) 810http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_T43.2C_T43p 8112: System board, left side (near PCMCIA slot), reported as HDAPS temp 8123: PCMCIA slot 8139: MCH (northbridge) to DRAM Bus 81410: Clock-generator, mini-pci card and ICH (southbridge), under Mini-PCI 815 card, under touchpad 81611: Power regulator, underside of system board, below F2 key 817 818The A31 has a very atypical layout for the thermal sensors 819(source: Milos Popovic, http://thinkwiki.org/wiki/Thermal_Sensors#ThinkPad_A31) 8201: CPU 8212: Main Battery: main sensor 8223: Power Converter 8234: Bay Battery: main sensor 8245: MCH (northbridge) 8256: PCMCIA/ambient 8267: Main Battery: secondary sensor 8278: Bay Battery: secondary sensor 828 829 830Procfs notes: 831 Readings from sensors that are not available return -128. 832 No commands can be written to this file. 833 834Sysfs notes: 835 Sensors that are not available return the ENXIO error. This 836 status may change at runtime, as there are hotplug thermal 837 sensors, like those inside the batteries and docks. 838 839 thinkpad-acpi thermal sensors are reported through the hwmon 840 subsystem, and follow all of the hwmon guidelines at 841 Documentation/hwmon. 842 843 844EXPERIMENTAL: Embedded controller register dump -- /proc/acpi/ibm/ecdump 845------------------------------------------------------------------------ 846 847This feature is marked EXPERIMENTAL because the implementation 848directly accesses hardware registers and may not work as expected. USE 849WITH CAUTION! To use this feature, you need to supply the 850experimental=1 parameter when loading the module. 851 852This feature dumps the values of 256 embedded controller 853registers. Values which have changed since the last time the registers 854were dumped are marked with a star: 855 856[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump 857EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f 858EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00 859EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00 860EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80 861EC 0x30: 01 07 1a 00 30 04 00 00 *85 00 00 10 00 50 00 00 862EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00 863EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 *bc *02 *bc 864EC 0x60: *02 *bc *02 00 00 00 00 00 00 00 00 00 00 00 00 00 865EC 0x70: 00 00 00 00 00 12 30 40 *24 *26 *2c *27 *20 80 *1f 80 866EC 0x80: 00 00 00 06 *37 *0e 03 00 00 00 0e 07 00 00 00 00 867EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 868EC 0xa0: *ff 09 ff 09 ff ff *64 00 *00 *00 *a2 41 *ff *ff *e0 00 869EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 870EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 871EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 872EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03 873EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a 874 875This feature can be used to determine the register holding the fan 876speed on some models. To do that, do the following: 877 878 - make sure the battery is fully charged 879 - make sure the fan is running 880 - run 'cat /proc/acpi/ibm/ecdump' several times, once per second or so 881 882The first step makes sure various charging-related values don't 883vary. The second ensures that the fan-related values do vary, since 884the fan speed fluctuates a bit. The third will (hopefully) mark the 885fan register with a star: 886 887[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump 888EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f 889EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00 890EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00 891EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80 892EC 0x30: 01 07 1a 00 30 04 00 00 85 00 00 10 00 50 00 00 893EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00 894EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 bc 02 bc 895EC 0x60: 02 bc 02 00 00 00 00 00 00 00 00 00 00 00 00 00 896EC 0x70: 00 00 00 00 00 12 30 40 24 27 2c 27 21 80 1f 80 897EC 0x80: 00 00 00 06 *be 0d 03 00 00 00 0e 07 00 00 00 00 898EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 899EC 0xa0: ff 09 ff 09 ff ff 64 00 00 00 a2 41 ff ff e0 00 900EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 901EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 902EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 903EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03 904EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a 905 906Another set of values that varies often is the temperature 907readings. Since temperatures don't change vary fast, you can take 908several quick dumps to eliminate them. 909 910You can use a similar method to figure out the meaning of other 911embedded controller registers - e.g. make sure nothing else changes 912except the charging or discharging battery to determine which 913registers contain the current battery capacity, etc. If you experiment 914with this, do send me your results (including some complete dumps with 915a description of the conditions when they were taken.) 916 917LCD brightness control 918---------------------- 919 920procfs: /proc/acpi/ibm/brightness 921sysfs backlight device "thinkpad_screen" 922 923This feature allows software control of the LCD brightness on ThinkPad 924models which don't have a hardware brightness slider. 925 926It has some limitations: the LCD backlight cannot be actually turned on or off 927by this interface, and in many ThinkPad models, the "dim while on battery" 928functionality will be enabled by the BIOS when this interface is used, and 929cannot be controlled. 930 931The backlight control has eight levels, ranging from 0 to 7. Some of the 932levels may not be distinct. 933 934There are two interfaces to the firmware for brightness control, EC and CMOS. 935To select which one should be used, use the brightness_mode module parameter: 936brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode, 937brightness_mode=3 selects both EC and CMOS. The driver tries to autodetect 938which interface to use. 939 940Procfs notes: 941 942 The available commands are: 943 944 echo up >/proc/acpi/ibm/brightness 945 echo down >/proc/acpi/ibm/brightness 946 echo 'level <level>' >/proc/acpi/ibm/brightness 947 948Sysfs notes: 949 950The interface is implemented through the backlight sysfs class, which is poorly 951documented at this time. 952 953Locate the thinkpad_screen device under /sys/class/backlight, and inside it 954there will be the following attributes: 955 956 max_brightness: 957 Reads the maximum brightness the hardware can be set to. 958 The minimum is always zero. 959 960 actual_brightness: 961 Reads what brightness the screen is set to at this instant. 962 963 brightness: 964 Writes request the driver to change brightness to the given 965 value. Reads will tell you what brightness the driver is trying 966 to set the display to when "power" is set to zero and the display 967 has not been dimmed by a kernel power management event. 968 969 power: 970 power management mode, where 0 is "display on", and 1 to 3 will 971 dim the display backlight to brightness level 0 because 972 thinkpad-acpi cannot really turn the backlight off. Kernel 973 power management events can temporarily increase the current 974 power management level, i.e. they can dim the display. 975 976 977Volume control -- /proc/acpi/ibm/volume 978--------------------------------------- 979 980This feature allows volume control on ThinkPad models which don't have 981a hardware volume knob. The available commands are: 982 983 echo up >/proc/acpi/ibm/volume 984 echo down >/proc/acpi/ibm/volume 985 echo mute >/proc/acpi/ibm/volume 986 echo 'level <level>' >/proc/acpi/ibm/volume 987 988The <level> number range is 0 to 15 although not all of them may be 989distinct. The unmute the volume after the mute command, use either the 990up or down command (the level command will not unmute the volume). 991The current volume level and mute state is shown in the file. 992 993Fan control and monitoring: fan speed, fan enable/disable 994--------------------------------------------------------- 995 996procfs: /proc/acpi/ibm/fan 997sysfs device attributes: (hwmon "thinkpad") fan1_input, pwm1, 998 pwm1_enable 999sysfs hwmon driver attributes: fan_watchdog 1000 1001NOTE NOTE NOTE: fan control operations are disabled by default for 1002safety reasons. To enable them, the module parameter "fan_control=1" 1003must be given to thinkpad-acpi. 1004 1005This feature attempts to show the current fan speed, control mode and 1006other fan data that might be available. The speed is read directly 1007from the hardware registers of the embedded controller. This is known 1008to work on later R, T, X and Z series ThinkPads but may show a bogus 1009value on other models. 1010 1011Fan levels: 1012 1013Most ThinkPad fans work in "levels" at the firmware interface. Level 0 1014stops the fan. The higher the level, the higher the fan speed, although 1015adjacent levels often map to the same fan speed. 7 is the highest 1016level, where the fan reaches the maximum recommended speed. 1017 1018Level "auto" means the EC changes the fan level according to some 1019internal algorithm, usually based on readings from the thermal sensors. 1020 1021There is also a "full-speed" level, also known as "disengaged" level. 1022In this level, the EC disables the speed-locked closed-loop fan control, 1023and drives the fan as fast as it can go, which might exceed hardware 1024limits, so use this level with caution. 1025 1026The fan usually ramps up or down slowly from one speed to another, and 1027it is normal for the EC to take several seconds to react to fan 1028commands. The full-speed level may take up to two minutes to ramp up to 1029maximum speed, and in some ThinkPads, the tachometer readings go stale 1030while the EC is transitioning to the full-speed level. 1031 1032WARNING WARNING WARNING: do not leave the fan disabled unless you are 1033monitoring all of the temperature sensor readings and you are ready to 1034enable it if necessary to avoid overheating. 1035 1036An enabled fan in level "auto" may stop spinning if the EC decides the 1037ThinkPad is cool enough and doesn't need the extra airflow. This is 1038normal, and the EC will spin the fan up if the various thermal readings 1039rise too much. 1040 1041On the X40, this seems to depend on the CPU and HDD temperatures. 1042Specifically, the fan is turned on when either the CPU temperature 1043climbs to 56 degrees or the HDD temperature climbs to 46 degrees. The 1044fan is turned off when the CPU temperature drops to 49 degrees and the 1045HDD temperature drops to 41 degrees. These thresholds cannot 1046currently be controlled. 1047 1048The ThinkPad's ACPI DSDT code will reprogram the fan on its own when 1049certain conditions are met. It will override any fan programming done 1050through thinkpad-acpi. 1051 1052The thinkpad-acpi kernel driver can be programmed to revert the fan 1053level to a safe setting if userspace does not issue one of the procfs 1054fan commands: "enable", "disable", "level" or "watchdog", or if there 1055are no writes to pwm1_enable (or to pwm1 *if and only if* pwm1_enable is 1056set to 1, manual mode) within a configurable amount of time of up to 1057120 seconds. This functionality is called fan safety watchdog. 1058 1059Note that the watchdog timer stops after it enables the fan. It will be 1060rearmed again automatically (using the same interval) when one of the 1061above mentioned fan commands is received. The fan watchdog is, 1062therefore, not suitable to protect against fan mode changes made through 1063means other than the "enable", "disable", and "level" procfs fan 1064commands, or the hwmon fan control sysfs interface. 1065 1066Procfs notes: 1067 1068The fan may be enabled or disabled with the following commands: 1069 1070 echo enable >/proc/acpi/ibm/fan 1071 echo disable >/proc/acpi/ibm/fan 1072 1073Placing a fan on level 0 is the same as disabling it. Enabling a fan 1074will try to place it in a safe level if it is too slow or disabled. 1075 1076The fan level can be controlled with the command: 1077 1078 echo 'level <level>' > /proc/acpi/ibm/fan 1079 1080Where <level> is an integer from 0 to 7, or one of the words "auto" or 1081"full-speed" (without the quotes). Not all ThinkPads support the "auto" 1082and "full-speed" levels. The driver accepts "disengaged" as an alias for 1083"full-speed", and reports it as "disengaged" for backwards 1084compatibility. 1085 1086On the X31 and X40 (and ONLY on those models), the fan speed can be 1087controlled to a certain degree. Once the fan is running, it can be 1088forced to run faster or slower with the following command: 1089 1090 echo 'speed <speed>' > /proc/acpi/ibm/fan 1091 1092The sustainable range of fan speeds on the X40 appears to be from about 10933700 to about 7350. Values outside this range either do not have any 1094effect or the fan speed eventually settles somewhere in that range. The 1095fan cannot be stopped or started with this command. This functionality 1096is incomplete, and not available through the sysfs interface. 1097 1098To program the safety watchdog, use the "watchdog" command. 1099 1100 echo 'watchdog <interval in seconds>' > /proc/acpi/ibm/fan 1101 1102If you want to disable the watchdog, use 0 as the interval. 1103 1104Sysfs notes: 1105 1106The sysfs interface follows the hwmon subsystem guidelines for the most 1107part, and the exception is the fan safety watchdog. 1108 1109Writes to any of the sysfs attributes may return the EINVAL error if 1110that operation is not supported in a given ThinkPad or if the parameter 1111is out-of-bounds, and EPERM if it is forbidden. They may also return 1112EINTR (interrupted system call), and EIO (I/O error while trying to talk 1113to the firmware). 1114 1115Features not yet implemented by the driver return ENOSYS. 1116 1117hwmon device attribute pwm1_enable: 1118 0: PWM offline (fan is set to full-speed mode) 1119 1: Manual PWM control (use pwm1 to set fan level) 1120 2: Hardware PWM control (EC "auto" mode) 1121 3: reserved (Software PWM control, not implemented yet) 1122 1123 Modes 0 and 2 are not supported by all ThinkPads, and the 1124 driver is not always able to detect this. If it does know a 1125 mode is unsupported, it will return -EINVAL. 1126 1127hwmon device attribute pwm1: 1128 Fan level, scaled from the firmware values of 0-7 to the hwmon 1129 scale of 0-255. 0 means fan stopped, 255 means highest normal 1130 speed (level 7). 1131 1132 This attribute only commands the fan if pmw1_enable is set to 1 1133 (manual PWM control). 1134 1135hwmon device attribute fan1_input: 1136 Fan tachometer reading, in RPM. May go stale on certain 1137 ThinkPads while the EC transitions the PWM to offline mode, 1138 which can take up to two minutes. May return rubbish on older 1139 ThinkPads. 1140 1141hwmon driver attribute fan_watchdog: 1142 Fan safety watchdog timer interval, in seconds. Minimum is 1143 1 second, maximum is 120 seconds. 0 disables the watchdog. 1144 1145To stop the fan: set pwm1 to zero, and pwm1_enable to 1. 1146 1147To start the fan in a safe mode: set pwm1_enable to 2. If that fails 1148with EINVAL, try to set pwm1_enable to 1 and pwm1 to at least 128 (255 1149would be the safest choice, though). 1150 1151 1152EXPERIMENTAL: WAN 1153----------------- 1154 1155procfs: /proc/acpi/ibm/wan 1156sysfs device attribute: wwan_enable 1157 1158This feature is marked EXPERIMENTAL because the implementation 1159directly accesses hardware registers and may not work as expected. USE 1160WITH CAUTION! To use this feature, you need to supply the 1161experimental=1 parameter when loading the module. 1162 1163This feature shows the presence and current state of a W-WAN (Sierra 1164Wireless EV-DO) device. 1165 1166It was tested on a Lenovo Thinkpad X60. It should probably work on other 1167Thinkpad models which come with this module installed. 1168 1169Procfs notes: 1170 1171If the W-WAN card is installed, the following commands can be used: 1172 1173 echo enable > /proc/acpi/ibm/wan 1174 echo disable > /proc/acpi/ibm/wan 1175 1176Sysfs notes: 1177 1178 If the W-WAN card is installed, it can be enabled / 1179 disabled through the "wwan_enable" thinkpad-acpi device 1180 attribute, and its current status can also be queried. 1181 1182 enable: 1183 0: disables WWAN card / WWAN card is disabled 1184 1: enables WWAN card / WWAN card is enabled. 1185 1186 Note: this interface will be probably be superseeded by the 1187 generic rfkill class, so it is NOT to be considered stable yet. 1188 1189Multiple Commands, Module Parameters 1190------------------------------------ 1191 1192Multiple commands can be written to the proc files in one shot by 1193separating them with commas, for example: 1194 1195 echo enable,0xffff > /proc/acpi/ibm/hotkey 1196 echo lcd_disable,crt_enable > /proc/acpi/ibm/video 1197 1198Commands can also be specified when loading the thinkpad-acpi module, 1199for example: 1200 1201 modprobe thinkpad_acpi hotkey=enable,0xffff video=auto_disable 1202 1203Enabling debugging output 1204------------------------- 1205 1206The module takes a debug parameter which can be used to selectively 1207enable various classes of debugging output, for example: 1208 1209 modprobe ibm_acpi debug=0xffff 1210 1211will enable all debugging output classes. It takes a bitmask, so 1212to enable more than one output class, just add their values. 1213 1214 Debug bitmask Description 1215 0x0001 Initialization and probing 1216 0x0002 Removal 1217 1218There is also a kernel build option to enable more debugging 1219information, which may be necessary to debug driver problems. 1220 1221The level of debugging information output by the driver can be changed 1222at runtime through sysfs, using the driver attribute debug_level. The 1223attribute takes the same bitmask as the debug module parameter above. 1224 1225Force loading of module 1226----------------------- 1227 1228If thinkpad-acpi refuses to detect your ThinkPad, you can try to specify 1229the module parameter force_load=1. Regardless of whether this works or 1230not, please contact ibm-acpi-devel@lists.sourceforge.net with a report. 1231 1232 1233Sysfs interface changelog: 1234 12350x000100: Initial sysfs support, as a single platform driver and 1236 device. 12370x000200: Hot key support for 32 hot keys, and radio slider switch 1238 support. 12390x010000: Hot keys are now handled by default over the input 1240 layer, the radio switch generates input event EV_RADIO, 1241 and the driver enables hot key handling by default in 1242 the firmware. 1243 12440x020000: ABI fix: added a separate hwmon platform device and 1245 driver, which must be located by name (thinkpad) 1246 and the hwmon class for libsensors4 (lm-sensors 3) 1247 compatibility. Moved all hwmon attributes to this 1248 new platform device.