#include <linux/platform_device.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/irqdomain.h>
#include <linux/module.h>
#include <linux/of_device.h>
#include <linux/pm_runtime.h>
#define INTC_IRQPIN_MAX 8
#define INTC_IRQPIN_REG_SENSE 0
#define INTC_IRQPIN_REG_PRIO 1
#define INTC_IRQPIN_REG_SOURCE 2
#define INTC_IRQPIN_REG_MASK 3
#define INTC_IRQPIN_REG_CLEAR 4
#define INTC_IRQPIN_REG_NR_MANDATORY 5
#define INTC_IRQPIN_REG_IRLM 5
#define INTC_IRQPIN_REG_NR 6
struct intc_irqpin_iomem {
unsigned long (*read)(void __iomem *iomem);
void (*write)(void __iomem *iomem, unsigned long data);
struct intc_irqpin_priv *p;
struct intc_irqpin_priv {
struct intc_irqpin_iomem iomem[INTC_IRQPIN_REG_NR];
struct intc_irqpin_irq irq[INTC_IRQPIN_MAX];
unsigned int sense_bitfield_width;
struct platform_device *pdev;
struct irq_chip irq_chip;
struct irq_domain *irq_domain;
struct intc_irqpin_config {
static unsigned long intc_irqpin_read32(void __iomem *iomem)
static unsigned long intc_irqpin_read8(void __iomem *iomem)
static void intc_irqpin_write32(void __iomem *iomem, unsigned long data)