Pārlūkot izejas kodu

platform/x86: thinkpad_acpi: Fix multi-battery bug

The struct containing the supported operations for all batteries is
being zeroed on each battery probe.  This prevents all other batteries
except the lastly probed one from being configured.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Thomas Weißschuh 7 gadi atpakaļ
vecāks
revīzija
d22296d9c3
1 mainītis faili ar 5 papildinājumiem un 1 dzēšanām
  1. 5 1
      drivers/platform/x86/thinkpad_acpi.c

+ 5 - 1
drivers/platform/x86/thinkpad_acpi.c

@@ -9374,7 +9374,9 @@ static int tpacpi_battery_probe(int battery)
 {
 {
 	int ret = 0;
 	int ret = 0;
 
 
-	memset(&battery_info, 0, sizeof(struct tpacpi_battery_driver_data));
+	memset(&battery_info.batteries[battery], 0,
+		sizeof(battery_info.batteries[battery]));
+
 	/*
 	/*
 	 * 1) Get the current start threshold
 	 * 1) Get the current start threshold
 	 * 2) Check for support
 	 * 2) Check for support
@@ -9620,6 +9622,8 @@ static const struct tpacpi_quirk battery_quirk_table[] __initconst = {
 
 
 static int __init tpacpi_battery_init(struct ibm_init_struct *ibm)
 static int __init tpacpi_battery_init(struct ibm_init_struct *ibm)
 {
 {
+	memset(&battery_info, 0, sizeof(battery_info));
+
 	tp_features.battery_force_primary = tpacpi_check_quirks(
 	tp_features.battery_force_primary = tpacpi_check_quirks(
 					battery_quirk_table,
 					battery_quirk_table,
 					ARRAY_SIZE(battery_quirk_table));
 					ARRAY_SIZE(battery_quirk_table));