aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorManoj Iyer <manoj.iyer@canonical.com>2012-09-24 12:57:40 -0400
committerMatthew Garrett <matthew.garrett@nebula.com>2013-02-24 17:49:56 -0500
commit16a3d9f5aa1c9e0ecddd48bdfcf44445c9dbb601 (patch)
treef47cab7afc7516e56534656b9be877726bde1347 /drivers
parent4fca7ce39f57517a31c911d8f66931355a39457e (diff)
thinkpad-acpi: enable loading module with new B-series Lenovo BIOS
The new B series BIOS has version string 43CN46WW. The driver requires that 2nd and 3rd characters be 'E' and 'T' respectively, where as the newer BIOS has 'C' and 'N' respectively. Failing to load the module causes some of the hotkeys to not work. Before the patch ================ sudo modprobe thinkpad_acpi FATAL: Error inserting thinkpad_acpi (/lib/modules/3.5.0-15-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko): No such device After the patch =============== [44937.265438] thinkpad_acpi: ThinkPad ACPI Extras v0.24 [44937.265445] thinkpad_acpi: http://ibm-acpi.sf.net/ [44937.265449] thinkpad_acpi: ThinkPad BIOS 43CN46WW, EC unknown [44937.265453] thinkpad_acpi: Lenovo Lenovo B470e, model HuronRiver Platform [44937.266479] thinkpad_acpi: detected a 8-level brightness capable ThinkPad [44937.266557] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one [44937.267846] thinkpad_acpi: Console audio control enabled, mode: monitor (read only) [44937.268131] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input17 Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com> Tested-by: James Ferguson <james.ferguson@canonical.com> Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index ebcb461bb2b0..22d893654d28 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -8574,7 +8574,8 @@ static bool __pure __init tpacpi_is_valid_fw_id(const char* const s,
8574 return s && strlen(s) >= 8 && 8574 return s && strlen(s) >= 8 &&
8575 tpacpi_is_fw_digit(s[0]) && 8575 tpacpi_is_fw_digit(s[0]) &&
8576 tpacpi_is_fw_digit(s[1]) && 8576 tpacpi_is_fw_digit(s[1]) &&
8577 s[2] == t && s[3] == 'T' && 8577 s[2] == t &&
8578 (s[3] == 'T' || s[3] == 'N') &&
8578 tpacpi_is_fw_digit(s[4]) && 8579 tpacpi_is_fw_digit(s[4]) &&
8579 tpacpi_is_fw_digit(s[5]); 8580 tpacpi_is_fw_digit(s[5]);
8580} 8581}
@@ -8607,7 +8608,8 @@ static int __must_check __init get_thinkpad_model_data(
8607 return -ENOMEM; 8608 return -ENOMEM;
8608 8609
8609 /* Really ancient ThinkPad 240X will fail this, which is fine */ 8610 /* Really ancient ThinkPad 240X will fail this, which is fine */
8610 if (!tpacpi_is_valid_fw_id(tp->bios_version_str, 'E')) 8611 if (!(tpacpi_is_valid_fw_id(tp->bios_version_str, 'E') ||
8612 tpacpi_is_valid_fw_id(tp->bios_version_str, 'C')))
8611 return 0; 8613 return 0;
8612 8614
8613 tp->bios_model = tp->bios_version_str[0] 8615 tp->bios_model = tp->bios_version_str[0]