1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero * 2013-07-06 Bernard first version 9*10465441SEvalZero */ 10*10465441SEvalZero 11*10465441SEvalZero #ifndef __INTERRUPT_H__ 12*10465441SEvalZero #define __INTERRUPT_H__ 13*10465441SEvalZero 14*10465441SEvalZero #define INT_IRQ 0x00 15*10465441SEvalZero #define INT_FIQ 0x01 16*10465441SEvalZero 17*10465441SEvalZero #define INTC_REVISION(hw_base) REG32((hw_base) + 0x0) 18*10465441SEvalZero #define INTC_SYSCONFIG(hw_base) REG32((hw_base) + 0x10) 19*10465441SEvalZero #define INTC_SYSSTATUS(hw_base) REG32((hw_base) + 0x14) 20*10465441SEvalZero #define INTC_SIR_IRQ(hw_base) REG32((hw_base) + 0x40) 21*10465441SEvalZero #define INTC_SIR_FIQ(hw_base) REG32((hw_base) + 0x44) 22*10465441SEvalZero #define INTC_CONTROL(hw_base) REG32((hw_base) + 0x48) 23*10465441SEvalZero #define INTC_PROTECTION(hw_base) REG32((hw_base) + 0x4c) 24*10465441SEvalZero #define INTC_IDLE(hw_base) REG32((hw_base) + 0x50) 25*10465441SEvalZero #define INTC_IRQ_PRIORITY(hw_base) REG32((hw_base) + 0x60) 26*10465441SEvalZero #define INTC_FIQ_PRIORITY(hw_base) REG32((hw_base) + 0x64) 27*10465441SEvalZero #define INTC_THRESHOLD(hw_base) REG32((hw_base) + 0x68) 28*10465441SEvalZero #define INTC_SICR(hw_base) REG32((hw_base) + 0x6c) 29*10465441SEvalZero #define INTC_SCR(hw_base, n) REG32((hw_base) + 0x70 + ((n) * 0x04)) 30*10465441SEvalZero #define INTC_ITR(hw_base, n) REG32((hw_base) + 0x80 + ((n) * 0x20)) 31*10465441SEvalZero #define INTC_MIR(hw_base, n) REG32((hw_base) + 0x84 + ((n) * 0x20)) 32*10465441SEvalZero #define INTC_MIR_CLEAR(hw_base, n) REG32((hw_base) + 0x88 + ((n) * 0x20)) 33*10465441SEvalZero #define INTC_MIR_SET(hw_base, n) REG32((hw_base) + 0x8c + ((n) * 0x20)) 34*10465441SEvalZero #define INTC_ISR_SET(hw_base, n) REG32((hw_base) + 0x90 + ((n) * 0x20)) 35*10465441SEvalZero #define INTC_ISR_CLEAR(hw_base, n) REG32((hw_base) + 0x94 + ((n) * 0x20)) 36*10465441SEvalZero #define INTC_PENDING_IRQ(hw_base, n) REG32((hw_base) + 0x98 + ((n) * 0x20)) 37*10465441SEvalZero #define INTC_PENDING_FIQ(hw_base, n) REG32((hw_base) + 0x9c + ((n) * 0x20)) 38*10465441SEvalZero #define INTC_ILR(hw_base, n) REG32((hw_base) + 0x100 + ((n) * 0x04)) 39*10465441SEvalZero 40*10465441SEvalZero void rt_hw_interrupt_control(int vector, int priority, int route); 41*10465441SEvalZero int rt_hw_interrupt_get_active(int fiq_irq); 42*10465441SEvalZero void rt_hw_interrupt_ack(int fiq_irq); 43*10465441SEvalZero void rt_hw_interrupt_trigger(int vector); 44*10465441SEvalZero void rt_hw_interrupt_clear(int vector); 45*10465441SEvalZero 46*10465441SEvalZero #endif 47