Hello,
thinkpad_acpi normally fails to save Bluetooth state to NVRAM on my system
(ThinkPad X120e). However, a small change in the code fixes the functionality:
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -3999,7 +3999,7 @@ static const struct tpacpi_rfk_ops bluetooth_tprfk_ops = {
static void bluetooth_shutdown(void)
{
/* Order firmware to save current state to NVRAM */
- if (!acpi_evalf(NULL, NULL, "\\BLTH", "vd",
+ if (!acpi_evalf(NULL, NULL, "\\_SB.BLTH", "vd",
TP_ACPI_BLTH_SAVE_STATE))
pr_notice("failed to save bluetooth state to NVRAM\n");
else
I can't tell whether this breaks the functionality on other ThinkPad systems
because I don't have any, though.
Please CC me any responses, as I am not subscribed to the list.
Regards,
--
Zaba
On Sun, 10 Jun 2012, Vsevolod Kozlov wrote:
> thinkpad_acpi normally fails to save Bluetooth state to NVRAM on my system
> (ThinkPad X120e). However, a small change in the code fixes the functionality:
>
> --- a/drivers/platform/x86/thinkpad_acpi.c
> +++ b/drivers/platform/x86/thinkpad_acpi.c
> @@ -3999,7 +3999,7 @@ static const struct tpacpi_rfk_ops bluetooth_tprfk_ops = {
> static void bluetooth_shutdown(void)
> {
> /* Order firmware to save current state to NVRAM */
> - if (!acpi_evalf(NULL, NULL, "\\BLTH", "vd",
> + if (!acpi_evalf(NULL, NULL, "\\_SB.BLTH", "vd",
> TP_ACPI_BLTH_SAVE_STATE))
> pr_notice("failed to save bluetooth state to NVRAM\n");
> else
>
> I can't tell whether this breaks the functionality on other ThinkPad systems
> because I don't have any, though.
Yes, it would break other systems. But I can write a fix that supports both
systems with the data you supplied.
--
"One disk to rule them all, One disk to find them. One disk to bring
them all and in the darkness grind them. In the Land of Redmond
where the shadows lie." -- The Silicon Valley Tarot
Henrique Holschuh