linux/drivers/soc/fsl/qe/qe_ic.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * arch/powerpc/sysdev/qe_lib/qe_ic.c
 *
 * Copyright (C) 2006 Freescale Semiconductor, Inc.  All rights reserved.
 *
 * Author: Li Yang <[email protected]>
 * Based on code from Shlomi Gridish <[email protected]>
 *
 * QUICC ENGINE Interrupt Controller
 */

#include <linux/of_irq.h>
#include <linux/of_address.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/irq.h>
#include <linux/reboot.h>
#include <linux/slab.h>
#include <linux/stddef.h>
#include <linux/sched.h>
#include <linux/signal.h>
#include <linux/device.h>
#include <linux/spinlock.h>
#include <linux/platform_device.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <soc/fsl/qe/qe.h>

#define NR_QE_IC_INTS

/* QE IC registers offset */
#define QEIC_CICR
#define QEIC_CIVEC
#define QEIC_CIPXCC
#define QEIC_CIPYCC
#define QEIC_CIPWCC
#define QEIC_CIPZCC
#define QEIC_CIMR
#define QEIC_CRIMR
#define QEIC_CIPRTA
#define QEIC_CIPRTB
#define QEIC_CHIVEC

struct qe_ic {};

/*
 * QE interrupt controller internal structure
 */
struct qe_ic_info {};

static DEFINE_RAW_SPINLOCK(qe_ic_lock);

static struct qe_ic_info qe_ic_info[] =;

static inline u32 qe_ic_read(__be32  __iomem *base, unsigned int reg)
{}

static inline void qe_ic_write(__be32  __iomem *base, unsigned int reg,
			       u32 value)
{}

static inline struct qe_ic *qe_ic_from_irq(unsigned int virq)
{}

static inline struct qe_ic *qe_ic_from_irq_data(struct irq_data *d)
{}

static void qe_ic_unmask_irq(struct irq_data *d)
{}

static void qe_ic_mask_irq(struct irq_data *d)
{}

static struct irq_chip qe_ic_irq_chip =;

static int qe_ic_host_match(struct irq_domain *h, struct device_node *node,
			    enum irq_domain_bus_token bus_token)
{}

static int qe_ic_host_map(struct irq_domain *h, unsigned int virq,
			  irq_hw_number_t hw)
{}

static const struct irq_domain_ops qe_ic_host_ops =;

/* Return an interrupt vector or 0 if no interrupt is pending. */
static unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
{}

/* Return an interrupt vector or 0 if no interrupt is pending. */
static unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
{}

static void qe_ic_cascade_low(struct irq_desc *desc)
{}

static void qe_ic_cascade_high(struct irq_desc *desc)
{}

static void qe_ic_cascade_muxed_mpic(struct irq_desc *desc)
{}

static int qe_ic_init(struct platform_device *pdev)
{}
static const struct of_device_id qe_ic_ids[] =;

static struct platform_driver qe_ic_driver =;

static int __init qe_ic_of_init(void)
{}
subsys_initcall(qe_ic_of_init);