aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform/x86/thinkpad_acpi.c
diff options
context:
space:
mode:
authorHenrique de Moraes Holschuh <hmh@hmh.eng.br>2010-02-25 19:28:56 -0500
committerHenrique de Moraes Holschuh <hmh@hmh.eng.br>2010-02-25 19:28:56 -0500
commitbf8b29c8f7f8269e99eca8b19048ed5b34b51810 (patch)
tree05469e38524f6c1b2bbaf7be7b83bb9e786e12a6 /drivers/platform/x86/thinkpad_acpi.c
parent60b341b778cc2929df16c0a504c91621b3c6a4ad (diff)
thinkpad-acpi: document HKEY event 3006
Event 0x3006 is used to help power management of the ODD in the UltraBay. The EC generates this event when the ODD eject button is pressed (even if the bay is powered down). Normally, Linux doesn't need this as we keep the SATA link powered up (which wastes power). The EC powers up the bay by itself when the ODD eject button is pressed, and the SATA PHY reports the hotplug. However, we could also power that SATA link down (and for that matter, also power down the Ultrabay) if the ODD is left idle for a while with no disk inside, and use event 0x3006 to know when we need that SATA link powered back up. For now, just stop asking for more information when event 0x3006 is seen, there is no point in pestering users about it anymore. Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> Cc: stable@kernel.org
Diffstat (limited to 'drivers/platform/x86/thinkpad_acpi.c')
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index eb603f1d55ca..049041a47f8d 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -3655,13 +3655,19 @@ static void hotkey_notify(struct ibm_struct *ibm, u32 event)
3655 break; 3655 break;
3656 case 3: 3656 case 3:
3657 /* 0x3000-0x3FFF: bay-related wakeups */ 3657 /* 0x3000-0x3FFF: bay-related wakeups */
3658 if (hkey == TP_HKEY_EV_BAYEJ_ACK) { 3658 switch (hkey) {
3659 case TP_HKEY_EV_BAYEJ_ACK:
3659 hotkey_autosleep_ack = 1; 3660 hotkey_autosleep_ack = 1;
3660 printk(TPACPI_INFO 3661 printk(TPACPI_INFO
3661 "bay ejected\n"); 3662 "bay ejected\n");
3662 hotkey_wakeup_hotunplug_complete_notify_change(); 3663 hotkey_wakeup_hotunplug_complete_notify_change();
3663 known_ev = true; 3664 known_ev = true;
3664 } else { 3665 break;
3666 case TP_HKEY_EV_OPTDRV_EJ:
3667 /* FIXME: kick libata if SATA link offline */
3668 known_ev = true;
3669 break;
3670 default:
3665 known_ev = false; 3671 known_ev = false;
3666 } 3672 }
3667 break; 3673 break;