1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* ********************************************************************* 3*4882a593Smuzhiyun * SB1250 Board Support Package 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Interrupt Mapper definitions File: sb1250_int.h 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This module contains constants for manipulating the SB1250's 8*4882a593Smuzhiyun * interrupt mapper and definitions for the interrupt sources. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * SB1250 specification level: User's manual 1/02/02 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun ********************************************************************* 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * Copyright 2000, 2001, 2002, 2003 15*4882a593Smuzhiyun * Broadcom Corporation. All rights reserved. 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun ********************************************************************* */ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #ifndef _SB1250_INT_H 21*4882a593Smuzhiyun #define _SB1250_INT_H 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h> 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /* ********************************************************************* 26*4882a593Smuzhiyun * Interrupt Mapper Constants 27*4882a593Smuzhiyun ********************************************************************* */ 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* 30*4882a593Smuzhiyun * Interrupt sources (Table 4-8, UM 0.2) 31*4882a593Smuzhiyun * 32*4882a593Smuzhiyun * First, the interrupt numbers. 33*4882a593Smuzhiyun */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #define K_INT_SOURCES 64 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define K_INT_WATCHDOG_TIMER_0 0 38*4882a593Smuzhiyun #define K_INT_WATCHDOG_TIMER_1 1 39*4882a593Smuzhiyun #define K_INT_TIMER_0 2 40*4882a593Smuzhiyun #define K_INT_TIMER_1 3 41*4882a593Smuzhiyun #define K_INT_TIMER_2 4 42*4882a593Smuzhiyun #define K_INT_TIMER_3 5 43*4882a593Smuzhiyun #define K_INT_SMB_0 6 44*4882a593Smuzhiyun #define K_INT_SMB_1 7 45*4882a593Smuzhiyun #define K_INT_UART_0 8 46*4882a593Smuzhiyun #define K_INT_UART_1 9 47*4882a593Smuzhiyun #define K_INT_SER_0 10 48*4882a593Smuzhiyun #define K_INT_SER_1 11 49*4882a593Smuzhiyun #define K_INT_PCMCIA 12 50*4882a593Smuzhiyun #define K_INT_ADDR_TRAP 13 51*4882a593Smuzhiyun #define K_INT_PERF_CNT 14 52*4882a593Smuzhiyun #define K_INT_TRACE_FREEZE 15 53*4882a593Smuzhiyun #define K_INT_BAD_ECC 16 54*4882a593Smuzhiyun #define K_INT_COR_ECC 17 55*4882a593Smuzhiyun #define K_INT_IO_BUS 18 56*4882a593Smuzhiyun #define K_INT_MAC_0 19 57*4882a593Smuzhiyun #define K_INT_MAC_1 20 58*4882a593Smuzhiyun #define K_INT_MAC_2 21 59*4882a593Smuzhiyun #define K_INT_DM_CH_0 22 60*4882a593Smuzhiyun #define K_INT_DM_CH_1 23 61*4882a593Smuzhiyun #define K_INT_DM_CH_2 24 62*4882a593Smuzhiyun #define K_INT_DM_CH_3 25 63*4882a593Smuzhiyun #define K_INT_MBOX_0 26 64*4882a593Smuzhiyun #define K_INT_MBOX_1 27 65*4882a593Smuzhiyun #define K_INT_MBOX_2 28 66*4882a593Smuzhiyun #define K_INT_MBOX_3 29 67*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 68*4882a593Smuzhiyun #define K_INT_CYCLE_CP0_INT 30 69*4882a593Smuzhiyun #define K_INT_CYCLE_CP1_INT 31 70*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 71*4882a593Smuzhiyun #define K_INT_GPIO_0 32 72*4882a593Smuzhiyun #define K_INT_GPIO_1 33 73*4882a593Smuzhiyun #define K_INT_GPIO_2 34 74*4882a593Smuzhiyun #define K_INT_GPIO_3 35 75*4882a593Smuzhiyun #define K_INT_GPIO_4 36 76*4882a593Smuzhiyun #define K_INT_GPIO_5 37 77*4882a593Smuzhiyun #define K_INT_GPIO_6 38 78*4882a593Smuzhiyun #define K_INT_GPIO_7 39 79*4882a593Smuzhiyun #define K_INT_GPIO_8 40 80*4882a593Smuzhiyun #define K_INT_GPIO_9 41 81*4882a593Smuzhiyun #define K_INT_GPIO_10 42 82*4882a593Smuzhiyun #define K_INT_GPIO_11 43 83*4882a593Smuzhiyun #define K_INT_GPIO_12 44 84*4882a593Smuzhiyun #define K_INT_GPIO_13 45 85*4882a593Smuzhiyun #define K_INT_GPIO_14 46 86*4882a593Smuzhiyun #define K_INT_GPIO_15 47 87*4882a593Smuzhiyun #define K_INT_LDT_FATAL 48 88*4882a593Smuzhiyun #define K_INT_LDT_NONFATAL 49 89*4882a593Smuzhiyun #define K_INT_LDT_SMI 50 90*4882a593Smuzhiyun #define K_INT_LDT_NMI 51 91*4882a593Smuzhiyun #define K_INT_LDT_INIT 52 92*4882a593Smuzhiyun #define K_INT_LDT_STARTUP 53 93*4882a593Smuzhiyun #define K_INT_LDT_EXT 54 94*4882a593Smuzhiyun #define K_INT_PCI_ERROR 55 95*4882a593Smuzhiyun #define K_INT_PCI_INTA 56 96*4882a593Smuzhiyun #define K_INT_PCI_INTB 57 97*4882a593Smuzhiyun #define K_INT_PCI_INTC 58 98*4882a593Smuzhiyun #define K_INT_PCI_INTD 59 99*4882a593Smuzhiyun #define K_INT_SPARE_2 60 100*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 101*4882a593Smuzhiyun #define K_INT_MAC_0_CH1 61 102*4882a593Smuzhiyun #define K_INT_MAC_1_CH1 62 103*4882a593Smuzhiyun #define K_INT_MAC_2_CH1 63 104*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun /* 107*4882a593Smuzhiyun * Mask values for each interrupt 108*4882a593Smuzhiyun */ 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #define M_INT_WATCHDOG_TIMER_0 _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_0) 111*4882a593Smuzhiyun #define M_INT_WATCHDOG_TIMER_1 _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_1) 112*4882a593Smuzhiyun #define M_INT_TIMER_0 _SB_MAKEMASK1(K_INT_TIMER_0) 113*4882a593Smuzhiyun #define M_INT_TIMER_1 _SB_MAKEMASK1(K_INT_TIMER_1) 114*4882a593Smuzhiyun #define M_INT_TIMER_2 _SB_MAKEMASK1(K_INT_TIMER_2) 115*4882a593Smuzhiyun #define M_INT_TIMER_3 _SB_MAKEMASK1(K_INT_TIMER_3) 116*4882a593Smuzhiyun #define M_INT_SMB_0 _SB_MAKEMASK1(K_INT_SMB_0) 117*4882a593Smuzhiyun #define M_INT_SMB_1 _SB_MAKEMASK1(K_INT_SMB_1) 118*4882a593Smuzhiyun #define M_INT_UART_0 _SB_MAKEMASK1(K_INT_UART_0) 119*4882a593Smuzhiyun #define M_INT_UART_1 _SB_MAKEMASK1(K_INT_UART_1) 120*4882a593Smuzhiyun #define M_INT_SER_0 _SB_MAKEMASK1(K_INT_SER_0) 121*4882a593Smuzhiyun #define M_INT_SER_1 _SB_MAKEMASK1(K_INT_SER_1) 122*4882a593Smuzhiyun #define M_INT_PCMCIA _SB_MAKEMASK1(K_INT_PCMCIA) 123*4882a593Smuzhiyun #define M_INT_ADDR_TRAP _SB_MAKEMASK1(K_INT_ADDR_TRAP) 124*4882a593Smuzhiyun #define M_INT_PERF_CNT _SB_MAKEMASK1(K_INT_PERF_CNT) 125*4882a593Smuzhiyun #define M_INT_TRACE_FREEZE _SB_MAKEMASK1(K_INT_TRACE_FREEZE) 126*4882a593Smuzhiyun #define M_INT_BAD_ECC _SB_MAKEMASK1(K_INT_BAD_ECC) 127*4882a593Smuzhiyun #define M_INT_COR_ECC _SB_MAKEMASK1(K_INT_COR_ECC) 128*4882a593Smuzhiyun #define M_INT_IO_BUS _SB_MAKEMASK1(K_INT_IO_BUS) 129*4882a593Smuzhiyun #define M_INT_MAC_0 _SB_MAKEMASK1(K_INT_MAC_0) 130*4882a593Smuzhiyun #define M_INT_MAC_1 _SB_MAKEMASK1(K_INT_MAC_1) 131*4882a593Smuzhiyun #define M_INT_MAC_2 _SB_MAKEMASK1(K_INT_MAC_2) 132*4882a593Smuzhiyun #define M_INT_DM_CH_0 _SB_MAKEMASK1(K_INT_DM_CH_0) 133*4882a593Smuzhiyun #define M_INT_DM_CH_1 _SB_MAKEMASK1(K_INT_DM_CH_1) 134*4882a593Smuzhiyun #define M_INT_DM_CH_2 _SB_MAKEMASK1(K_INT_DM_CH_2) 135*4882a593Smuzhiyun #define M_INT_DM_CH_3 _SB_MAKEMASK1(K_INT_DM_CH_3) 136*4882a593Smuzhiyun #define M_INT_MBOX_0 _SB_MAKEMASK1(K_INT_MBOX_0) 137*4882a593Smuzhiyun #define M_INT_MBOX_1 _SB_MAKEMASK1(K_INT_MBOX_1) 138*4882a593Smuzhiyun #define M_INT_MBOX_2 _SB_MAKEMASK1(K_INT_MBOX_2) 139*4882a593Smuzhiyun #define M_INT_MBOX_3 _SB_MAKEMASK1(K_INT_MBOX_3) 140*4882a593Smuzhiyun #define M_INT_MBOX_ALL _SB_MAKEMASK(4, K_INT_MBOX_0) 141*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 142*4882a593Smuzhiyun #define M_INT_CYCLE_CP0_INT _SB_MAKEMASK1(K_INT_CYCLE_CP0_INT) 143*4882a593Smuzhiyun #define M_INT_CYCLE_CP1_INT _SB_MAKEMASK1(K_INT_CYCLE_CP1_INT) 144*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 145*4882a593Smuzhiyun #define M_INT_GPIO_0 _SB_MAKEMASK1(K_INT_GPIO_0) 146*4882a593Smuzhiyun #define M_INT_GPIO_1 _SB_MAKEMASK1(K_INT_GPIO_1) 147*4882a593Smuzhiyun #define M_INT_GPIO_2 _SB_MAKEMASK1(K_INT_GPIO_2) 148*4882a593Smuzhiyun #define M_INT_GPIO_3 _SB_MAKEMASK1(K_INT_GPIO_3) 149*4882a593Smuzhiyun #define M_INT_GPIO_4 _SB_MAKEMASK1(K_INT_GPIO_4) 150*4882a593Smuzhiyun #define M_INT_GPIO_5 _SB_MAKEMASK1(K_INT_GPIO_5) 151*4882a593Smuzhiyun #define M_INT_GPIO_6 _SB_MAKEMASK1(K_INT_GPIO_6) 152*4882a593Smuzhiyun #define M_INT_GPIO_7 _SB_MAKEMASK1(K_INT_GPIO_7) 153*4882a593Smuzhiyun #define M_INT_GPIO_8 _SB_MAKEMASK1(K_INT_GPIO_8) 154*4882a593Smuzhiyun #define M_INT_GPIO_9 _SB_MAKEMASK1(K_INT_GPIO_9) 155*4882a593Smuzhiyun #define M_INT_GPIO_10 _SB_MAKEMASK1(K_INT_GPIO_10) 156*4882a593Smuzhiyun #define M_INT_GPIO_11 _SB_MAKEMASK1(K_INT_GPIO_11) 157*4882a593Smuzhiyun #define M_INT_GPIO_12 _SB_MAKEMASK1(K_INT_GPIO_12) 158*4882a593Smuzhiyun #define M_INT_GPIO_13 _SB_MAKEMASK1(K_INT_GPIO_13) 159*4882a593Smuzhiyun #define M_INT_GPIO_14 _SB_MAKEMASK1(K_INT_GPIO_14) 160*4882a593Smuzhiyun #define M_INT_GPIO_15 _SB_MAKEMASK1(K_INT_GPIO_15) 161*4882a593Smuzhiyun #define M_INT_LDT_FATAL _SB_MAKEMASK1(K_INT_LDT_FATAL) 162*4882a593Smuzhiyun #define M_INT_LDT_NONFATAL _SB_MAKEMASK1(K_INT_LDT_NONFATAL) 163*4882a593Smuzhiyun #define M_INT_LDT_SMI _SB_MAKEMASK1(K_INT_LDT_SMI) 164*4882a593Smuzhiyun #define M_INT_LDT_NMI _SB_MAKEMASK1(K_INT_LDT_NMI) 165*4882a593Smuzhiyun #define M_INT_LDT_INIT _SB_MAKEMASK1(K_INT_LDT_INIT) 166*4882a593Smuzhiyun #define M_INT_LDT_STARTUP _SB_MAKEMASK1(K_INT_LDT_STARTUP) 167*4882a593Smuzhiyun #define M_INT_LDT_EXT _SB_MAKEMASK1(K_INT_LDT_EXT) 168*4882a593Smuzhiyun #define M_INT_PCI_ERROR _SB_MAKEMASK1(K_INT_PCI_ERROR) 169*4882a593Smuzhiyun #define M_INT_PCI_INTA _SB_MAKEMASK1(K_INT_PCI_INTA) 170*4882a593Smuzhiyun #define M_INT_PCI_INTB _SB_MAKEMASK1(K_INT_PCI_INTB) 171*4882a593Smuzhiyun #define M_INT_PCI_INTC _SB_MAKEMASK1(K_INT_PCI_INTC) 172*4882a593Smuzhiyun #define M_INT_PCI_INTD _SB_MAKEMASK1(K_INT_PCI_INTD) 173*4882a593Smuzhiyun #define M_INT_SPARE_2 _SB_MAKEMASK1(K_INT_SPARE_2) 174*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1) 175*4882a593Smuzhiyun #define M_INT_MAC_0_CH1 _SB_MAKEMASK1(K_INT_MAC_0_CH1) 176*4882a593Smuzhiyun #define M_INT_MAC_1_CH1 _SB_MAKEMASK1(K_INT_MAC_1_CH1) 177*4882a593Smuzhiyun #define M_INT_MAC_2_CH1 _SB_MAKEMASK1(K_INT_MAC_2_CH1) 178*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */ 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun /* 181*4882a593Smuzhiyun * Interrupt mappings 182*4882a593Smuzhiyun */ 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun #define K_INT_MAP_I0 0 /* interrupt pins on processor */ 185*4882a593Smuzhiyun #define K_INT_MAP_I1 1 186*4882a593Smuzhiyun #define K_INT_MAP_I2 2 187*4882a593Smuzhiyun #define K_INT_MAP_I3 3 188*4882a593Smuzhiyun #define K_INT_MAP_I4 4 189*4882a593Smuzhiyun #define K_INT_MAP_I5 5 190*4882a593Smuzhiyun #define K_INT_MAP_NMI 6 /* nonmaskable */ 191*4882a593Smuzhiyun #define K_INT_MAP_DINT 7 /* debug interrupt */ 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun /* 194*4882a593Smuzhiyun * LDT Interrupt Set Register (table 4-5) 195*4882a593Smuzhiyun */ 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun #define S_INT_LDT_INTMSG 0 198*4882a593Smuzhiyun #define M_INT_LDT_INTMSG _SB_MAKEMASK(3, S_INT_LDT_INTMSG) 199*4882a593Smuzhiyun #define V_INT_LDT_INTMSG(x) _SB_MAKEVALUE(x, S_INT_LDT_INTMSG) 200*4882a593Smuzhiyun #define G_INT_LDT_INTMSG(x) _SB_GETVALUE(x, S_INT_LDT_INTMSG, M_INT_LDT_INTMSG) 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_FIXED 0 203*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_ARBITRATED 1 204*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_SMI 2 205*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_NMI 3 206*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_INIT 4 207*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_STARTUP 5 208*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_EXTINT 6 209*4882a593Smuzhiyun #define K_INT_LDT_INTMSG_RESERVED 7 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun #define M_INT_LDT_EDGETRIGGER 0 212*4882a593Smuzhiyun #define M_INT_LDT_LEVELTRIGGER _SB_MAKEMASK1(3) 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun #define M_INT_LDT_PHYSICALDEST 0 215*4882a593Smuzhiyun #define M_INT_LDT_LOGICALDEST _SB_MAKEMASK1(4) 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun #define S_INT_LDT_INTDEST 5 218*4882a593Smuzhiyun #define M_INT_LDT_INTDEST _SB_MAKEMASK(10, S_INT_LDT_INTDEST) 219*4882a593Smuzhiyun #define V_INT_LDT_INTDEST(x) _SB_MAKEVALUE(x, S_INT_LDT_INTDEST) 220*4882a593Smuzhiyun #define G_INT_LDT_INTDEST(x) _SB_GETVALUE(x, S_INT_LDT_INTDEST, M_INT_LDT_INTDEST) 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun #define S_INT_LDT_VECTOR 13 223*4882a593Smuzhiyun #define M_INT_LDT_VECTOR _SB_MAKEMASK(8, S_INT_LDT_VECTOR) 224*4882a593Smuzhiyun #define V_INT_LDT_VECTOR(x) _SB_MAKEVALUE(x, S_INT_LDT_VECTOR) 225*4882a593Smuzhiyun #define G_INT_LDT_VECTOR(x) _SB_GETVALUE(x, S_INT_LDT_VECTOR, M_INT_LDT_VECTOR) 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun /* 228*4882a593Smuzhiyun * Vector format (Table 4-6) 229*4882a593Smuzhiyun */ 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun #define M_LDTVECT_RAISEINT 0x00 232*4882a593Smuzhiyun #define M_LDTVECT_RAISEMBOX 0x40 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun #endif /* 1250/112x */ 236