#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/gpio/driver.h>
#include <linux/bio.h>
#include <linux/mutex.h>
#include <linux/kthread.h>
#include <linux/interrupt.h>
#include "mchp_pci1xxxx_gp.h"
#define PCI1XXXX_NR_PINS …
#define PERI_GEN_RESET …
#define OUT_EN_OFFSET(x) …
#define INP_EN_OFFSET(x) …
#define OUT_OFFSET(x) …
#define INP_OFFSET(x) …
#define PULLUP_OFFSET(x) …
#define PULLDOWN_OFFSET(x) …
#define OPENDRAIN_OFFSET(x) …
#define WAKEMASK_OFFSET(x) …
#define MODE_OFFSET(x) …
#define INTR_LO_TO_HI_EDGE_CONFIG(x) …
#define INTR_HI_TO_LO_EDGE_CONFIG(x) …
#define INTR_LEVEL_CONFIG_OFFSET(x) …
#define INTR_LEVEL_MASK_OFFSET(x) …
#define INTR_STAT_OFFSET(x) …
#define DEBOUNCE_OFFSET(x) …
#define PIO_GLOBAL_CONFIG_OFFSET …
#define PIO_PCI_CTRL_REG_OFFSET …
#define INTR_MASK_OFFSET(x) …
#define INTR_STATUS_OFFSET(x) …
struct pci1xxxx_gpio { … };
static int pci1xxxx_gpio_get_direction(struct gpio_chip *gpio, unsigned int nr)
{ … }
static inline void pci1xxx_assign_bit(void __iomem *base_addr, unsigned int reg_offset,
unsigned int bitpos, bool set)
{ … }
static int pci1xxxx_gpio_direction_input(struct gpio_chip *gpio, unsigned int nr)
{ … }
static int pci1xxxx_gpio_get(struct gpio_chip *gpio, unsigned int nr)
{ … }
static int pci1xxxx_gpio_direction_output(struct gpio_chip *gpio,
unsigned int nr, int val)
{ … }
static void pci1xxxx_gpio_set(struct gpio_chip *gpio,
unsigned int nr, int val)
{ … }
static int pci1xxxx_gpio_set_config(struct gpio_chip *gpio, unsigned int offset,
unsigned long config)
{ … }
static void pci1xxxx_gpio_irq_ack(struct irq_data *data)
{ … }
static void pci1xxxx_gpio_irq_set_mask(struct irq_data *data, bool set)
{ … }
static void pci1xxxx_gpio_irq_mask(struct irq_data *data)
{ … }
static void pci1xxxx_gpio_irq_unmask(struct irq_data *data)
{ … }
static int pci1xxxx_gpio_set_type(struct irq_data *data, unsigned int trigger_type)
{ … }
static irqreturn_t pci1xxxx_gpio_irq_handler(int irq, void *dev_id)
{ … }
static const struct irq_chip pci1xxxx_gpio_irqchip = …;
static int pci1xxxx_gpio_suspend(struct device *dev)
{ … }
static int pci1xxxx_gpio_resume(struct device *dev)
{ … }
static int pci1xxxx_gpio_setup(struct pci1xxxx_gpio *priv, int irq)
{ … }
static int pci1xxxx_gpio_probe(struct auxiliary_device *aux_dev,
const struct auxiliary_device_id *id)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(pci1xxxx_gpio_pm_ops, pci1xxxx_gpio_suspend, pci1xxxx_gpio_resume);
static const struct auxiliary_device_id pci1xxxx_gpio_auxiliary_id_table[] = …;
MODULE_DEVICE_TABLE(auxiliary, pci1xxxx_gpio_auxiliary_id_table);
static struct auxiliary_driver pci1xxxx_gpio_driver = …;
module_auxiliary_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;