#include <linux/bitmap.h>
#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/gpio/driver.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/spi/spi.h>
#define DEFAULT_NGPIO …
struct pisosr_gpio { … };
static int pisosr_gpio_refresh(struct pisosr_gpio *gpio)
{ … }
static int pisosr_gpio_get_direction(struct gpio_chip *chip,
unsigned offset)
{ … }
static int pisosr_gpio_direction_input(struct gpio_chip *chip,
unsigned offset)
{ … }
static int pisosr_gpio_direction_output(struct gpio_chip *chip,
unsigned offset, int value)
{ … }
static int pisosr_gpio_get(struct gpio_chip *chip, unsigned offset)
{ … }
static int pisosr_gpio_get_multiple(struct gpio_chip *chip,
unsigned long *mask, unsigned long *bits)
{ … }
static const struct gpio_chip template_chip = …;
static void pisosr_mutex_destroy(void *lock)
{ … }
static int pisosr_gpio_probe(struct spi_device *spi)
{ … }
static const struct spi_device_id pisosr_gpio_id_table[] = …;
MODULE_DEVICE_TABLE(spi, pisosr_gpio_id_table);
static const struct of_device_id pisosr_gpio_of_match_table[] = …;
MODULE_DEVICE_TABLE(of, pisosr_gpio_of_match_table);
static struct spi_driver pisosr_gpio_driver = …;
module_spi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;