On Tue, 2017-04-18 at 13:58 +0200, Hans de Goede wrote: > On some systems we have a native PMIC driver which provides battery > monitoring, while the ACPI battery driver is broken on these systems > due to bad DSDTs or because we do not support the proprietary and > undocumented ACPI opregions these ACPI battery devices rely on > (e.g. BMOP opregion). > > This leads to there being 2 battery power_supply-s registed like this: > > ~$ acpi > Battery 0: Charging, 84%, 00:49:39 until charged > Battery 1: Unknown, 0%, rate information unavailable > > Even if the ACPI battery where to function fine (which on systems > where we have a native PMIC driver it often doesn't) we still do not > want to export the same battery to userspace twice. > > This commit adds a blacklist with PMIC ACPI HIDs for which we've a > native battery driver and makes the ACPI battery driver not register > itself when a PMIC on this list is present. > Some minor comments, sorry, didn't sent earlier. Since they are minor, consider to change if some more serious stuff comes up. > +/* Lists of PMIC ACPI HIDs with an (often better) native battery > driver */ > +static const char * const acpi_battery_blacklist[] = { > + "INT33F4", /* X-Powers AXP288 PMIC */ > + NULL Can we use ARRAY_SIZE() instead? > +}; > + > enum { > ACPI_BATTERY_ALARM_PRESENT, > ACPI_BATTERY_XINFO_PRESENT, > @@ -1316,7 +1322,15 @@ static struct acpi_driver acpi_battery_driver = > { > > static void __init acpi_battery_init_async(void *unused, > async_cookie_t cookie) > { > - int result; > + int i, result; > + > + for (i = 0; acpi_battery_blacklist[i]; i++) > + if (acpi_dev_present(acpi_battery_blacklist[i], "1", > -1)) { > + pr_info("ACPI: %s: found native %s PMIC, not > loading\n", pr_info(PREFIX "%s: ... -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html