From: Manoj Iyer <[email protected]>
In the latest V-series bios DMI_PRODUCT_VERSION does not contain
the string Lenovo or Thinkpad, but is set to the model number, this
causes the thinkpad_acpi module to fail to load. Recognize laptop
as Lenovo using DMI_BIOS_VENDOR instead, which is set to Lenovo.
Signed-off-by: Manoj Iyer <[email protected]>
---
drivers/platform/x86/thinkpad_acpi.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index e7f7328..66dfdef 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -8663,6 +8663,14 @@ static int __must_check __init get_thinkpad_model_data(
if (!tp->model_str)
return -ENOMEM;
}
+ else {
+ s = dmi_get_system_info(DMI_BIOS_VENDOR);
+ if (s && !(strnicmp(s, "Lenovo", 6))) {
+ tp->model_str = kstrdup(s, GFP_KERNEL);
+ if (!tp->model_str)
+ return -ENOMEM;
+ }
+ }
s = dmi_get_system_info(DMI_PRODUCT_NAME);
tp->nummodel_str = kstrdup(s, GFP_KERNEL);
--
1.7.9.5
On Mon, 06 Aug 2012, [email protected] wrote:
> From: Manoj Iyer <[email protected]>
>
> In the latest V-series bios DMI_PRODUCT_VERSION does not contain
> the string Lenovo or Thinkpad, but is set to the model number, this
> causes the thinkpad_acpi module to fail to load. Recognize laptop
> as Lenovo using DMI_BIOS_VENDOR instead, which is set to Lenovo.
Please add here the testing you did.
> Signed-off-by: Manoj Iyer <[email protected]>
> ---
> drivers/platform/x86/thinkpad_acpi.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
> index e7f7328..66dfdef 100644
> --- a/drivers/platform/x86/thinkpad_acpi.c
> +++ b/drivers/platform/x86/thinkpad_acpi.c
> @@ -8663,6 +8663,14 @@ static int __must_check __init get_thinkpad_model_data(
> if (!tp->model_str)
> return -ENOMEM;
> }
> + else {
Please fix this: } else { all in a single line.
> + s = dmi_get_system_info(DMI_BIOS_VENDOR);
> + if (s && !(strnicmp(s, "Lenovo", 6))) {
> + tp->model_str = kstrdup(s, GFP_KERNEL);
> + if (!tp->model_str)
> + return -ENOMEM;
> + }
> + }
>
> s = dmi_get_system_info(DMI_PRODUCT_NAME);
> tp->nummodel_str = kstrdup(s, GFP_KERNEL);
That should be all. You might want to get acquinted with the checkpatch
script, it would have pointed the "else" thing to you, I think (I didn't
notice it right away).
Anyway, other than the cosmetic stuff above, the patch looks good. I
haven't tested it yet on a IBM thinkpad, though. Will do later today.
--
"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