forked from mirrors/linux
		
	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: Y Vo <yvo@apm.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
		
							parent
							
								
									81d49ce8a8
								
							
						
					
					
						commit
						733cf014f0
					
				
					 1 changed files with 21 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue