#include <linux/bitops.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/irqdomain.h>
#include <linux/regmap.h>
struct hi6421v600_irq { … };
enum hi6421v600_irq_list { … };
#define HISI_IRQ_BANK_SIZE …
#define HISI_POWERKEY_IRQ_NUM …
#define HISI_IRQ_POWERKEY_UP_DOWN …
#define SOC_PMIC_IRQ_MASK_0_ADDR …
#define SOC_PMIC_IRQ0_ADDR …
#define HISI_IRQ_MASK_REG(irq_data) …
#define HISI_IRQ_MASK_BIT(irq_data) …
#define HISI_8BITS_MASK …
static irqreturn_t hi6421v600_irq_handler(int irq, void *__priv)
{ … }
static void hi6421v600_irq_mask(struct irq_data *d)
{ … }
static void hi6421v600_irq_unmask(struct irq_data *d)
{ … }
static struct irq_chip hi6421v600_pmu_irqchip = …;
static int hi6421v600_irq_map(struct irq_domain *d, unsigned int virq,
irq_hw_number_t hw)
{ … }
static const struct irq_domain_ops hi6421v600_domain_ops = …;
static void hi6421v600_irq_init(struct hi6421v600_irq *priv)
{ … }
static int hi6421v600_irq_probe(struct platform_device *pdev)
{ … }
static const struct platform_device_id hi6421v600_irq_table[] = …;
MODULE_DEVICE_TABLE(platform, hi6421v600_irq_table);
static struct platform_driver hi6421v600_irq_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;