#include <linux/gpio/driver.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/property.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#define GPIO_DDR(gpio) …
#define GPIO_PLR(gpio) …
#define GPIO_IER(gpio) …
#define GPIO_ISR(gpio) …
#define GPIO_PTR(gpio) …
struct adnp { … };
static int adnp_read(struct adnp *adnp, unsigned offset, uint8_t *value)
{ … }
static int adnp_write(struct adnp *adnp, unsigned offset, uint8_t value)
{ … }
static int adnp_gpio_get(struct gpio_chip *chip, unsigned offset)
{ … }
static void __adnp_gpio_set(struct adnp *adnp, unsigned offset, int value)
{ … }
static void adnp_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
{ … }
static int adnp_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
{ … }
static int adnp_gpio_direction_output(struct gpio_chip *chip, unsigned offset,
int value)
{ … }
static void adnp_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
{ … }
static irqreturn_t adnp_irq(int irq, void *data)
{ … }
static void adnp_irq_mask(struct irq_data *d)
{ … }
static void adnp_irq_unmask(struct irq_data *d)
{ … }
static int adnp_irq_set_type(struct irq_data *d, unsigned int type)
{ … }
static void adnp_irq_bus_lock(struct irq_data *d)
{ … }
static void adnp_irq_bus_unlock(struct irq_data *d)
{ … }
static const struct irq_chip adnp_irq_chip = …;
static int adnp_irq_setup(struct adnp *adnp)
{ … }
static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios,
bool is_irq_controller)
{ … }
static int adnp_i2c_probe(struct i2c_client *client)
{ … }
static const struct i2c_device_id adnp_i2c_id[] = …;
MODULE_DEVICE_TABLE(i2c, adnp_i2c_id);
static const struct of_device_id adnp_of_match[] = …;
MODULE_DEVICE_TABLE(of, adnp_of_match);
static struct i2c_driver adnp_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;