On Tue, Dec 21, 2021 at 5:13 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > Add helper code to get Linux IRQ numbers given a description of the IRQ > source (either IOAPIC index, or GPIO chip name + pin-number). > > This is intended to be used to lookup Linux IRQ numbers in cases where the > ACPI description for a device somehow lacks this info. This is only meant > for use on x86 ACPI platforms. > > This code is big/complex enough to warrant sharing, but too small to live > in its own module, therefor x86_acpi_irq_helper_get() is defined as > a static inline helper function. ... > +/* For gpio_get_desc which is EXPORT_SYMBOL_GPL() */ gpio_get_desc() and honestly I don't like this kind of includes (yes, I know sometimes it's the best compromise). > +#include "../../gpio/gpiolib.h" ... > + /* Like acpi_dev_gpio_irq_get(), but without parsing ACPI resources */ > + chip = gpiochip_find(data->gpio_chip, x86_acpi_irq_helper_gpiochip_find); > + if (!chip) > + return -EPROBE_DEFER; > + > + gpiod = gpiochip_get_desc(chip, data->index); > + if (IS_ERR(gpiod)) { > + ret = PTR_ERR(gpiod); > + pr_err("error %d getting GPIO %s %d\n", ret, > + data->gpio_chip, data->index); > + return ret; > + } > + > + irq = gpiod_to_irq(gpiod); > + if (irq < 0) { > + pr_err("error %d getting IRQ %s %d\n", irq, > + data->gpio_chip, data->index); > + return irq; > + } > + > + irq_type = acpi_dev_get_irq_type(data->trigger, data->polarity); > + if (irq_type != IRQ_TYPE_NONE && irq_type != irq_get_trigger_type(irq)) > + irq_set_irq_type(irq, irq_type); > + > + return irq; I'm wondering why it can't be a part of the GPIO ACPI library? -- With Best Regards, Andy Shevchenko