thinkpad-acpi: fix bluetooth/wwan resume
commit81defc45cbae8ec28c4af87bf887a562e38474a4
authorHenrique de Moraes Holschuh <hmh@hmh.eng.br>
Fri, 26 Feb 2010 01:22:07 +0000 (25 22:22 -0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 15 Mar 2010 15:50:04 +0000 (15 08:50 -0700)
treea52e881813bab182685921bb49229ce297894ff7
parent48825c5e641364ed823ba646cf0636d66f777a30
thinkpad-acpi: fix bluetooth/wwan resume

commit 08fedfc903c78e380b0baa7b57c52d367794d0a5 upstream.

Studying the DSDTs of various thinkpads, it looks like bit 3 of the
argument to SBDC and SWAN is not "set radio to last state on resume".
Rather, it seems to be "if this bit is set, enable radio on resume,
otherwise disable it on resume".

So, the proper way to prepare the radios for S3 suspend is: disable
radio and clear bit 3 on the SBDC/SWAN call to to resume with radio
disabled, and enable radio and set bit 3 on the SBDC/SWAN call to
resume with the radio enabled.

Also, for persistent devices, the rfkill core does not restore state,
so we really need to get the firmware to do the right thing.

We don't sync the radio state on suspend, instead we trust the BIOS to
not do anything weird if we never touched the radio state since boot.
Time will tell if that's a wise way of doing things...

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/platform/x86/thinkpad_acpi.c