#include <linux/bitops.h>
#include <linux/gpio/driver.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/spinlock.h>
#define RDA_GPIO_OEN_VAL …
#define RDA_GPIO_OEN_SET_OUT …
#define RDA_GPIO_OEN_SET_IN …
#define RDA_GPIO_VAL …
#define RDA_GPIO_SET …
#define RDA_GPIO_CLR …
#define RDA_GPIO_INT_CTRL_SET …
#define RDA_GPIO_INT_CTRL_CLR …
#define RDA_GPIO_INT_CLR …
#define RDA_GPIO_INT_STATUS …
#define RDA_GPIO_IRQ_RISE_SHIFT …
#define RDA_GPIO_IRQ_FALL_SHIFT …
#define RDA_GPIO_DEBOUCE_SHIFT …
#define RDA_GPIO_LEVEL_SHIFT …
#define RDA_GPIO_IRQ_MASK …
#define RDA_GPIO_BANK_NR …
struct rda_gpio { … };
static inline void rda_gpio_update(struct gpio_chip *chip, unsigned int offset,
u16 reg, int val)
{ … }
static void rda_gpio_irq_mask(struct irq_data *data)
{ … }
static void rda_gpio_irq_ack(struct irq_data *data)
{ … }
static int rda_gpio_set_irq(struct gpio_chip *chip, u32 offset,
unsigned int flow_type)
{ … }
static void rda_gpio_irq_unmask(struct irq_data *data)
{ … }
static int rda_gpio_irq_set_type(struct irq_data *data, unsigned int flow_type)
{ … }
static void rda_gpio_irq_handler(struct irq_desc *desc)
{ … }
static const struct irq_chip rda_gpio_irq_chip = …;
static int rda_gpio_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id rda_gpio_of_match[] = …;
MODULE_DEVICE_TABLE(of, rda_gpio_of_match);
static struct platform_driver rda_gpio_driver = …;
module_platform_driver_probe(…);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;