#include <linux/gpio/driver.h>
#include <linux/platform_device.h>
#include <linux/module.h>
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/acpi.h>
#define GPIO_9XX_BYTESWAP …
#define GPIO_9XX_CTRL …
#define GPIO_9XX_OUTPUT_EN …
#define GPIO_9XX_PADDRV …
#define GPIO_9XX_INT_EN00 …
#define GPIO_9XX_INT_EN10 …
#define GPIO_9XX_INT_EN20 …
#define GPIO_9XX_INT_EN30 …
#define GPIO_9XX_INT_POL …
#define GPIO_9XX_INT_TYPE …
#define GPIO_9XX_INT_STAT …
#define XLP_GPIO_IRQ_TYPE_LVL …
#define XLP_GPIO_IRQ_TYPE_EDGE …
#define XLP_GPIO_IRQ_POL_HIGH …
#define XLP_GPIO_IRQ_POL_LOW …
#define XLP_GPIO_REGSZ …
#define XLP_GPIO_IRQ_BASE …
#define XLP_MAX_NR_GPIO …
struct xlp_gpio_priv { … };
static int xlp_gpio_get_reg(void __iomem *addr, unsigned gpio)
{ … }
static void xlp_gpio_set_reg(void __iomem *addr, unsigned gpio, int state)
{ … }
static void xlp_gpio_irq_enable(struct irq_data *d)
{ … }
static void xlp_gpio_irq_disable(struct irq_data *d)
{ … }
static void xlp_gpio_irq_mask_ack(struct irq_data *d)
{ … }
static void xlp_gpio_irq_unmask(struct irq_data *d)
{ … }
static int xlp_gpio_set_irq_type(struct irq_data *d, unsigned int type)
{ … }
static struct irq_chip xlp_gpio_irq_chip = …;
static void xlp_gpio_generic_handler(struct irq_desc *desc)
{ … }
static int xlp_gpio_dir_output(struct gpio_chip *gc, unsigned gpio, int state)
{ … }
static int xlp_gpio_dir_input(struct gpio_chip *gc, unsigned gpio)
{ … }
static int xlp_gpio_get(struct gpio_chip *gc, unsigned gpio)
{ … }
static void xlp_gpio_set(struct gpio_chip *gc, unsigned gpio, int state)
{ … }
static int xlp_gpio_probe(struct platform_device *pdev)
{ … }
#ifdef CONFIG_ACPI
static const struct acpi_device_id xlp_gpio_acpi_match[] = …;
MODULE_DEVICE_TABLE(acpi, xlp_gpio_acpi_match);
#endif
static struct platform_driver xlp_gpio_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;