#include <linux/device.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/mfd/rc5t583.h>
enum int_type { … };
static int gpedge_add[] = …;
static int irq_en_add[] = …;
static int irq_mon_add[] = …;
static int irq_clr_add[] = …;
static int main_int_type[] = …;
struct rc5t583_irq_data { … };
#define RC5T583_IRQ(_int_type, _master_bit, _grp_index, \
_int_bit, _mask_ind) …
static const struct rc5t583_irq_data rc5t583_irqs[RC5T583_MAX_IRQS] = …;
static void rc5t583_irq_lock(struct irq_data *irq_data)
{ … }
static void rc5t583_irq_unmask(struct irq_data *irq_data)
{ … }
static void rc5t583_irq_mask(struct irq_data *irq_data)
{ … }
static int rc5t583_irq_set_type(struct irq_data *irq_data, unsigned int type)
{ … }
static void rc5t583_irq_sync_unlock(struct irq_data *irq_data)
{ … }
static int rc5t583_irq_set_wake(struct irq_data *irq_data, unsigned int on)
{ … }
static irqreturn_t rc5t583_irq(int irq, void *data)
{ … }
static struct irq_chip rc5t583_irq_chip = …;
int rc5t583_irq_init(struct rc5t583 *rc5t583, int irq, int irq_base)
{ … }