On Thursday, March 16, 2017 05:16:00 PM Hans de Goede wrote: > On some systems with axp288 PMIC the dsdt also exports an ACPI battery > device (PNP0C0A device). 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 > > Note that the ACPI battery device does not work properly this is due > to Linux missing support for the vendor specific BMOP ACPI opregion. > But even if the ACPI battery where to function fine we still do not > want to export the same battery to userspace twice. > > Therefor this commit calls acpi_battery_unregister() after successfully > registering the axp288-fuel-gauge power_supply to remove the duplicate > (and often broken) ACPI battery power_supply. > > BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=194811 > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > Tested-by: Sergei Trusov <t.rus76@xxxxx> > --- > drivers/power/supply/Kconfig | 2 ++ > drivers/power/supply/axp288_fuel_gauge.c | 3 +++ > 2 files changed, 5 insertions(+) > > diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig > index d0453ca..e504644 100644 > --- a/drivers/power/supply/Kconfig > +++ b/drivers/power/supply/Kconfig > @@ -242,6 +242,8 @@ config AXP288_CHARGER > config AXP288_FUEL_GAUGE > tristate "X-Powers AXP288 Fuel Gauge" > depends on MFD_AXP20X && IIO > + # if ACPI_BATTERY=m, this can't be 'y' > + depends on ACPI_BATTERY || !ACPI_BATTERY > help > Say yes here to have support for X-Power power management IC (PMIC) > Fuel Gauge. The device provides battery statistics and status > diff --git a/drivers/power/supply/axp288_fuel_gauge.c b/drivers/power/supply/axp288_fuel_gauge.c > index a8dcabc..15f10ce 100644 > --- a/drivers/power/supply/axp288_fuel_gauge.c > +++ b/drivers/power/supply/axp288_fuel_gauge.c > @@ -26,6 +26,7 @@ > #include <linux/mfd/axp20x.h> > #include <linux/platform_device.h> > #include <linux/power_supply.h> > +#include <linux/power/acpi.h> > #include <linux/iio/consumer.h> > #include <linux/debugfs.h> > #include <linux/seq_file.h> > @@ -754,6 +755,8 @@ static int axp288_fuel_gauge_probe(struct platform_device *pdev) > return ret; > } > > + acpi_battery_unregister(); > + What if the ACPI battery driver is loaded after this has been called already? > fuel_gauge_create_debugfs(info); > fuel_gauge_init_irq(info); > schedule_delayed_work(&info->status_monitor, STATUS_MON_DELAY_JIFFIES); > Thanks, Rafael -- 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