#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/irq.h>
#include <linux/mfd/core.h>
#include <linux/interrupt.h>
#include <linux/irqdomain.h>
#include <linux/mfd/wm831x/core.h>
#include <linux/mfd/wm831x/pdata.h>
#include <linux/mfd/wm831x/gpio.h>
#include <linux/mfd/wm831x/irq.h>
#include <linux/delay.h>
struct wm831x_irq_data { … };
static struct wm831x_irq_data wm831x_irqs[] = …;
static inline int irq_data_to_status_reg(struct wm831x_irq_data *irq_data)
{ … }
static inline struct wm831x_irq_data *irq_to_wm831x_irq(struct wm831x *wm831x,
int irq)
{ … }
static void wm831x_irq_lock(struct irq_data *data)
{ … }
static void wm831x_irq_sync_unlock(struct irq_data *data)
{ … }
static void wm831x_irq_enable(struct irq_data *data)
{ … }
static void wm831x_irq_disable(struct irq_data *data)
{ … }
static int wm831x_irq_set_type(struct irq_data *data, unsigned int type)
{ … }
static struct irq_chip wm831x_irq_chip = …;
static irqreturn_t wm831x_irq_thread(int irq, void *data)
{ … }
static int wm831x_irq_map(struct irq_domain *h, unsigned int virq,
irq_hw_number_t hw)
{ … }
static const struct irq_domain_ops wm831x_irq_domain_ops = …;
int wm831x_irq_init(struct wm831x *wm831x, int irq)
{ … }
void wm831x_irq_exit(struct wm831x *wm831x)
{ … }