Message ID | 1432795588-17476-1-git-send-email-yvo@apm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, May 28, 2015 at 01:46:28PM +0700, Y Vo wrote: > +#ifdef CONFIG_ACPI > + if (priv->nirq > 0) { > + /* Register interrupt handlers for gpio signaled acpi events */ > + acpi_gpiochip_request_interrupts(&priv->bgc.gc); > + } > +#endif You don't need to check CONFIG_ACPI as acpi_gpiochip_request_interrupts() will be stubbed out if !CONFIG_ACPI. Should you call acpi_gpiochip_free_interrupts() somewhere to unregister the interrupts as well? Even better if you can switch your driver to use GPIOLIB_IRQCHIP all this is done automatically for you.
On Fri, May 29, 2015 at 4:25 PM, Mika Westerberg <mika.westerberg@linux.intel.com> wrote: > On Thu, May 28, 2015 at 01:46:28PM +0700, Y Vo wrote: >> +#ifdef CONFIG_ACPI >> + if (priv->nirq > 0) { >> + /* Register interrupt handlers for gpio signaled acpi events */ >> + acpi_gpiochip_request_interrupts(&priv->bgc.gc); >> + } >> +#endif > > You don't need to check CONFIG_ACPI as acpi_gpiochip_request_interrupts() > will be stubbed out if !CONFIG_ACPI. I will remove this check. > > Should you call acpi_gpiochip_free_interrupts() somewhere to unregister > the interrupts as well? I will add this to xgene_gpio_sb_remove function. > > Even better if you can switch your driver to use GPIOLIB_IRQCHIP all > this is done automatically for you.
diff --git a/drivers/gpio/gpio-xgene-sb.c b/drivers/gpio/gpio-xgene-sb.c index b6a15c3..50aaae5 100644 --- a/drivers/gpio/gpio-xgene-sb.c +++ b/drivers/gpio/gpio-xgene-sb.c @@ -25,8 +25,11 @@ #include <linux/of_gpio.h> #include <linux/gpio.h> #include <linux/gpio/driver.h> +#include <linux/acpi.h> #include <linux/basic_mmio_gpio.h> +#include "gpiolib.h" + #define XGENE_MAX_GPIO_DS 22 #define XGENE_MAX_GPIO_DS_IRQ 6 @@ -129,6 +132,13 @@ static int xgene_gpio_sb_probe(struct platform_device *pdev) else dev_info(&pdev->dev, "X-Gene GPIO Standby driver registered\n"); +#ifdef CONFIG_ACPI + if (priv->nirq > 0) { + /* Register interrupt handlers for gpio signaled acpi events */ + acpi_gpiochip_request_interrupts(&priv->bgc.gc); + } +#endif + return ret; } @@ -145,10 +155,19 @@ static const struct of_device_id xgene_gpio_sb_of_match[] = { }; MODULE_DEVICE_TABLE(of, xgene_gpio_sb_of_match); +#ifdef CONFIG_ACPI +static const struct acpi_device_id xgene_gpio_sb_acpi_match[] = { + {"APMC0D15", 0}, + {}, +}; +MODULE_DEVICE_TABLE(acpi, xgene_gpio_sb_acpi_match); +#endif + static struct platform_driver xgene_gpio_sb_driver = { .driver = { .name = "xgene-gpio-sb", .of_match_table = xgene_gpio_sb_of_match, + .acpi_match_table = ACPI_PTR(xgene_gpio_sb_acpi_match), }, .probe = xgene_gpio_sb_probe, .remove = xgene_gpio_sb_remove,
Add ACPI support for APM X-Gene GPIO standby driver. Signed-off-by: Y Vo <yvo@apm.com> --- drivers/gpio/gpio-xgene-sb.c | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+), 0 deletions(-)