#include <linux/bitops.h>
#include <linux/gpio/driver.h>
#include <linux/interrupt.h>
#include <linux/mfd/intel_soc_pmic.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/seq_file.h>
#define BANK0_NR_PINS …
#define BANK1_NR_PINS …
#define BANK2_NR_PINS …
#define WCOVE_GPIO_NUM …
#define WCOVE_VGPIO_NUM …
#define GPIO_OUT_CTRL_BASE …
#define GPIO_IN_CTRL_BASE …
#define GROUP0_NR_IRQS …
#define GROUP1_NR_IRQS …
#define IRQ_MASK_BASE …
#define IRQ_STATUS_BASE …
#define GPIO_IRQ0_MASK …
#define GPIO_IRQ1_MASK …
#define UPDATE_IRQ_TYPE …
#define UPDATE_IRQ_MASK …
#define CTLI_INTCNT_DIS …
#define CTLI_INTCNT_NE …
#define CTLI_INTCNT_PE …
#define CTLI_INTCNT_BE …
#define CTLO_DIR_IN …
#define CTLO_DIR_OUT …
#define CTLO_DRV_MASK …
#define CTLO_DRV_OD …
#define CTLO_DRV_CMOS …
#define CTLO_DRV_REN …
#define CTLO_RVAL_2KDOWN …
#define CTLO_RVAL_2KUP …
#define CTLO_RVAL_50KDOWN …
#define CTLO_RVAL_50KUP …
#define CTLO_INPUT_SET …
#define CTLO_OUTPUT_SET …
enum ctrl_register { … };
struct wcove_gpio { … };
static inline int to_reg(int gpio, enum ctrl_register type)
{ … }
static inline int to_ireg(int gpio, enum ctrl_register type, unsigned int *mask)
{ … }
static void wcove_update_irq_mask(struct wcove_gpio *wg, irq_hw_number_t gpio)
{ … }
static void wcove_update_irq_ctrl(struct wcove_gpio *wg, irq_hw_number_t gpio)
{ … }
static int wcove_gpio_dir_in(struct gpio_chip *chip, unsigned int gpio)
{ … }
static int wcove_gpio_dir_out(struct gpio_chip *chip, unsigned int gpio,
int value)
{ … }
static int wcove_gpio_get_direction(struct gpio_chip *chip, unsigned int gpio)
{ … }
static int wcove_gpio_get(struct gpio_chip *chip, unsigned int gpio)
{ … }
static void wcove_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{ … }
static int wcove_gpio_set_config(struct gpio_chip *chip, unsigned int gpio,
unsigned long config)
{ … }
static int wcove_irq_type(struct irq_data *data, unsigned int type)
{ … }
static void wcove_bus_lock(struct irq_data *data)
{ … }
static void wcove_bus_sync_unlock(struct irq_data *data)
{ … }
static void wcove_irq_unmask(struct irq_data *data)
{ … }
static void wcove_irq_mask(struct irq_data *data)
{ … }
static const struct irq_chip wcove_irqchip = …;
static irqreturn_t wcove_gpio_irq_handler(int irq, void *data)
{ … }
static void wcove_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
{ … }
static int wcove_gpio_probe(struct platform_device *pdev)
{ … }
static struct platform_driver wcove_gpio_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;