linux/drivers/irqchip/exynos-combiner.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * Combiner irqchip for EXYNOS
 */
#include <linux/err.h>
#include <linux/export.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/slab.h>
#include <linux/syscore_ops.h>
#include <linux/irqdomain.h>
#include <linux/irqchip.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/interrupt.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>

#define COMBINER_ENABLE_SET
#define COMBINER_ENABLE_CLEAR
#define COMBINER_INT_STATUS

#define IRQ_IN_COMBINER

static DEFINE_SPINLOCK(irq_controller_lock);

struct combiner_chip_data {};

static struct combiner_chip_data *combiner_data;
static struct irq_domain *combiner_irq_domain;
static unsigned int max_nr =;

static inline void __iomem *combiner_base(struct irq_data *data)
{}

static void combiner_mask_irq(struct irq_data *data)
{}

static void combiner_unmask_irq(struct irq_data *data)
{}

static void combiner_handle_cascade_irq(struct irq_desc *desc)
{}

#ifdef CONFIG_SMP
static int combiner_set_affinity(struct irq_data *d,
				 const struct cpumask *mask_val, bool force)
{}
#endif

static struct irq_chip combiner_chip =;

static void __init combiner_cascade_irq(struct combiner_chip_data *combiner_data,
					unsigned int irq)
{}

static void __init combiner_init_one(struct combiner_chip_data *combiner_data,
				     unsigned int combiner_nr,
				     void __iomem *base, unsigned int irq)
{}

static int combiner_irq_domain_xlate(struct irq_domain *d,
				     struct device_node *controller,
				     const u32 *intspec, unsigned int intsize,
				     unsigned long *out_hwirq,
				     unsigned int *out_type)
{}

static int combiner_irq_domain_map(struct irq_domain *d, unsigned int irq,
				   irq_hw_number_t hw)
{}

static const struct irq_domain_ops combiner_irq_domain_ops =;

static void __init combiner_init(void __iomem *combiner_base,
				 struct device_node *np)
{}

#ifdef CONFIG_PM

/**
 * combiner_suspend - save interrupt combiner state before suspend
 *
 * Save the interrupt enable set register for all combiner groups since
 * the state is lost when the system enters into a sleep state.
 *
 */
static int combiner_suspend(void)
{}

/**
 * combiner_resume - restore interrupt combiner state after resume
 *
 * Restore the interrupt enable set register for all combiner groups since
 * the state is lost when the system enters into a sleep state on suspend.
 *
 */
static void combiner_resume(void)
{}

#else
#define combiner_suspend
#define combiner_resume
#endif

static struct syscore_ops combiner_syscore_ops =;

static int __init combiner_of_init(struct device_node *np,
				   struct device_node *parent)
{}
IRQCHIP_DECLARE(exynos4210_combiner, "samsung,exynos4210-combiner",
		combiner_of_init);