| .. | .. |
|---|
| 2 | 2 | #ifndef __ASM_MACH_LOONGSON64_IRQ_H_ |
|---|
| 3 | 3 | #define __ASM_MACH_LOONGSON64_IRQ_H_ |
|---|
| 4 | 4 | |
|---|
| 5 | | -#include <boot_param.h> |
|---|
| 6 | | - |
|---|
| 7 | | -#ifdef CONFIG_CPU_LOONGSON3 |
|---|
| 8 | | - |
|---|
| 9 | 5 | /* cpu core interrupt numbers */ |
|---|
| 10 | | -#define MIPS_CPU_IRQ_BASE 56 |
|---|
| 6 | +#define NR_IRQS_LEGACY 16 |
|---|
| 7 | +#define NR_MIPS_CPU_IRQS 8 |
|---|
| 8 | +#define NR_MAX_CHAINED_IRQS 40 /* Chained IRQs means those not directly used by devices */ |
|---|
| 9 | +#define NR_IRQS (NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + NR_MAX_CHAINED_IRQS + 256) |
|---|
| 11 | 10 | |
|---|
| 12 | | -#define LOONGSON_UART_IRQ (MIPS_CPU_IRQ_BASE + 2) /* UART */ |
|---|
| 13 | | -#define LOONGSON_BRIDGE_IRQ (MIPS_CPU_IRQ_BASE + 3) /* CASCADE */ |
|---|
| 14 | | -#define LOONGSON_TIMER_IRQ (MIPS_CPU_IRQ_BASE + 7) /* CPU Timer */ |
|---|
| 11 | +#define MIPS_CPU_IRQ_BASE NR_IRQS_LEGACY |
|---|
| 15 | 12 | |
|---|
| 16 | | -#define LOONGSON_HT1_CFG_BASE loongson_sysconf.ht_control_base |
|---|
| 17 | | -#define LOONGSON_HT1_INT_VECTOR_BASE (LOONGSON_HT1_CFG_BASE + 0x80) |
|---|
| 18 | | -#define LOONGSON_HT1_INT_EN_BASE (LOONGSON_HT1_CFG_BASE + 0xa0) |
|---|
| 19 | | -#define LOONGSON_HT1_INT_VECTOR(n) \ |
|---|
| 20 | | - LOONGSON3_REG32(LOONGSON_HT1_INT_VECTOR_BASE, 4 * (n)) |
|---|
| 21 | | -#define LOONGSON_HT1_INTN_EN(n) \ |
|---|
| 22 | | - LOONGSON3_REG32(LOONGSON_HT1_INT_EN_BASE, 4 * (n)) |
|---|
| 13 | +#include <asm/mach-generic/irq.h> |
|---|
| 23 | 14 | |
|---|
| 24 | | -#define LOONGSON_INT_ROUTER_OFFSET 0x1400 |
|---|
| 25 | | -#define LOONGSON_INT_ROUTER_INTEN \ |
|---|
| 26 | | - LOONGSON3_REG32(LOONGSON3_REG_BASE, LOONGSON_INT_ROUTER_OFFSET + 0x24) |
|---|
| 27 | | -#define LOONGSON_INT_ROUTER_INTENSET \ |
|---|
| 28 | | - LOONGSON3_REG32(LOONGSON3_REG_BASE, LOONGSON_INT_ROUTER_OFFSET + 0x28) |
|---|
| 29 | | -#define LOONGSON_INT_ROUTER_INTENCLR \ |
|---|
| 30 | | - LOONGSON3_REG32(LOONGSON3_REG_BASE, LOONGSON_INT_ROUTER_OFFSET + 0x2c) |
|---|
| 31 | | -#define LOONGSON_INT_ROUTER_ENTRY(n) \ |
|---|
| 32 | | - LOONGSON3_REG8(LOONGSON3_REG_BASE, LOONGSON_INT_ROUTER_OFFSET + n) |
|---|
| 33 | | -#define LOONGSON_INT_ROUTER_LPC LOONGSON_INT_ROUTER_ENTRY(0x0a) |
|---|
| 34 | | -#define LOONGSON_INT_ROUTER_HT1(n) LOONGSON_INT_ROUTER_ENTRY(n + 0x18) |
|---|
| 35 | | - |
|---|
| 36 | | -#define LOONGSON_INT_COREx_INTy(x, y) (1<<(x) | 1<<(y+4)) /* route to int y of core x */ |
|---|
| 37 | | - |
|---|
| 38 | | -#endif |
|---|
| 39 | | - |
|---|
| 40 | | -extern void fixup_irqs(void); |
|---|
| 41 | | -extern void loongson3_ipi_interrupt(struct pt_regs *regs); |
|---|
| 42 | | - |
|---|
| 43 | | -#include_next <irq.h> |
|---|
| 44 | 15 | #endif /* __ASM_MACH_LOONGSON64_IRQ_H_ */ |
|---|