|
@@ -62,6 +62,7 @@ MODULE_AUTHOR("Alexey Starikovskiy <astarikovskiy@suse.de>");
|
|
|
MODULE_DESCRIPTION("ACPI Battery Driver");
|
|
|
MODULE_LICENSE("GPL");
|
|
|
|
|
|
+static int battery_bix_broken_package;
|
|
|
static unsigned int cache_time = 1000;
|
|
|
module_param(cache_time, uint, 0644);
|
|
|
MODULE_PARM_DESC(cache_time, "cache time in milliseconds");
|
|
@@ -416,7 +417,12 @@ static int acpi_battery_get_info(struct acpi_battery *battery)
|
|
|
ACPI_EXCEPTION((AE_INFO, status, "Evaluating %s", name));
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
- if (test_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags))
|
|
|
+
|
|
|
+ if (battery_bix_broken_package)
|
|
|
+ result = extract_package(battery, buffer.pointer,
|
|
|
+ extended_info_offsets + 1,
|
|
|
+ ARRAY_SIZE(extended_info_offsets) - 1);
|
|
|
+ else if (test_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags))
|
|
|
result = extract_package(battery, buffer.pointer,
|
|
|
extended_info_offsets,
|
|
|
ARRAY_SIZE(extended_info_offsets));
|
|
@@ -754,6 +760,17 @@ static int battery_notify(struct notifier_block *nb,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static struct dmi_system_id bat_dmi_table[] = {
|
|
|
+ {
|
|
|
+ .ident = "NEC LZ750/LS",
|
|
|
+ .matches = {
|
|
|
+ DMI_MATCH(DMI_SYS_VENDOR, "NEC"),
|
|
|
+ DMI_MATCH(DMI_PRODUCT_NAME, "PC-LZ750LS"),
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {},
|
|
|
+};
|
|
|
+
|
|
|
static int acpi_battery_add(struct acpi_device *device)
|
|
|
{
|
|
|
int result = 0;
|
|
@@ -846,6 +863,9 @@ static void __init acpi_battery_init_async(void *unused, async_cookie_t cookie)
|
|
|
{
|
|
|
if (acpi_disabled)
|
|
|
return;
|
|
|
+
|
|
|
+ if (dmi_check_system(bat_dmi_table))
|
|
|
+ battery_bix_broken_package = 1;
|
|
|
acpi_bus_register_driver(&acpi_battery_driver);
|
|
|
}
|
|
|
|