2026-01-21 18:59:54 +08:00

48 lines
1.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* This file contains declarations and inline functions for interfacing
* with the IRQ handling routines in irq.c.
*/
#ifndef _ASM_SW64_IRQ_IMPL_H
#define _ASM_SW64_IRQ_IMPL_H
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/profile.h>
#define SW64_PCIE0_INT_BASE 17
#define SW64_PCIE0_MSI_BASE 21
#define SW64_PCIE1_INT_BASE 277
#define SW64_PCIE1_MSI_BASE 281
#define RTC_IRQ 8
#define SWI2C_IRQ 14
enum sw64_irq_type {
INT_IPI = 1,
INT_PC0 = 2,
INT_PC1 = 3,
INT_INTx = 5,
INT_MSI = 6,
INT_MT = 7,
INT_RTC = 9,
INT_FAULT = 10,
INT_VT_SERIAL = 12,
INT_DEV = 17,
INT_NMI = 18,
INT_LEGACY = 31,
};
extern struct irqaction timer_irqaction;
extern void init_rtc_irq(irq_handler_t handler);
extern void handle_irq(int irq);
extern void handle_ipi(struct pt_regs *);
extern void __init sw64_init_irq(void);
extern irqreturn_t timer_interrupt(int irq, void *dev);
extern void handle_chip_irq(unsigned long type, unsigned long vector,
unsigned long irq_arg, struct pt_regs *regs);
#endif