| /* ********************************************************************* | |
| * SB1250 Board Support Package | |
| * | |
| * Interrupt Mapper definitions File: sb1250_int.h | |
| * | |
| * This module contains constants for manipulating the SB1250's | |
| * interrupt mapper and definitions for the interrupt sources. | |
| * | |
| * SB1250 specification level: User's manual 1/02/02 | |
| * | |
| ********************************************************************* | |
| * | |
| * Copyright 2000, 2001, 2002, 2003 | |
| * Broadcom Corporation. All rights reserved. | |
| * | |
| * This program is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU General Public License as | |
| * published by the Free Software Foundation; either version 2 of | |
| * the License, or (at your option) any later version. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU General Public License | |
| * along with this program; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, | |
| * MA 02111-1307 USA | |
| ********************************************************************* */ | |
| #ifndef _SB1250_INT_H | |
| #define _SB1250_INT_H | |
| #include <asm/sibyte/sb1250_defs.h> | |
| /* ********************************************************************* | |
| * Interrupt Mapper Constants | |
| ********************************************************************* */ | |
| /* | |
| * Interrupt sources (Table 4-8, UM 0.2) | |
| * | |
| * First, the interrupt numbers. | |
| */ | |
| #define K_INT_SOURCES 64 | |
| #define K_INT_WATCHDOG_TIMER_0 0 | |
| #define K_INT_WATCHDOG_TIMER_1 1 | |
| #define K_INT_TIMER_0 2 | |
| #define K_INT_TIMER_1 3 | |
| #define K_INT_TIMER_2 4 | |
| #define K_INT_TIMER_3 5 | |
| #define K_INT_SMB_0 6 | |
| #define K_INT_SMB_1 7 | |
| #define K_INT_UART_0 8 | |
| #define K_INT_UART_1 9 | |
| #define K_INT_SER_0 10 | |
| #define K_INT_SER_1 11 | |
| #define K_INT_PCMCIA 12 | |
| #define K_INT_ADDR_TRAP 13 | |
| #define K_INT_PERF_CNT 14 | |
| #define K_INT_TRACE_FREEZE 15 | |
| #define K_INT_BAD_ECC 16 | |
| #define K_INT_COR_ECC 17 | |
| #define K_INT_IO_BUS 18 | |
| #define K_INT_MAC_0 19 | |
| #define K_INT_MAC_1 20 | |
| #define K_INT_MAC_2 21 | |
| #define K_INT_DM_CH_0 22 | |
| #define K_INT_DM_CH_1 23 | |
| #define K_INT_DM_CH_2 24 | |
| #define K_INT_DM_CH_3 25 | |
| #define K_INT_MBOX_0 26 | |
| #define K_INT_MBOX_1 27 | |
| #define K_INT_MBOX_2 28 | |
| #define K_INT_MBOX_3 29 | |
| #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) | |
| #define K_INT_CYCLE_CP0_INT 30 | |
| #define K_INT_CYCLE_CP1_INT 31 | |
| #endif /* 1250 PASS2 || 112x PASS1 */ | |
| #define K_INT_GPIO_0 32 | |
| #define K_INT_GPIO_1 33 | |
| #define K_INT_GPIO_2 34 | |
| #define K_INT_GPIO_3 35 | |
| #define K_INT_GPIO_4 36 | |
| #define K_INT_GPIO_5 37 | |
| #define K_INT_GPIO_6 38 | |
| #define K_INT_GPIO_7 39 | |
| #define K_INT_GPIO_8 40 | |
| #define K_INT_GPIO_9 41 | |
| #define K_INT_GPIO_10 42 | |
| #define K_INT_GPIO_11 43 | |
| #define K_INT_GPIO_12 44 | |
| #define K_INT_GPIO_13 45 | |
| #define K_INT_GPIO_14 46 | |
| #define K_INT_GPIO_15 47 | |
| #define K_INT_LDT_FATAL 48 | |
| #define K_INT_LDT_NONFATAL 49 | |
| #define K_INT_LDT_SMI 50 | |
| #define K_INT_LDT_NMI 51 | |
| #define K_INT_LDT_INIT 52 | |
| #define K_INT_LDT_STARTUP 53 | |
| #define K_INT_LDT_EXT 54 | |
| #define K_INT_PCI_ERROR 55 | |
| #define K_INT_PCI_INTA 56 | |
| #define K_INT_PCI_INTB 57 | |
| #define K_INT_PCI_INTC 58 | |
| #define K_INT_PCI_INTD 59 | |
| #define K_INT_SPARE_2 60 | |
| #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) | |
| #define K_INT_MAC_0_CH1 61 | |
| #define K_INT_MAC_1_CH1 62 | |
| #define K_INT_MAC_2_CH1 63 | |
| #endif /* 1250 PASS2 || 112x PASS1 */ | |
| /* | |
| * Mask values for each interrupt | |
| */ | |
| #define M_INT_WATCHDOG_TIMER_0 _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_0) | |
| #define M_INT_WATCHDOG_TIMER_1 _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_1) | |
| #define M_INT_TIMER_0 _SB_MAKEMASK1(K_INT_TIMER_0) | |
| #define M_INT_TIMER_1 _SB_MAKEMASK1(K_INT_TIMER_1) | |
| #define M_INT_TIMER_2 _SB_MAKEMASK1(K_INT_TIMER_2) | |
| #define M_INT_TIMER_3 _SB_MAKEMASK1(K_INT_TIMER_3) | |
| #define M_INT_SMB_0 _SB_MAKEMASK1(K_INT_SMB_0) | |
| #define M_INT_SMB_1 _SB_MAKEMASK1(K_INT_SMB_1) | |
| #define M_INT_UART_0 _SB_MAKEMASK1(K_INT_UART_0) | |
| #define M_INT_UART_1 _SB_MAKEMASK1(K_INT_UART_1) | |
| #define M_INT_SER_0 _SB_MAKEMASK1(K_INT_SER_0) | |
| #define M_INT_SER_1 _SB_MAKEMASK1(K_INT_SER_1) | |
| #define M_INT_PCMCIA _SB_MAKEMASK1(K_INT_PCMCIA) | |
| #define M_INT_ADDR_TRAP _SB_MAKEMASK1(K_INT_ADDR_TRAP) | |
| #define M_INT_PERF_CNT _SB_MAKEMASK1(K_INT_PERF_CNT) | |
| #define M_INT_TRACE_FREEZE _SB_MAKEMASK1(K_INT_TRACE_FREEZE) | |
| #define M_INT_BAD_ECC _SB_MAKEMASK1(K_INT_BAD_ECC) | |
| #define M_INT_COR_ECC _SB_MAKEMASK1(K_INT_COR_ECC) | |
| #define M_INT_IO_BUS _SB_MAKEMASK1(K_INT_IO_BUS) | |
| #define M_INT_MAC_0 _SB_MAKEMASK1(K_INT_MAC_0) | |
| #define M_INT_MAC_1 _SB_MAKEMASK1(K_INT_MAC_1) | |
| #define M_INT_MAC_2 _SB_MAKEMASK1(K_INT_MAC_2) | |
| #define M_INT_DM_CH_0 _SB_MAKEMASK1(K_INT_DM_CH_0) | |
| #define M_INT_DM_CH_1 _SB_MAKEMASK1(K_INT_DM_CH_1) | |
| #define M_INT_DM_CH_2 _SB_MAKEMASK1(K_INT_DM_CH_2) | |
| #define M_INT_DM_CH_3 _SB_MAKEMASK1(K_INT_DM_CH_3) | |
| #define M_INT_MBOX_0 _SB_MAKEMASK1(K_INT_MBOX_0) | |
| #define M_INT_MBOX_1 _SB_MAKEMASK1(K_INT_MBOX_1) | |
| #define M_INT_MBOX_2 _SB_MAKEMASK1(K_INT_MBOX_2) | |
| #define M_INT_MBOX_3 _SB_MAKEMASK1(K_INT_MBOX_3) | |
| #define M_INT_MBOX_ALL _SB_MAKEMASK(4, K_INT_MBOX_0) | |
| #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) | |
| #define M_INT_CYCLE_CP0_INT _SB_MAKEMASK1(K_INT_CYCLE_CP0_INT) | |
| #define M_INT_CYCLE_CP1_INT _SB_MAKEMASK1(K_INT_CYCLE_CP1_INT) | |
| #endif /* 1250 PASS2 || 112x PASS1 */ | |
| #define M_INT_GPIO_0 _SB_MAKEMASK1(K_INT_GPIO_0) | |
| #define M_INT_GPIO_1 _SB_MAKEMASK1(K_INT_GPIO_1) | |
| #define M_INT_GPIO_2 _SB_MAKEMASK1(K_INT_GPIO_2) | |
| #define M_INT_GPIO_3 _SB_MAKEMASK1(K_INT_GPIO_3) | |
| #define M_INT_GPIO_4 _SB_MAKEMASK1(K_INT_GPIO_4) | |
| #define M_INT_GPIO_5 _SB_MAKEMASK1(K_INT_GPIO_5) | |
| #define M_INT_GPIO_6 _SB_MAKEMASK1(K_INT_GPIO_6) | |
| #define M_INT_GPIO_7 _SB_MAKEMASK1(K_INT_GPIO_7) | |
| #define M_INT_GPIO_8 _SB_MAKEMASK1(K_INT_GPIO_8) | |
| #define M_INT_GPIO_9 _SB_MAKEMASK1(K_INT_GPIO_9) | |
| #define M_INT_GPIO_10 _SB_MAKEMASK1(K_INT_GPIO_10) | |
| #define M_INT_GPIO_11 _SB_MAKEMASK1(K_INT_GPIO_11) | |
| #define M_INT_GPIO_12 _SB_MAKEMASK1(K_INT_GPIO_12) | |
| #define M_INT_GPIO_13 _SB_MAKEMASK1(K_INT_GPIO_13) | |
| #define M_INT_GPIO_14 _SB_MAKEMASK1(K_INT_GPIO_14) | |
| #define M_INT_GPIO_15 _SB_MAKEMASK1(K_INT_GPIO_15) | |
| #define M_INT_LDT_FATAL _SB_MAKEMASK1(K_INT_LDT_FATAL) | |
| #define M_INT_LDT_NONFATAL _SB_MAKEMASK1(K_INT_LDT_NONFATAL) | |
| #define M_INT_LDT_SMI _SB_MAKEMASK1(K_INT_LDT_SMI) | |
| #define M_INT_LDT_NMI _SB_MAKEMASK1(K_INT_LDT_NMI) | |
| #define M_INT_LDT_INIT _SB_MAKEMASK1(K_INT_LDT_INIT) | |
| #define M_INT_LDT_STARTUP _SB_MAKEMASK1(K_INT_LDT_STARTUP) | |
| #define M_INT_LDT_EXT _SB_MAKEMASK1(K_INT_LDT_EXT) | |
| #define M_INT_PCI_ERROR _SB_MAKEMASK1(K_INT_PCI_ERROR) | |
| #define M_INT_PCI_INTA _SB_MAKEMASK1(K_INT_PCI_INTA) | |
| #define M_INT_PCI_INTB _SB_MAKEMASK1(K_INT_PCI_INTB) | |
| #define M_INT_PCI_INTC _SB_MAKEMASK1(K_INT_PCI_INTC) | |
| #define M_INT_PCI_INTD _SB_MAKEMASK1(K_INT_PCI_INTD) | |
| #define M_INT_SPARE_2 _SB_MAKEMASK1(K_INT_SPARE_2) | |
| #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) | |
| #define M_INT_MAC_0_CH1 _SB_MAKEMASK1(K_INT_MAC_0_CH1) | |
| #define M_INT_MAC_1_CH1 _SB_MAKEMASK1(K_INT_MAC_1_CH1) | |
| #define M_INT_MAC_2_CH1 _SB_MAKEMASK1(K_INT_MAC_2_CH1) | |
| #endif /* 1250 PASS2 || 112x PASS1 */ | |
| /* | |
| * Interrupt mappings | |
| */ | |
| #define K_INT_MAP_I0 0 /* interrupt pins on processor */ | |
| #define K_INT_MAP_I1 1 | |
| #define K_INT_MAP_I2 2 | |
| #define K_INT_MAP_I3 3 | |
| #define K_INT_MAP_I4 4 | |
| #define K_INT_MAP_I5 5 | |
| #define K_INT_MAP_NMI 6 /* nonmaskable */ | |
| #define K_INT_MAP_DINT 7 /* debug interrupt */ | |
| /* | |
| * LDT Interrupt Set Register (table 4-5) | |
| */ | |
| #define S_INT_LDT_INTMSG 0 | |
| #define M_INT_LDT_INTMSG _SB_MAKEMASK(3, S_INT_LDT_INTMSG) | |
| #define V_INT_LDT_INTMSG(x) _SB_MAKEVALUE(x, S_INT_LDT_INTMSG) | |
| #define G_INT_LDT_INTMSG(x) _SB_GETVALUE(x, S_INT_LDT_INTMSG, M_INT_LDT_INTMSG) | |
| #define K_INT_LDT_INTMSG_FIXED 0 | |
| #define K_INT_LDT_INTMSG_ARBITRATED 1 | |
| #define K_INT_LDT_INTMSG_SMI 2 | |
| #define K_INT_LDT_INTMSG_NMI 3 | |
| #define K_INT_LDT_INTMSG_INIT 4 | |
| #define K_INT_LDT_INTMSG_STARTUP 5 | |
| #define K_INT_LDT_INTMSG_EXTINT 6 | |
| #define K_INT_LDT_INTMSG_RESERVED 7 | |
| #define M_INT_LDT_EDGETRIGGER 0 | |
| #define M_INT_LDT_LEVELTRIGGER _SB_MAKEMASK1(3) | |
| #define M_INT_LDT_PHYSICALDEST 0 | |
| #define M_INT_LDT_LOGICALDEST _SB_MAKEMASK1(4) | |
| #define S_INT_LDT_INTDEST 5 | |
| #define M_INT_LDT_INTDEST _SB_MAKEMASK(10, S_INT_LDT_INTDEST) | |
| #define V_INT_LDT_INTDEST(x) _SB_MAKEVALUE(x, S_INT_LDT_INTDEST) | |
| #define G_INT_LDT_INTDEST(x) _SB_GETVALUE(x, S_INT_LDT_INTDEST, M_INT_LDT_INTDEST) | |
| #define S_INT_LDT_VECTOR 13 | |
| #define M_INT_LDT_VECTOR _SB_MAKEMASK(8, S_INT_LDT_VECTOR) | |
| #define V_INT_LDT_VECTOR(x) _SB_MAKEVALUE(x, S_INT_LDT_VECTOR) | |
| #define G_INT_LDT_VECTOR(x) _SB_GETVALUE(x, S_INT_LDT_VECTOR, M_INT_LDT_VECTOR) | |
| /* | |
| * Vector format (Table 4-6) | |
| */ | |
| #define M_LDTVECT_RAISEINT 0x00 | |
| #define M_LDTVECT_RAISEMBOX 0x40 | |
| #endif /* 1250/112x */ |