#include <linux/export.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kthread.h>
#include <linux/mfd/twl.h>
#include <linux/platform_device.h>
#include <linux/suspend.h>
#include <linux/of.h>
#include <linux/irqdomain.h>
#include <linux/of_device.h>
#include "twl-core.h"
#define TWL6030_NR_IRQS …
static int twl6030_interrupt_mapping[24] = …;
static int twl6032_interrupt_mapping[24] = …;
struct twl6030_irq { … };
static struct twl6030_irq *twl6030_irq;
static int twl6030_irq_pm_notifier(struct notifier_block *notifier,
unsigned long pm_event, void *unused)
{ … }
static irqreturn_t twl6030_irq_thread(int irq, void *data)
{ … }
static int twl6030_irq_set_wake(struct irq_data *d, unsigned int on)
{ … }
int twl6030_interrupt_unmask(u8 bit_mask, u8 offset)
{ … }
EXPORT_SYMBOL(…);
int twl6030_interrupt_mask(u8 bit_mask, u8 offset)
{ … }
EXPORT_SYMBOL(…);
int twl6030_mmc_card_detect_config(void)
{ … }
EXPORT_SYMBOL(…);
int twl6030_mmc_card_detect(struct device *dev, int slot)
{ … }
EXPORT_SYMBOL(…);
static int twl6030_irq_map(struct irq_domain *d, unsigned int virq,
irq_hw_number_t hwirq)
{ … }
static void twl6030_irq_unmap(struct irq_domain *d, unsigned int virq)
{ … }
static const struct irq_domain_ops twl6030_irq_domain_ops = …;
static const struct of_device_id twl6030_of_match[] __maybe_unused = …;
int twl6030_init_irq(struct device *dev, int irq_num)
{ … }
void twl6030_exit_irq(void)
{ … }