arch/risc-v: Remove dupped irq code from fe310

Signed-off-by: Huang Qi <huangqi3@xiaomi.com>
This commit is contained in:
Huang Qi 2022-01-20 22:16:37 +08:00 committed by Xiang Xiao
parent e81439a367
commit 8532feda78
4 changed files with 47 additions and 70 deletions

View File

@ -33,66 +33,43 @@
/* Map RISC-V exception code to NuttX IRQ */
/* IRQ 0-15 : (exception:interrupt=0) */
#define FE310_IRQ_IAMISALIGNED (0) /* Instruction Address Misaligned */
#define FE310_IRQ_IAFAULT (1) /* Instruction Address Fault */
#define FE310_IRQ_IINSTRUCTION (2) /* Illegal Instruction */
#define FE310_IRQ_BPOINT (3) /* Break Point */
#define FE310_IRQ_LAMISALIGNED (4) /* Load Address Misaligned */
#define FE310_IRQ_LAFAULT (5) /* Load Access Fault */
#define FE310_IRQ_SAMISALIGNED (6) /* Store/AMO Address Misaligned */
#define FE310_IRQ_SAFAULT (7) /* Store/AMO Access Fault */
#define FE310_IRQ_ECALLU (8) /* Environment Call from U-mode */
/* 9-10: Reserved */
#define FE310_IRQ_ECALLM (11) /* Environment Call from M-mode */
/* 12-15: Reserved */
/* IRQ 16- : (async event:interrupt=1) */
#define FE310_IRQ_ASYNC (16)
#define FE310_IRQ_MSOFT (FE310_IRQ_ASYNC + 3) /* Machine Software Int */
#define FE310_IRQ_MTIMER (FE310_IRQ_ASYNC + 7) /* Machine Timer Int */
#define FE310_IRQ_MEXT (FE310_IRQ_ASYNC + 11) /* Machine External Int */
/* Machine Global External Interrupt */
#define FE310_IRQ_UART0 (FE310_IRQ_MEXT + 3)
#define FE310_IRQ_UART1 (FE310_IRQ_MEXT + 4)
#define FE310_IRQ_UART0 (RISCV_IRQ_MEXT + 3)
#define FE310_IRQ_UART1 (RISCV_IRQ_MEXT + 4)
#define FE310_IRQ_GPIO0 (FE310_IRQ_MEXT + 8)
#define FE310_IRQ_GPIO1 (FE310_IRQ_MEXT + 9)
#define FE310_IRQ_GPIO2 (FE310_IRQ_MEXT + 10)
#define FE310_IRQ_GPIO3 (FE310_IRQ_MEXT + 11)
#define FE310_IRQ_GPIO4 (FE310_IRQ_MEXT + 12)
#define FE310_IRQ_GPIO5 (FE310_IRQ_MEXT + 13)
#define FE310_IRQ_GPIO6 (FE310_IRQ_MEXT + 14)
#define FE310_IRQ_GPIO7 (FE310_IRQ_MEXT + 15)
#define FE310_IRQ_GPIO8 (FE310_IRQ_MEXT + 16)
#define FE310_IRQ_GPIO9 (FE310_IRQ_MEXT + 17)
#define FE310_IRQ_GPIO10 (FE310_IRQ_MEXT + 18)
#define FE310_IRQ_GPIO11 (FE310_IRQ_MEXT + 19)
#define FE310_IRQ_GPIO12 (FE310_IRQ_MEXT + 20)
#define FE310_IRQ_GPIO13 (FE310_IRQ_MEXT + 21)
#define FE310_IRQ_GPIO14 (FE310_IRQ_MEXT + 22)
#define FE310_IRQ_GPIO15 (FE310_IRQ_MEXT + 23)
#define FE310_IRQ_GPIO16 (FE310_IRQ_MEXT + 24)
#define FE310_IRQ_GPIO17 (FE310_IRQ_MEXT + 25)
#define FE310_IRQ_GPIO18 (FE310_IRQ_MEXT + 26)
#define FE310_IRQ_GPIO19 (FE310_IRQ_MEXT + 27)
#define FE310_IRQ_GPIO20 (FE310_IRQ_MEXT + 28)
#define FE310_IRQ_GPIO21 (FE310_IRQ_MEXT + 29)
#define FE310_IRQ_GPIO22 (FE310_IRQ_MEXT + 30)
#define FE310_IRQ_GPIO23 (FE310_IRQ_MEXT + 31)
#define FE310_IRQ_GPIO24 (FE310_IRQ_MEXT + 32)
#define FE310_IRQ_GPIO25 (FE310_IRQ_MEXT + 33)
#define FE310_IRQ_GPIO26 (FE310_IRQ_MEXT + 34)
#define FE310_IRQ_GPIO27 (FE310_IRQ_MEXT + 35)
#define FE310_IRQ_GPIO28 (FE310_IRQ_MEXT + 36)
#define FE310_IRQ_GPIO29 (FE310_IRQ_MEXT + 37)
#define FE310_IRQ_GPIO30 (FE310_IRQ_MEXT + 38)
#define FE310_IRQ_GPIO31 (FE310_IRQ_MEXT + 39)
#define FE310_IRQ_GPIO0 (RISCV_IRQ_MEXT + 8)
#define FE310_IRQ_GPIO1 (RISCV_IRQ_MEXT + 9)
#define FE310_IRQ_GPIO2 (RISCV_IRQ_MEXT + 10)
#define FE310_IRQ_GPIO3 (RISCV_IRQ_MEXT + 11)
#define FE310_IRQ_GPIO4 (RISCV_IRQ_MEXT + 12)
#define FE310_IRQ_GPIO5 (RISCV_IRQ_MEXT + 13)
#define FE310_IRQ_GPIO6 (RISCV_IRQ_MEXT + 14)
#define FE310_IRQ_GPIO7 (RISCV_IRQ_MEXT + 15)
#define FE310_IRQ_GPIO8 (RISCV_IRQ_MEXT + 16)
#define FE310_IRQ_GPIO9 (RISCV_IRQ_MEXT + 17)
#define FE310_IRQ_GPIO10 (RISCV_IRQ_MEXT + 18)
#define FE310_IRQ_GPIO11 (RISCV_IRQ_MEXT + 19)
#define FE310_IRQ_GPIO12 (RISCV_IRQ_MEXT + 20)
#define FE310_IRQ_GPIO13 (RISCV_IRQ_MEXT + 21)
#define FE310_IRQ_GPIO14 (RISCV_IRQ_MEXT + 22)
#define FE310_IRQ_GPIO15 (RISCV_IRQ_MEXT + 23)
#define FE310_IRQ_GPIO16 (RISCV_IRQ_MEXT + 24)
#define FE310_IRQ_GPIO17 (RISCV_IRQ_MEXT + 25)
#define FE310_IRQ_GPIO18 (RISCV_IRQ_MEXT + 26)
#define FE310_IRQ_GPIO19 (RISCV_IRQ_MEXT + 27)
#define FE310_IRQ_GPIO20 (RISCV_IRQ_MEXT + 28)
#define FE310_IRQ_GPIO21 (RISCV_IRQ_MEXT + 29)
#define FE310_IRQ_GPIO22 (RISCV_IRQ_MEXT + 30)
#define FE310_IRQ_GPIO23 (RISCV_IRQ_MEXT + 31)
#define FE310_IRQ_GPIO24 (RISCV_IRQ_MEXT + 32)
#define FE310_IRQ_GPIO25 (RISCV_IRQ_MEXT + 33)
#define FE310_IRQ_GPIO26 (RISCV_IRQ_MEXT + 34)
#define FE310_IRQ_GPIO27 (RISCV_IRQ_MEXT + 35)
#define FE310_IRQ_GPIO28 (RISCV_IRQ_MEXT + 36)
#define FE310_IRQ_GPIO29 (RISCV_IRQ_MEXT + 37)
#define FE310_IRQ_GPIO30 (RISCV_IRQ_MEXT + 38)
#define FE310_IRQ_GPIO31 (RISCV_IRQ_MEXT + 39)
/* Total number of IRQs */

