Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 733cf014 authored by Y Vo's avatar Y Vo Committed by Linus Walleij
Browse files

gpio: xgene: add ACPI support for APM X-Gene GPIO standby driver



Add ACPI support for APM X-Gene GPIO standby driver.

Signed-off-by: default avatarY Vo <yvo@apm.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 81d49ce8
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -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

@@ -128,6 +131,11 @@ static int xgene_gpio_sb_probe(struct platform_device *pdev)
	else
		dev_info(&pdev->dev, "X-Gene GPIO Standby driver registered\n");

	if (priv->nirq > 0) {
		/* Register interrupt handlers for gpio signaled acpi events */
		acpi_gpiochip_request_interrupts(&priv->bgc.gc);
	}

	return ret;
}

@@ -135,6 +143,10 @@ static int xgene_gpio_sb_remove(struct platform_device *pdev)
{
	struct xgene_gpio_sb *priv = platform_get_drvdata(pdev);

	if (priv->nirq > 0) {
		acpi_gpiochip_free_interrupts(&priv->bgc.gc);
	}

	return bgpio_remove(&priv->bgc);
}

@@ -144,10 +156,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,