#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/mfd/mt6357/core.h>
#include <linux/mfd/mt6357/registers.h>
#include <linux/mfd/mt6358/core.h>
#include <linux/mfd/mt6358/registers.h>
#include <linux/mfd/mt6359/core.h>
#include <linux/mfd/mt6359/registers.h>
#include <linux/mfd/mt6397/core.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#define MTK_PMIC_REG_WIDTH …
static const struct irq_top_t mt6357_ints[] = …;
static const struct irq_top_t mt6358_ints[] = …;
static const struct irq_top_t mt6359_ints[] = …;
static struct pmic_irq_data mt6357_irqd = …;
static struct pmic_irq_data mt6358_irqd = …;
static struct pmic_irq_data mt6359_irqd = …;
static void pmic_irq_enable(struct irq_data *data)
{ … }
static void pmic_irq_disable(struct irq_data *data)
{ … }
static void pmic_irq_lock(struct irq_data *data)
{ … }
static void pmic_irq_sync_unlock(struct irq_data *data)
{ … }
static struct irq_chip mt6358_irq_chip = …;
static void mt6358_irq_sp_handler(struct mt6397_chip *chip,
unsigned int top_gp)
{ … }
static irqreturn_t mt6358_irq_handler(int irq, void *data)
{ … }
static int pmic_irq_domain_map(struct irq_domain *d, unsigned int irq,
irq_hw_number_t hw)
{ … }
static const struct irq_domain_ops mt6358_irq_domain_ops = …;
int mt6358_irq_init(struct mt6397_chip *chip)
{ … }