#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/io.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/bitops.h>
#include <linux/err.h>
#include <linux/gpio/driver.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/pinctrl/consumer.h>
struct em_gio_priv { … };
#define GIO_E1 …
#define GIO_E0 …
#define GIO_EM …
#define GIO_OL …
#define GIO_OH …
#define GIO_I …
#define GIO_IIA …
#define GIO_IEN …
#define GIO_IDS …
#define GIO_IIM …
#define GIO_RAW …
#define GIO_MST …
#define GIO_IIR …
#define GIO_IDT0 …
#define GIO_IDT1 …
#define GIO_IDT2 …
#define GIO_IDT3 …
#define GIO_RAWBL …
#define GIO_RAWBH …
#define GIO_IRBL …
#define GIO_IRBH …
#define GIO_IDT(n) …
static inline unsigned long em_gio_read(struct em_gio_priv *p, int offs)
{ … }
static inline void em_gio_write(struct em_gio_priv *p, int offs,
unsigned long value)
{ … }
static void em_gio_irq_disable(struct irq_data *d)
{ … }
static void em_gio_irq_enable(struct irq_data *d)
{ … }
static int em_gio_irq_reqres(struct irq_data *d)
{ … }
static void em_gio_irq_relres(struct irq_data *d)
{ … }
#define GIO_ASYNC(x) …
static unsigned char em_gio_sense_table[IRQ_TYPE_SENSE_MASK + 1] = …;
static int em_gio_irq_set_type(struct irq_data *d, unsigned int type)
{ … }
static irqreturn_t em_gio_irq_handler(int irq, void *dev_id)
{ … }
static inline struct em_gio_priv *gpio_to_priv(struct gpio_chip *chip)
{ … }
static int em_gio_direction_input(struct gpio_chip *chip, unsigned offset)
{ … }
static int em_gio_get(struct gpio_chip *chip, unsigned offset)
{ … }
static void __em_gio_set(struct gpio_chip *chip, unsigned int reg,
unsigned shift, int value)
{ … }
static void em_gio_set(struct gpio_chip *chip, unsigned offset, int value)
{ … }
static int em_gio_direction_output(struct gpio_chip *chip, unsigned offset,
int value)
{ … }
static int em_gio_to_irq(struct gpio_chip *chip, unsigned offset)
{ … }
static void em_gio_free(struct gpio_chip *chip, unsigned offset)
{ … }
static int em_gio_irq_domain_map(struct irq_domain *h, unsigned int irq,
irq_hw_number_t hwirq)
{ … }
static const struct irq_domain_ops em_gio_irq_domain_ops = …;
static void em_gio_irq_domain_remove(void *data)
{ … }
static int em_gio_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id em_gio_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, em_gio_dt_ids);
static struct platform_driver em_gio_device_driver = …;
static int __init em_gio_init(void)
{ … }
postcore_initcall(em_gio_init);
static void __exit em_gio_exit(void)
{ … }
module_exit(em_gio_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;