Message ID | 20211031162428.22368-4-hdegoede@redhat.com (mailing list archive) |
---|---|
State | RFC, archived |
Headers | show |
Series | ACPI/power-suppy add fuel-gauge support on cht-wc PMIC without USB-PD support devs | expand |
On Sun, Oct 31, 2021 at 6:25 PM Hans de Goede <hdegoede@redhat.com> wrote: > > Add a new "ignore" module option to completely ignore controller@pin combos > from _AEI lists. > > And add a DMI quirk to ignore the interrupt of the BQ27520 fuel-gauge IC > on the Xiaomi Mi Pad 2. On this device we use native charger + fuel-gauge > drivers because of issues with the ACPI battery implementation. The _AEI > listing of the fuel-gauge IRQ is intended for use with the unused ACPI > battery implementation and is blocking the bq27xxx fuel-gauge driver > from binding. I'm wondering if the idea behind this is something relative to https://elixir.bootlin.com/linux/latest/source/drivers/acpi/sysfs.c
On Sun, Oct 31, 2021 at 9:59 PM Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > On Sun, Oct 31, 2021 at 6:25 PM Hans de Goede <hdegoede@redhat.com> wrote: > I'm wondering if the idea behind this is something relative to > https://elixir.bootlin.com/linux/latest/source/drivers/acpi/sysfs.c Missed line: https://elixir.bootlin.com/linux/latest/source/drivers/acpi/sysfs.c#L792
Hi, On 10/31/21 20:59, Andy Shevchenko wrote: > On Sun, Oct 31, 2021 at 6:25 PM Hans de Goede <hdegoede@redhat.com> wrote: >> >> Add a new "ignore" module option to completely ignore controller@pin combos >> from _AEI lists. >> >> And add a DMI quirk to ignore the interrupt of the BQ27520 fuel-gauge IC >> on the Xiaomi Mi Pad 2. On this device we use native charger + fuel-gauge >> drivers because of issues with the ACPI battery implementation. The _AEI >> listing of the fuel-gauge IRQ is intended for use with the unused ACPI >> battery implementation and is blocking the bq27xxx fuel-gauge driver >> from binding. > > I'm wondering if the idea behind this is something relative to > https://elixir.bootlin.com/linux/latest/source/drivers/acpi/sysfs.c The idea indeed is similar, but there is only one set of GPEs and the GPIO pin-namespace is per GPIO controller, hence the controller-name@pin format used, which is also used for the already existing ignore_wake gpiolib-acpi.c module option and the patches re-use the existing parsing code. But since there seems to be agreement that using a board-file to work around the DSDT deficiencies is the best option this patch will no longer be needed. It is probably still good to keep it archived somewhere in case the functionality turns out to be useful on some other device(s). Regards, Hans
diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c index 342219a58a32..2d08f33a22a6 100644 --- a/drivers/gpio/gpiolib-acpi.c +++ b/drivers/gpio/gpiolib-acpi.c @@ -32,9 +32,16 @@ MODULE_PARM_DESC(ignore_wake, "controller@pin combos on which to ignore the ACPI wake flag " "ignore_wake=controller@pin[,controller@pin[,...]]"); +static char *ignore; +module_param(ignore, charp, 0444); +MODULE_PARM_DESC(ignore, + "controller@pin combos which are to be ignored from _AEI lists " + "ignore=controller@pin[,controller@pin[,...]]"); + struct acpi_gpiolib_dmi_quirk { bool no_edge_events_on_boot; char *ignore_wake; + char *ignore; }; /** @@ -407,6 +414,11 @@ static acpi_status acpi_gpiochip_alloc_event(struct acpi_resource *ares, if (!handler) return AE_OK; + if (acpi_gpio_in_ignore_list(ignore, dev_name(chip->parent), pin)) { + dev_info(chip->parent, "Ignoring _AEI entry for pin %d\n", pin); + return AE_OK; + } + desc = acpi_request_own_gpiod(chip, agpio, 0, "ACPI:Event"); if (IS_ERR(desc)) { dev_err(chip->parent, @@ -1565,6 +1577,19 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = { .ignore_wake = "INT33FF:01@0", }, }, + { + /* + * On the Xiaomi Mi Pad 2 we use native battery drivers, disable + * the _AEI entry for the fuel-gauge IRQ. + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Xiaomi Inc"), + DMI_MATCH(DMI_PRODUCT_NAME, "Mipad2"), + }, + .driver_data = &(struct acpi_gpiolib_dmi_quirk) { + .ignore = "INT33FF:03@52", + }, + }, {} /* Terminating entry */ }; @@ -1587,6 +1612,9 @@ static int __init acpi_gpio_setup_params(void) if (ignore_wake == NULL && quirk && quirk->ignore_wake) ignore_wake = quirk->ignore_wake; + if (ignore == NULL && quirk && quirk->ignore) + ignore = quirk->ignore; + return 0; }
Add a new "ignore" module option to completely ignore controller@pin combos from _AEI lists. And add a DMI quirk to ignore the interrupt of the BQ27520 fuel-gauge IC on the Xiaomi Mi Pad 2. On this device we use native charger + fuel-gauge drivers because of issues with the ACPI battery implementation. The _AEI listing of the fuel-gauge IRQ is intended for use with the unused ACPI battery implementation and is blocking the bq27xxx fuel-gauge driver from binding. Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- drivers/gpio/gpiolib-acpi.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)