#include <linux/delay.h>
#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/device.h>
#include <linux/mfd/lp8788.h>
#include <linux/module.h>
#include <linux/slab.h>
#define LP8788_INT_1 …
#define LP8788_INTEN_1 …
#define BASE_INTEN_ADDR …
#define SIZE_REG …
#define NUM_REGS …
struct lp8788_irq_data { … };
static inline u8 _irq_to_addr(enum lp8788_int_id id)
{ … }
static inline u8 _irq_to_enable_addr(enum lp8788_int_id id)
{ … }
static inline u8 _irq_to_mask(enum lp8788_int_id id)
{ … }
static inline u8 _irq_to_val(enum lp8788_int_id id, int enable)
{ … }
static void lp8788_irq_enable(struct irq_data *data)
{ … }
static void lp8788_irq_disable(struct irq_data *data)
{ … }
static void lp8788_irq_bus_lock(struct irq_data *data)
{ … }
static void lp8788_irq_bus_sync_unlock(struct irq_data *data)
{ … }
static struct irq_chip lp8788_irq_chip = …;
static irqreturn_t lp8788_irq_handler(int irq, void *ptr)
{ … }
static int lp8788_irq_map(struct irq_domain *d, unsigned int virq,
irq_hw_number_t hwirq)
{ … }
static const struct irq_domain_ops lp8788_domain_ops = …;
int lp8788_irq_init(struct lp8788 *lp, int irq)
{ … }
void lp8788_irq_exit(struct lp8788 *lp)
{ … }