View File

@ -84,7 +84,7 @@ void up_irqinitialize(void)
/* Attach the ecall interrupt handler */
irq_attach(FE310_IRQ_ECALLM, riscv_swint, NULL);
irq_attach(RISCV_IRQ_ECALLM, riscv_swint, NULL);
#ifndef CONFIG_SUPPRESS_INTERRUPTS
@ -107,15 +107,15 @@ void up_disable_irq(int irq)
int extirq;
uint32_t oldstat;
if (irq == FE310_IRQ_MTIMER)
if (irq == RISCV_IRQ_MTIMER)
{
/* Read mstatus & clear machine timer interrupt enable in mie */
asm volatile ("csrrc %0, mie, %1": "=r" (oldstat) : "r"(MIE_MTIE));
}
else if (irq > FE310_IRQ_MEXT)
else if (irq > RISCV_IRQ_MEXT)
{
extirq = irq - FE310_IRQ_MEXT;
extirq = irq - RISCV_IRQ_MEXT;
/* Clear enable bit for the irq */
@ -144,15 +144,15 @@ void up_enable_irq(int irq)
int extirq;
uint32_t oldstat;
if (irq == FE310_IRQ_MTIMER)
if (irq == RISCV_IRQ_MTIMER)
{
/* Read mstatus & set machine timer interrupt enable in mie */
asm volatile ("csrrs %0, mie, %1": "=r" (oldstat) : "r"(MIE_MTIE));
}
else if (irq > FE310_IRQ_MEXT)
else if (irq > RISCV_IRQ_MEXT)
{
extirq = irq - FE310_IRQ_MEXT;
extirq = irq - RISCV_IRQ_MEXT;
/* Set enable bit for the irq */

View File

@ -59,7 +59,7 @@ void *riscv_dispatch_irq(uintptr_t vector, uintptr_t *regs)
/* Firstly, check if the irq is machine external interrupt */
if (FE310_IRQ_MEXT == irq)
if (RISCV_IRQ_MEXT == irq)
{
uint32_t val = getreg32(FE310_PLIC_CLAIM);
@ -70,7 +70,7 @@ void *riscv_dispatch_irq(uintptr_t vector, uintptr_t *regs)
/* NOTE: In case of ecall, we need to adjust mepc in the context */
if (FE310_IRQ_ECALLM == irq)
if (RISCV_IRQ_ECALLM == irq)
{
*mepc += 4;
}
@ -95,7 +95,7 @@ void *riscv_dispatch_irq(uintptr_t vector, uintptr_t *regs)
irq_dispatch(irq, regs);
if (FE310_IRQ_MEXT <= irq)
if (RISCV_IRQ_MEXT <= irq)
{
/* If the irq is from GPIO, clear pending bit in the GPIO */
@ -106,7 +106,7 @@ void *riscv_dispatch_irq(uintptr_t vector, uintptr_t *regs)
/* Then write PLIC_CLAIM to clear pending in PLIC */
putreg32(irq - FE310_IRQ_MEXT, FE310_PLIC_CLAIM);
putreg32(irq - RISCV_IRQ_MEXT, FE310_PLIC_CLAIM);
}
#endif

View File

@ -118,7 +118,7 @@ void up_timer_initialize(void)
{
/* Attach timer interrupt handler */
irq_attach(FE310_IRQ_MTIMER, fe310_timerisr, NULL);
irq_attach(RISCV_IRQ_MTIMER, fe310_timerisr, NULL);
/* Reload CLINT mtimecmp */
@ -126,5 +126,5 @@ void up_timer_initialize(void)
/* And enable the timer interrupt */
up_enable_irq(FE310_IRQ_MTIMER);
up_enable_irq(RISCV_IRQ_MTIMER);
}