#include <linux/bitops.h>
#include <linux/init.h>
#include <linux/irq.h>
#include <linux/irqdomain.h>
#include <linux/kernel.h>
#include <linux/of.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#include <linux/spinlock.h>
#define UNIPHIER_AIDET_NR_IRQS …
#define UNIPHIER_AIDET_DETCONF …
struct uniphier_aidet_priv { … };
static void uniphier_aidet_reg_update(struct uniphier_aidet_priv *priv,
unsigned int reg, u32 mask, u32 val)
{ … }
static void uniphier_aidet_detconf_update(struct uniphier_aidet_priv *priv,
unsigned long index, unsigned int val)
{ … }
static int uniphier_aidet_irq_set_type(struct irq_data *data, unsigned int type)
{ … }
static struct irq_chip uniphier_aidet_irq_chip = …;
static int uniphier_aidet_domain_translate(struct irq_domain *domain,
struct irq_fwspec *fwspec,
unsigned long *out_hwirq,
unsigned int *out_type)
{ … }
static int uniphier_aidet_domain_alloc(struct irq_domain *domain,
unsigned int virq, unsigned int nr_irqs,
void *arg)
{ … }
static const struct irq_domain_ops uniphier_aidet_domain_ops = …;
static int uniphier_aidet_probe(struct platform_device *pdev)
{ … }
static int __maybe_unused uniphier_aidet_suspend(struct device *dev)
{ … }
static int __maybe_unused uniphier_aidet_resume(struct device *dev)
{ … }
static const struct dev_pm_ops uniphier_aidet_pm_ops = …;
static const struct of_device_id uniphier_aidet_match[] = …;
static struct platform_driver uniphier_aidet_driver = …;
builtin_platform_driver(…) …;