Back to home page

Quest Cross Reference

 
 

    


Warning, cross-references for /kernel/tools/firmware/bnx2/fw2hdr.c need to be fixed.

0001 #include <stdio.h>
0002 #include <stdlib.h>
0003 
0004 typedef unsigned char u8;
0005 typedef unsigned long u32, __le32;
0006 
0007 struct cpu_reg {
0008   u32 mode;
0009   u32 mode_value_halt;
0010   u32 mode_value_sstep;
0011 
0012   u32 state;
0013   u32 state_value_clear;
0014 
0015   u32 gpr0;
0016   u32 evmask;
0017   u32 pc;
0018   u32 inst;
0019   u32 bp;
0020 
0021   u32 spad_base;
0022 
0023   u32 mips_view_base;
0024 };
0025 
0026 struct fw_info {
0027   const u32 ver_major;
0028   const u32 ver_minor;
0029   const u32 ver_fix;
0030 
0031   const u32 start_addr;
0032 
0033   /* Text section. */
0034   const u32 text_addr;
0035   const u32 text_len;
0036   const u32 text_index;
0037   __le32 *text;
0038   const u8 *gz_text;
0039   const u32 gz_text_len;
0040 
0041   /* Data section. */
0042   const u32 data_addr;
0043   const u32 data_len;
0044   const u32 data_index;
0045   const u32 *data;
0046 
0047   /* SBSS section. */
0048   const u32 sbss_addr;
0049   const u32 sbss_len;
0050   const u32 sbss_index;
0051 
0052   /* BSS section. */
0053   const u32 bss_addr;
0054   const u32 bss_len;
0055   const u32 bss_index;
0056 
0057   /* Read-only section. */
0058   const u32 rodata_addr;
0059   const u32 rodata_len;
0060   const u32 rodata_index;
0061   const u32 *rodata;
0062 };
0063 
0064 #define BNX2_COM_CPU_MODE               0x00105000
0065 #define BNX2_COM_CPU_MODE_LOCAL_RST          (1L<<0)
0066 #define BNX2_COM_CPU_MODE_STEP_ENA           (1L<<1)
0067 #define BNX2_COM_CPU_MODE_PAGE_0_DATA_ENA        (1L<<2)
0068 #define BNX2_COM_CPU_MODE_PAGE_0_INST_ENA        (1L<<3)
0069 #define BNX2_COM_CPU_MODE_MSG_BIT1           (1L<<6)
0070 #define BNX2_COM_CPU_MODE_INTERRUPT_ENA          (1L<<7)
0071 #define BNX2_COM_CPU_MODE_SOFT_HALT          (1L<<10)
0072 #define BNX2_COM_CPU_MODE_BAD_DATA_HALT_ENA      (1L<<11)
0073 #define BNX2_COM_CPU_MODE_BAD_INST_HALT_ENA      (1L<<12)
0074 #define BNX2_COM_CPU_MODE_FIO_ABORT_HALT_ENA         (1L<<13)
0075 #define BNX2_COM_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA    (1L<<15)
0076 #define BNX2_COM_CPU_STATE              0x00105004
0077 #define BNX2_COM_CPU_STATE_BREAKPOINT            (1L<<0)
0078 #define BNX2_COM_CPU_STATE_BAD_INST_HALTED       (1L<<2)
0079 #define BNX2_COM_CPU_STATE_PAGE_0_DATA_HALTED        (1L<<3)
0080 #define BNX2_COM_CPU_STATE_PAGE_0_INST_HALTED        (1L<<4)
0081 #define BNX2_COM_CPU_STATE_BAD_DATA_ADDR_HALTED      (1L<<5)
0082 #define BNX2_COM_CPU_STATE_BAD_PC_HALTED         (1L<<6)
0083 #define BNX2_COM_CPU_STATE_ALIGN_HALTED          (1L<<7)
0084 #define BNX2_COM_CPU_STATE_FIO_ABORT_HALTED      (1L<<8)
0085 #define BNX2_COM_CPU_STATE_SOFT_HALTED           (1L<<10)
0086 #define BNX2_COM_CPU_STATE_SPAD_UNDERFLOW        (1L<<11)
0087 #define BNX2_COM_CPU_STATE_INTERRRUPT            (1L<<12)
0088 #define BNX2_COM_CPU_STATE_DATA_ACCESS_STALL         (1L<<14)
0089 #define BNX2_COM_CPU_STATE_INST_FETCH_STALL      (1L<<15)
0090 #define BNX2_COM_CPU_STATE_BLOCKED_READ          (1L<<31)
0091 
0092 #define BNX2_COM_CPU_EVENT_MASK             0x00105008
0093 #define BNX2_COM_CPU_EVENT_MASK_BREAKPOINT_MASK      (1L<<0)
0094 #define BNX2_COM_CPU_EVENT_MASK_BAD_INST_HALTED_MASK     (1L<<2)
0095 #define BNX2_COM_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK  (1L<<3)
0096 #define BNX2_COM_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK  (1L<<4)
0097 #define BNX2_COM_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK    (1L<<5)
0098 #define BNX2_COM_CPU_EVENT_MASK_BAD_PC_HALTED_MASK   (1L<<6)
0099 #define BNX2_COM_CPU_EVENT_MASK_ALIGN_HALTED_MASK    (1L<<7)
0100 #define BNX2_COM_CPU_EVENT_MASK_FIO_ABORT_MASK       (1L<<8)
0101 #define BNX2_COM_CPU_EVENT_MASK_SOFT_HALTED_MASK     (1L<<10)
0102 #define BNX2_COM_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK  (1L<<11)
0103 #define BNX2_COM_CPU_EVENT_MASK_INTERRUPT_MASK       (1L<<12)
0104 
0105 #define BNX2_COM_CPU_PROGRAM_COUNTER            0x0010501c
0106 #define BNX2_COM_CPU_INSTRUCTION            0x00105020
0107 #define BNX2_COM_CPU_DATA_ACCESS            0x00105024
0108 #define BNX2_COM_CPU_INTERRUPT_ENABLE           0x00105028
0109 #define BNX2_COM_CPU_INTERRUPT_VECTOR           0x0010502c
0110 #define BNX2_COM_CPU_INTERRUPT_SAVED_PC         0x00105030
0111 #define BNX2_COM_CPU_HW_BREAKPOINT          0x00105034
0112 #define BNX2_COM_CPU_HW_BREAKPOINT_DISABLE       (1L<<0)
0113 #define BNX2_COM_CPU_HW_BREAKPOINT_ADDRESS       (0x3fffffffL<<2)
0114 
0115 #define BNX2_COM_CPU_DEBUG_VECT_PEEK            0x00105038
0116 #define BNX2_COM_CPU_DEBUG_VECT_PEEK_1_VALUE         (0x7ffL<<0)
0117 #define BNX2_COM_CPU_DEBUG_VECT_PEEK_1_PEEK_EN       (1L<<11)
0118 #define BNX2_COM_CPU_DEBUG_VECT_PEEK_1_SEL       (0xfL<<12)
0119 #define BNX2_COM_CPU_DEBUG_VECT_PEEK_2_VALUE         (0x7ffL<<16)
0120 #define BNX2_COM_CPU_DEBUG_VECT_PEEK_2_PEEK_EN       (1L<<27)
0121 #define BNX2_COM_CPU_DEBUG_VECT_PEEK_2_SEL       (0xfL<<28)
0122 
0123 #define BNX2_COM_CPU_LAST_BRANCH_ADDR           0x00105048
0124 #define BNX2_COM_CPU_LAST_BRANCH_ADDR_TYPE       (1L<<1)
0125 #define BNX2_COM_CPU_LAST_BRANCH_ADDR_TYPE_JUMP      (0L<<1)
0126 #define BNX2_COM_CPU_LAST_BRANCH_ADDR_TYPE_BRANCH    (1L<<1)
0127 #define BNX2_COM_CPU_LAST_BRANCH_ADDR_LBA        (0x3fffffffL<<2)
0128 
0129 #define BNX2_COM_CPU_REG_FILE               0x00105200
0130 #define BNX2_COM_COMTQ_PFE_PFE_CTL          0x001052bc
0131 #define BNX2_COM_COMTQ_PFE_PFE_CTL_INC_USAGE_CNT     (1L<<0)
0132 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE      (0xfL<<4)
0133 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_0        (0L<<4)
0134 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_1        (1L<<4)
0135 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_2        (2L<<4)
0136 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_3        (3L<<4)
0137 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_4        (4L<<4)
0138 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_5        (5L<<4)
0139 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_6        (6L<<4)
0140 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_7        (7L<<4)
0141 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_8        (8L<<4)
0142 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_9        (9L<<4)
0143 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_10       (10L<<4)
0144 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_11       (11L<<4)
0145 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_12       (12L<<4)
0146 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_13       (13L<<4)
0147 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_14       (14L<<4)
0148 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_SIZE_15       (15L<<4)
0149 #define BNX2_COM_COMTQ_PFE_PFE_CTL_PFE_COUNT         (0xfL<<12)
0150 #define BNX2_COM_COMTQ_PFE_PFE_CTL_OFFSET        (0x1ffL<<16)
0151 
0152 #define BNX2_COM_COMXQ                  0x00105340
0153 #define BNX2_COM_COMXQ_FTQ_CMD              0x00105378
0154 #define BNX2_COM_COMXQ_FTQ_CMD_OFFSET            (0x3ffL<<0)
0155 #define BNX2_COM_COMXQ_FTQ_CMD_WR_TOP            (1L<<10)
0156 #define BNX2_COM_COMXQ_FTQ_CMD_WR_TOP_0          (0L<<10)
0157 #define BNX2_COM_COMXQ_FTQ_CMD_WR_TOP_1          (1L<<10)
0158 #define BNX2_COM_COMXQ_FTQ_CMD_SFT_RESET         (1L<<25)
0159 #define BNX2_COM_COMXQ_FTQ_CMD_RD_DATA           (1L<<26)
0160 #define BNX2_COM_COMXQ_FTQ_CMD_ADD_INTERVEN      (1L<<27)
0161 #define BNX2_COM_COMXQ_FTQ_CMD_ADD_DATA          (1L<<28)
0162 #define BNX2_COM_COMXQ_FTQ_CMD_INTERVENE_CLR         (1L<<29)
0163 #define BNX2_COM_COMXQ_FTQ_CMD_POP           (1L<<30)
0164 #define BNX2_COM_COMXQ_FTQ_CMD_BUSY          (1L<<31)
0165 
0166 #define BNX2_COM_COMXQ_FTQ_CTL              0x0010537c
0167 #define BNX2_COM_COMXQ_FTQ_CTL_INTERVENE         (1L<<0)
0168 #define BNX2_COM_COMXQ_FTQ_CTL_OVERFLOW          (1L<<1)
0169 #define BNX2_COM_COMXQ_FTQ_CTL_FORCE_INTERVENE       (1L<<2)
0170 #define BNX2_COM_COMXQ_FTQ_CTL_MAX_DEPTH         (0x3ffL<<12)
0171 #define BNX2_COM_COMXQ_FTQ_CTL_CUR_DEPTH         (0x3ffL<<22)
0172 
0173 #define BNX2_COM_COMTQ                  0x00105380
0174 #define BNX2_COM_COMTQ_FTQ_CMD              0x001053b8
0175 #define BNX2_COM_COMTQ_FTQ_CMD_OFFSET            (0x3ffL<<0)
0176 #define BNX2_COM_COMTQ_FTQ_CMD_WR_TOP            (1L<<10)
0177 #define BNX2_COM_COMTQ_FTQ_CMD_WR_TOP_0          (0L<<10)
0178 #define BNX2_COM_COMTQ_FTQ_CMD_WR_TOP_1          (1L<<10)
0179 #define BNX2_COM_COMTQ_FTQ_CMD_SFT_RESET         (1L<<25)
0180 #define BNX2_COM_COMTQ_FTQ_CMD_RD_DATA           (1L<<26)
0181 #define BNX2_COM_COMTQ_FTQ_CMD_ADD_INTERVEN      (1L<<27)
0182 #define BNX2_COM_COMTQ_FTQ_CMD_ADD_DATA          (1L<<28)
0183 #define BNX2_COM_COMTQ_FTQ_CMD_INTERVENE_CLR         (1L<<29)
0184 #define BNX2_COM_COMTQ_FTQ_CMD_POP           (1L<<30)
0185 #define BNX2_COM_COMTQ_FTQ_CMD_BUSY          (1L<<31)
0186 
0187 #define BNX2_COM_COMTQ_FTQ_CTL              0x001053bc
0188 #define BNX2_COM_COMTQ_FTQ_CTL_INTERVENE         (1L<<0)
0189 #define BNX2_COM_COMTQ_FTQ_CTL_OVERFLOW          (1L<<1)
0190 #define BNX2_COM_COMTQ_FTQ_CTL_FORCE_INTERVENE       (1L<<2)
0191 #define BNX2_COM_COMTQ_FTQ_CTL_MAX_DEPTH         (0x3ffL<<12)
0192 #define BNX2_COM_COMTQ_FTQ_CTL_CUR_DEPTH         (0x3ffL<<22)
0193 
0194 #define BNX2_COM_COMQ                   0x001053c0
0195 #define BNX2_COM_COMQ_FTQ_CMD               0x001053f8
0196 #define BNX2_COM_COMQ_FTQ_CMD_OFFSET             (0x3ffL<<0)
0197 #define BNX2_COM_COMQ_FTQ_CMD_WR_TOP             (1L<<10)
0198 #define BNX2_COM_COMQ_FTQ_CMD_WR_TOP_0           (0L<<10)
0199 #define BNX2_COM_COMQ_FTQ_CMD_WR_TOP_1           (1L<<10)
0200 #define BNX2_COM_COMQ_FTQ_CMD_SFT_RESET          (1L<<25)
0201 #define BNX2_COM_COMQ_FTQ_CMD_RD_DATA            (1L<<26)
0202 #define BNX2_COM_COMQ_FTQ_CMD_ADD_INTERVEN       (1L<<27)
0203 #define BNX2_COM_COMQ_FTQ_CMD_ADD_DATA           (1L<<28)
0204 #define BNX2_COM_COMQ_FTQ_CMD_INTERVENE_CLR      (1L<<29)
0205 #define BNX2_COM_COMQ_FTQ_CMD_POP            (1L<<30)
0206 #define BNX2_COM_COMQ_FTQ_CMD_BUSY           (1L<<31)
0207 
0208 #define BNX2_COM_COMQ_FTQ_CTL               0x001053fc
0209 #define BNX2_COM_COMQ_FTQ_CTL_INTERVENE          (1L<<0)
0210 #define BNX2_COM_COMQ_FTQ_CTL_OVERFLOW           (1L<<1)
0211 #define BNX2_COM_COMQ_FTQ_CTL_FORCE_INTERVENE        (1L<<2)
0212 #define BNX2_COM_COMQ_FTQ_CTL_MAX_DEPTH          (0x3ffL<<12)
0213 #define BNX2_COM_COMQ_FTQ_CTL_CUR_DEPTH          (0x3ffL<<22)
0214 
0215 #define BNX2_COM_SCRATCH                0x00120000
0216 
0217 #define BNX2_FW_RX_DROP_COUNT                0x00120084
0218 #define BNX2_CP_CPU_MODE                0x00185000
0219 #define BNX2_CP_CPU_MODE_LOCAL_RST           (1L<<0)
0220 #define BNX2_CP_CPU_MODE_STEP_ENA            (1L<<1)
0221 #define BNX2_CP_CPU_MODE_PAGE_0_DATA_ENA         (1L<<2)
0222 #define BNX2_CP_CPU_MODE_PAGE_0_INST_ENA         (1L<<3)
0223 #define BNX2_CP_CPU_MODE_MSG_BIT1            (1L<<6)
0224 #define BNX2_CP_CPU_MODE_INTERRUPT_ENA           (1L<<7)
0225 #define BNX2_CP_CPU_MODE_SOFT_HALT           (1L<<10)
0226 #define BNX2_CP_CPU_MODE_BAD_DATA_HALT_ENA       (1L<<11)
0227 #define BNX2_CP_CPU_MODE_BAD_INST_HALT_ENA       (1L<<12)
0228 #define BNX2_CP_CPU_MODE_FIO_ABORT_HALT_ENA      (1L<<13)
0229 #define BNX2_CP_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA     (1L<<15)
0230 
0231 #define BNX2_CP_CPU_STATE               0x00185004
0232 #define BNX2_CP_CPU_STATE_BREAKPOINT             (1L<<0)
0233 #define BNX2_CP_CPU_STATE_BAD_INST_HALTED        (1L<<2)
0234 #define BNX2_CP_CPU_STATE_PAGE_0_DATA_HALTED         (1L<<3)
0235 #define BNX2_CP_CPU_STATE_PAGE_0_INST_HALTED         (1L<<4)
0236 #define BNX2_CP_CPU_STATE_BAD_DATA_ADDR_HALTED       (1L<<5)
0237 #define BNX2_CP_CPU_STATE_BAD_PC_HALTED          (1L<<6)
0238 #define BNX2_CP_CPU_STATE_ALIGN_HALTED           (1L<<7)
0239 #define BNX2_CP_CPU_STATE_FIO_ABORT_HALTED       (1L<<8)
0240 #define BNX2_CP_CPU_STATE_SOFT_HALTED            (1L<<10)
0241 #define BNX2_CP_CPU_STATE_SPAD_UNDERFLOW         (1L<<11)
0242 #define BNX2_CP_CPU_STATE_INTERRRUPT             (1L<<12)
0243 #define BNX2_CP_CPU_STATE_DATA_ACCESS_STALL      (1L<<14)
0244 #define BNX2_CP_CPU_STATE_INST_FETCH_STALL       (1L<<15)
0245 #define BNX2_CP_CPU_STATE_BLOCKED_READ           (1L<<31)
0246 
0247 #define BNX2_CP_CPU_EVENT_MASK              0x00185008
0248 #define BNX2_CP_CPU_EVENT_MASK_BREAKPOINT_MASK       (1L<<0)
0249 #define BNX2_CP_CPU_EVENT_MASK_BAD_INST_HALTED_MASK  (1L<<2)
0250 #define BNX2_CP_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK   (1L<<3)
0251 #define BNX2_CP_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK   (1L<<4)
0252 #define BNX2_CP_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK     (1L<<5)
0253 #define BNX2_CP_CPU_EVENT_MASK_BAD_PC_HALTED_MASK    (1L<<6)
0254 #define BNX2_CP_CPU_EVENT_MASK_ALIGN_HALTED_MASK     (1L<<7)
0255 #define BNX2_CP_CPU_EVENT_MASK_FIO_ABORT_MASK        (1L<<8)
0256 #define BNX2_CP_CPU_EVENT_MASK_SOFT_HALTED_MASK      (1L<<10)
0257 #define BNX2_CP_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK   (1L<<11)
0258 #define BNX2_CP_CPU_EVENT_MASK_INTERRUPT_MASK        (1L<<12)
0259 
0260 #define BNX2_CP_CPU_PROGRAM_COUNTER         0x0018501c
0261 #define BNX2_CP_CPU_INSTRUCTION             0x00185020
0262 #define BNX2_CP_CPU_DATA_ACCESS             0x00185024
0263 #define BNX2_CP_CPU_INTERRUPT_ENABLE            0x00185028
0264 #define BNX2_CP_CPU_INTERRUPT_VECTOR            0x0018502c
0265 #define BNX2_CP_CPU_INTERRUPT_SAVED_PC          0x00185030
0266 #define BNX2_CP_CPU_HW_BREAKPOINT           0x00185034
0267 #define BNX2_CP_CPU_HW_BREAKPOINT_DISABLE        (1L<<0)
0268 #define BNX2_CP_CPU_HW_BREAKPOINT_ADDRESS        (0x3fffffffL<<2)
0269 
0270 #define BNX2_CP_CPU_DEBUG_VECT_PEEK         0x00185038
0271 #define BNX2_CP_CPU_DEBUG_VECT_PEEK_1_VALUE      (0x7ffL<<0)
0272 #define BNX2_CP_CPU_DEBUG_VECT_PEEK_1_PEEK_EN        (1L<<11)
0273 #define BNX2_CP_CPU_DEBUG_VECT_PEEK_1_SEL        (0xfL<<12)
0274 #define BNX2_CP_CPU_DEBUG_VECT_PEEK_2_VALUE      (0x7ffL<<16)
0275 #define BNX2_CP_CPU_DEBUG_VECT_PEEK_2_PEEK_EN        (1L<<27)
0276 #define BNX2_CP_CPU_DEBUG_VECT_PEEK_2_SEL        (0xfL<<28)
0277 
0278 #define BNX2_CP_CPU_LAST_BRANCH_ADDR            0x00185048
0279 #define BNX2_CP_CPU_LAST_BRANCH_ADDR_TYPE        (1L<<1)
0280 #define BNX2_CP_CPU_LAST_BRANCH_ADDR_TYPE_JUMP       (0L<<1)
0281 #define BNX2_CP_CPU_LAST_BRANCH_ADDR_TYPE_BRANCH     (1L<<1)
0282 #define BNX2_CP_CPU_LAST_BRANCH_ADDR_LBA         (0x3fffffffL<<2)
0283 
0284 #define BNX2_CP_CPU_REG_FILE                0x00185200
0285 #define BNX2_CP_CPQ_PFE_PFE_CTL             0x001853bc
0286 #define BNX2_CP_CPQ_PFE_PFE_CTL_INC_USAGE_CNT        (1L<<0)
0287 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE         (0xfL<<4)
0288 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_0       (0L<<4)
0289 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_1       (1L<<4)
0290 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_2       (2L<<4)
0291 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_3       (3L<<4)
0292 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_4       (4L<<4)
0293 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_5       (5L<<4)
0294 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_6       (6L<<4)
0295 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_7       (7L<<4)
0296 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_8       (8L<<4)
0297 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_9       (9L<<4)
0298 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_10      (10L<<4)
0299 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_11      (11L<<4)
0300 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_12      (12L<<4)
0301 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_13      (13L<<4)
0302 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_14      (14L<<4)
0303 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_SIZE_15      (15L<<4)
0304 #define BNX2_CP_CPQ_PFE_PFE_CTL_PFE_COUNT        (0xfL<<12)
0305 #define BNX2_CP_CPQ_PFE_PFE_CTL_OFFSET           (0x1ffL<<16)
0306 
0307 #define BNX2_CP_CPQ                 0x001853c0
0308 #define BNX2_CP_CPQ_FTQ_CMD             0x001853f8
0309 #define BNX2_CP_CPQ_FTQ_CMD_OFFSET           (0x3ffL<<0)
0310 #define BNX2_CP_CPQ_FTQ_CMD_WR_TOP           (1L<<10)
0311 #define BNX2_CP_CPQ_FTQ_CMD_WR_TOP_0             (0L<<10)
0312 #define BNX2_CP_CPQ_FTQ_CMD_WR_TOP_1             (1L<<10)
0313 #define BNX2_CP_CPQ_FTQ_CMD_SFT_RESET            (1L<<25)
0314 #define BNX2_CP_CPQ_FTQ_CMD_RD_DATA          (1L<<26)
0315 #define BNX2_CP_CPQ_FTQ_CMD_ADD_INTERVEN         (1L<<27)
0316 #define BNX2_CP_CPQ_FTQ_CMD_ADD_DATA             (1L<<28)
0317 #define BNX2_CP_CPQ_FTQ_CMD_INTERVENE_CLR        (1L<<29)
0318 #define BNX2_CP_CPQ_FTQ_CMD_POP              (1L<<30)
0319 #define BNX2_CP_CPQ_FTQ_CMD_BUSY             (1L<<31)
0320 
0321 #define BNX2_CP_CPQ_FTQ_CTL             0x001853fc
0322 #define BNX2_CP_CPQ_FTQ_CTL_INTERVENE            (1L<<0)
0323 #define BNX2_CP_CPQ_FTQ_CTL_OVERFLOW             (1L<<1)
0324 #define BNX2_CP_CPQ_FTQ_CTL_FORCE_INTERVENE      (1L<<2)
0325 #define BNX2_CP_CPQ_FTQ_CTL_MAX_DEPTH            (0x3ffL<<12)
0326 #define BNX2_CP_CPQ_FTQ_CTL_CUR_DEPTH            (0x3ffL<<22)
0327 
0328 #define BNX2_CP_SCRATCH                 0x001a0000
0329 #define BNX2_RXP_CPU_MODE               0x000c5000
0330 #define BNX2_RXP_CPU_MODE_LOCAL_RST          (1L<<0)
0331 #define BNX2_RXP_CPU_MODE_STEP_ENA           (1L<<1)
0332 #define BNX2_RXP_CPU_MODE_PAGE_0_DATA_ENA        (1L<<2)
0333 #define BNX2_RXP_CPU_MODE_PAGE_0_INST_ENA        (1L<<3)
0334 #define BNX2_RXP_CPU_MODE_MSG_BIT1           (1L<<6)
0335 #define BNX2_RXP_CPU_MODE_INTERRUPT_ENA          (1L<<7)
0336 #define BNX2_RXP_CPU_MODE_SOFT_HALT          (1L<<10)
0337 #define BNX2_RXP_CPU_MODE_BAD_DATA_HALT_ENA      (1L<<11)
0338 #define BNX2_RXP_CPU_MODE_BAD_INST_HALT_ENA      (1L<<12)
0339 #define BNX2_RXP_CPU_MODE_FIO_ABORT_HALT_ENA         (1L<<13)
0340 #define BNX2_RXP_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA    (1L<<15)
0341 
0342 #define BNX2_RXP_CPU_STATE              0x000c5004
0343 #define BNX2_RXP_CPU_STATE_BREAKPOINT            (1L<<0)
0344 #define BNX2_RXP_CPU_STATE_BAD_INST_HALTED       (1L<<2)
0345 #define BNX2_RXP_CPU_STATE_PAGE_0_DATA_HALTED        (1L<<3)
0346 #define BNX2_RXP_CPU_STATE_PAGE_0_INST_HALTED        (1L<<4)
0347 #define BNX2_RXP_CPU_STATE_BAD_DATA_ADDR_HALTED      (1L<<5)
0348 #define BNX2_RXP_CPU_STATE_BAD_PC_HALTED         (1L<<6)
0349 #define BNX2_RXP_CPU_STATE_ALIGN_HALTED          (1L<<7)
0350 #define BNX2_RXP_CPU_STATE_FIO_ABORT_HALTED      (1L<<8)
0351 #define BNX2_RXP_CPU_STATE_SOFT_HALTED           (1L<<10)
0352 #define BNX2_RXP_CPU_STATE_SPAD_UNDERFLOW        (1L<<11)
0353 #define BNX2_RXP_CPU_STATE_INTERRRUPT            (1L<<12)
0354 #define BNX2_RXP_CPU_STATE_DATA_ACCESS_STALL         (1L<<14)
0355 #define BNX2_RXP_CPU_STATE_INST_FETCH_STALL      (1L<<15)
0356 #define BNX2_RXP_CPU_STATE_BLOCKED_READ          (1L<<31)
0357 
0358 #define BNX2_RXP_CPU_EVENT_MASK             0x000c5008
0359 #define BNX2_RXP_CPU_EVENT_MASK_BREAKPOINT_MASK      (1L<<0)
0360 #define BNX2_RXP_CPU_EVENT_MASK_BAD_INST_HALTED_MASK     (1L<<2)
0361 #define BNX2_RXP_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK  (1L<<3)
0362 #define BNX2_RXP_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK  (1L<<4)
0363 #define BNX2_RXP_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK    (1L<<5)
0364 #define BNX2_RXP_CPU_EVENT_MASK_BAD_PC_HALTED_MASK   (1L<<6)
0365 #define BNX2_RXP_CPU_EVENT_MASK_ALIGN_HALTED_MASK    (1L<<7)
0366 #define BNX2_RXP_CPU_EVENT_MASK_FIO_ABORT_MASK       (1L<<8)
0367 #define BNX2_RXP_CPU_EVENT_MASK_SOFT_HALTED_MASK     (1L<<10)
0368 #define BNX2_RXP_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK  (1L<<11)
0369 #define BNX2_RXP_CPU_EVENT_MASK_INTERRUPT_MASK       (1L<<12)
0370 
0371 #define BNX2_RXP_CPU_PROGRAM_COUNTER            0x000c501c
0372 #define BNX2_RXP_CPU_INSTRUCTION            0x000c5020
0373 #define BNX2_RXP_CPU_DATA_ACCESS            0x000c5024
0374 #define BNX2_RXP_CPU_INTERRUPT_ENABLE           0x000c5028
0375 #define BNX2_RXP_CPU_INTERRUPT_VECTOR           0x000c502c
0376 #define BNX2_RXP_CPU_INTERRUPT_SAVED_PC         0x000c5030
0377 #define BNX2_RXP_CPU_HW_BREAKPOINT          0x000c5034
0378 #define BNX2_RXP_CPU_HW_BREAKPOINT_DISABLE       (1L<<0)
0379 #define BNX2_RXP_CPU_HW_BREAKPOINT_ADDRESS       (0x3fffffffL<<2)
0380 
0381 #define BNX2_RXP_CPU_DEBUG_VECT_PEEK            0x000c5038
0382 #define BNX2_RXP_CPU_DEBUG_VECT_PEEK_1_VALUE         (0x7ffL<<0)
0383 #define BNX2_RXP_CPU_DEBUG_VECT_PEEK_1_PEEK_EN       (1L<<11)
0384 #define BNX2_RXP_CPU_DEBUG_VECT_PEEK_1_SEL       (0xfL<<12)
0385 #define BNX2_RXP_CPU_DEBUG_VECT_PEEK_2_VALUE         (0x7ffL<<16)
0386 #define BNX2_RXP_CPU_DEBUG_VECT_PEEK_2_PEEK_EN       (1L<<27)
0387 #define BNX2_RXP_CPU_DEBUG_VECT_PEEK_2_SEL       (0xfL<<28)
0388 
0389 #define BNX2_RXP_CPU_LAST_BRANCH_ADDR           0x000c5048
0390 #define BNX2_RXP_CPU_LAST_BRANCH_ADDR_TYPE       (1L<<1)
0391 #define BNX2_RXP_CPU_LAST_BRANCH_ADDR_TYPE_JUMP      (0L<<1)
0392 #define BNX2_RXP_CPU_LAST_BRANCH_ADDR_TYPE_BRANCH    (1L<<1)
0393 #define BNX2_RXP_CPU_LAST_BRANCH_ADDR_LBA        (0x3fffffffL<<2)
0394 
0395 #define BNX2_RXP_CPU_REG_FILE               0x000c5200
0396 #define BNX2_RXP_PFE_PFE_CTL                0x000c537c
0397 #define BNX2_RXP_PFE_PFE_CTL_INC_USAGE_CNT       (1L<<0)
0398 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE            (0xfL<<4)
0399 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_0          (0L<<4)
0400 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_1          (1L<<4)
0401 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_2          (2L<<4)
0402 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_3          (3L<<4)
0403 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_4          (4L<<4)
0404 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_5          (5L<<4)
0405 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_6          (6L<<4)
0406 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_7          (7L<<4)
0407 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_8          (8L<<4)
0408 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_9          (9L<<4)
0409 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_10         (10L<<4)
0410 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_11         (11L<<4)
0411 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_12         (12L<<4)
0412 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_13         (13L<<4)
0413 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_14         (14L<<4)
0414 #define BNX2_RXP_PFE_PFE_CTL_PFE_SIZE_15         (15L<<4)
0415 #define BNX2_RXP_PFE_PFE_CTL_PFE_COUNT           (0xfL<<12)
0416 #define BNX2_RXP_PFE_PFE_CTL_OFFSET          (0x1ffL<<16)
0417 
0418 #define BNX2_RXP_RXPCQ                  0x000c5380
0419 #define BNX2_RXP_CFTQ_CMD               0x000c53b8
0420 #define BNX2_RXP_CFTQ_CMD_OFFSET             (0x3ffL<<0)
0421 #define BNX2_RXP_CFTQ_CMD_WR_TOP             (1L<<10)
0422 #define BNX2_RXP_CFTQ_CMD_WR_TOP_0           (0L<<10)
0423 #define BNX2_RXP_CFTQ_CMD_WR_TOP_1           (1L<<10)
0424 #define BNX2_RXP_CFTQ_CMD_SFT_RESET          (1L<<25)
0425 #define BNX2_RXP_CFTQ_CMD_RD_DATA            (1L<<26)
0426 #define BNX2_RXP_CFTQ_CMD_ADD_INTERVEN           (1L<<27)
0427 #define BNX2_RXP_CFTQ_CMD_ADD_DATA           (1L<<28)
0428 #define BNX2_RXP_CFTQ_CMD_INTERVENE_CLR          (1L<<29)
0429 #define BNX2_RXP_CFTQ_CMD_POP                (1L<<30)
0430 #define BNX2_RXP_CFTQ_CMD_BUSY               (1L<<31)
0431 
0432 #define BNX2_RXP_CFTQ_CTL               0x000c53bc
0433 #define BNX2_RXP_CFTQ_CTL_INTERVENE          (1L<<0)
0434 #define BNX2_RXP_CFTQ_CTL_OVERFLOW           (1L<<1)
0435 #define BNX2_RXP_CFTQ_CTL_FORCE_INTERVENE        (1L<<2)
0436 #define BNX2_RXP_CFTQ_CTL_MAX_DEPTH          (0x3ffL<<12)
0437 #define BNX2_RXP_CFTQ_CTL_CUR_DEPTH          (0x3ffL<<22)
0438 
0439 #define BNX2_RXP_RXPQ                   0x000c53c0
0440 #define BNX2_RXP_FTQ_CMD                0x000c53f8
0441 #define BNX2_RXP_FTQ_CMD_OFFSET              (0x3ffL<<0)
0442 #define BNX2_RXP_FTQ_CMD_WR_TOP              (1L<<10)
0443 #define BNX2_RXP_FTQ_CMD_WR_TOP_0            (0L<<10)
0444 #define BNX2_RXP_FTQ_CMD_WR_TOP_1            (1L<<10)
0445 #define BNX2_RXP_FTQ_CMD_SFT_RESET           (1L<<25)
0446 #define BNX2_RXP_FTQ_CMD_RD_DATA             (1L<<26)
0447 #define BNX2_RXP_FTQ_CMD_ADD_INTERVEN            (1L<<27)
0448 #define BNX2_RXP_FTQ_CMD_ADD_DATA            (1L<<28)
0449 #define BNX2_RXP_FTQ_CMD_INTERVENE_CLR           (1L<<29)
0450 #define BNX2_RXP_FTQ_CMD_POP                 (1L<<30)
0451 #define BNX2_RXP_FTQ_CMD_BUSY                (1L<<31)
0452 
0453 #define BNX2_RXP_FTQ_CTL                0x000c53fc
0454 #define BNX2_RXP_FTQ_CTL_INTERVENE           (1L<<0)
0455 #define BNX2_RXP_FTQ_CTL_OVERFLOW            (1L<<1)
0456 #define BNX2_RXP_FTQ_CTL_FORCE_INTERVENE         (1L<<2)
0457 #define BNX2_RXP_FTQ_CTL_MAX_DEPTH           (0x3ffL<<12)
0458 #define BNX2_RXP_FTQ_CTL_CUR_DEPTH           (0x3ffL<<22)
0459 
0460 #define BNX2_RXP_SCRATCH                0x000e0000
0461 #define BNX2_RXP_SCRATCH_RXP_FLOOD           0x000e0024
0462 #define BNX2_RXP_SCRATCH_RSS_TBL_SZ          0x000e0038
0463 #define BNX2_RXP_SCRATCH_RSS_TBL             0x000e003c
0464 #define BNX2_RXP_SCRATCH_RSS_TBL_MAX_ENTRIES         128
0465 #define BNX2_TPAT_CPU_MODE              0x00085000
0466 #define BNX2_TPAT_CPU_MODE_LOCAL_RST             (1L<<0)
0467 #define BNX2_TPAT_CPU_MODE_STEP_ENA          (1L<<1)
0468 #define BNX2_TPAT_CPU_MODE_PAGE_0_DATA_ENA       (1L<<2)
0469 #define BNX2_TPAT_CPU_MODE_PAGE_0_INST_ENA       (1L<<3)
0470 #define BNX2_TPAT_CPU_MODE_MSG_BIT1          (1L<<6)
0471 #define BNX2_TPAT_CPU_MODE_INTERRUPT_ENA         (1L<<7)
0472 #define BNX2_TPAT_CPU_MODE_SOFT_HALT             (1L<<10)
0473 #define BNX2_TPAT_CPU_MODE_BAD_DATA_HALT_ENA         (1L<<11)
0474 #define BNX2_TPAT_CPU_MODE_BAD_INST_HALT_ENA         (1L<<12)
0475 #define BNX2_TPAT_CPU_MODE_FIO_ABORT_HALT_ENA        (1L<<13)
0476 #define BNX2_TPAT_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA   (1L<<15)
0477 
0478 #define BNX2_TPAT_CPU_STATE             0x00085004
0479 #define BNX2_TPAT_CPU_STATE_BREAKPOINT           (1L<<0)
0480 #define BNX2_TPAT_CPU_STATE_BAD_INST_HALTED      (1L<<2)
0481 #define BNX2_TPAT_CPU_STATE_PAGE_0_DATA_HALTED       (1L<<3)
0482 #define BNX2_TPAT_CPU_STATE_PAGE_0_INST_HALTED       (1L<<4)
0483 #define BNX2_TPAT_CPU_STATE_BAD_DATA_ADDR_HALTED     (1L<<5)
0484 #define BNX2_TPAT_CPU_STATE_BAD_PC_HALTED        (1L<<6)
0485 #define BNX2_TPAT_CPU_STATE_ALIGN_HALTED         (1L<<7)
0486 #define BNX2_TPAT_CPU_STATE_FIO_ABORT_HALTED         (1L<<8)
0487 #define BNX2_TPAT_CPU_STATE_SOFT_HALTED          (1L<<10)
0488 #define BNX2_TPAT_CPU_STATE_SPAD_UNDERFLOW       (1L<<11)
0489 #define BNX2_TPAT_CPU_STATE_INTERRRUPT           (1L<<12)
0490 #define BNX2_TPAT_CPU_STATE_DATA_ACCESS_STALL        (1L<<14)
0491 #define BNX2_TPAT_CPU_STATE_INST_FETCH_STALL         (1L<<15)
0492 #define BNX2_TPAT_CPU_STATE_BLOCKED_READ         (1L<<31)
0493 
0494 #define BNX2_TPAT_CPU_EVENT_MASK            0x00085008
0495 #define BNX2_TPAT_CPU_EVENT_MASK_BREAKPOINT_MASK     (1L<<0)
0496 #define BNX2_TPAT_CPU_EVENT_MASK_BAD_INST_HALTED_MASK    (1L<<2)
0497 #define BNX2_TPAT_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK     (1L<<3)
0498 #define BNX2_TPAT_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK     (1L<<4)
0499 #define BNX2_TPAT_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK   (1L<<5)
0500 #define BNX2_TPAT_CPU_EVENT_MASK_BAD_PC_HALTED_MASK  (1L<<6)
0501 #define BNX2_TPAT_CPU_EVENT_MASK_ALIGN_HALTED_MASK   (1L<<7)
0502 #define BNX2_TPAT_CPU_EVENT_MASK_FIO_ABORT_MASK      (1L<<8)
0503 #define BNX2_TPAT_CPU_EVENT_MASK_SOFT_HALTED_MASK    (1L<<10)
0504 #define BNX2_TPAT_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK     (1L<<11)
0505 #define BNX2_TPAT_CPU_EVENT_MASK_INTERRUPT_MASK      (1L<<12)
0506 
0507 #define BNX2_TPAT_CPU_PROGRAM_COUNTER           0x0008501c
0508 #define BNX2_TPAT_CPU_INSTRUCTION           0x00085020
0509 #define BNX2_TPAT_CPU_DATA_ACCESS           0x00085024
0510 #define BNX2_TPAT_CPU_INTERRUPT_ENABLE          0x00085028
0511 #define BNX2_TPAT_CPU_INTERRUPT_VECTOR          0x0008502c
0512 #define BNX2_TPAT_CPU_INTERRUPT_SAVED_PC        0x00085030
0513 #define BNX2_TPAT_CPU_HW_BREAKPOINT         0x00085034
0514 #define BNX2_TPAT_CPU_HW_BREAKPOINT_DISABLE      (1L<<0)
0515 #define BNX2_TPAT_CPU_HW_BREAKPOINT_ADDRESS      (0x3fffffffL<<2)
0516 
0517 #define BNX2_TPAT_CPU_DEBUG_VECT_PEEK           0x00085038
0518 #define BNX2_TPAT_CPU_DEBUG_VECT_PEEK_1_VALUE        (0x7ffL<<0)
0519 #define BNX2_TPAT_CPU_DEBUG_VECT_PEEK_1_PEEK_EN      (1L<<11)
0520 #define BNX2_TPAT_CPU_DEBUG_VECT_PEEK_1_SEL      (0xfL<<12)
0521 #define BNX2_TPAT_CPU_DEBUG_VECT_PEEK_2_VALUE        (0x7ffL<<16)
0522 #define BNX2_TPAT_CPU_DEBUG_VECT_PEEK_2_PEEK_EN      (1L<<27)
0523 #define BNX2_TPAT_CPU_DEBUG_VECT_PEEK_2_SEL      (0xfL<<28)
0524 
0525 #define BNX2_TPAT_CPU_LAST_BRANCH_ADDR          0x00085048
0526 #define BNX2_TPAT_CPU_LAST_BRANCH_ADDR_TYPE      (1L<<1)
0527 #define BNX2_TPAT_CPU_LAST_BRANCH_ADDR_TYPE_JUMP     (0L<<1)
0528 #define BNX2_TPAT_CPU_LAST_BRANCH_ADDR_TYPE_BRANCH   (1L<<1)
0529 #define BNX2_TPAT_CPU_LAST_BRANCH_ADDR_LBA       (0x3fffffffL<<2)
0530 
0531 #define BNX2_TPAT_CPU_REG_FILE              0x00085200
0532 #define BNX2_TPAT_TPATQ                 0x000853c0
0533 #define BNX2_TPAT_FTQ_CMD               0x000853f8
0534 #define BNX2_TPAT_FTQ_CMD_OFFSET             (0x3ffL<<0)
0535 #define BNX2_TPAT_FTQ_CMD_WR_TOP             (1L<<10)
0536 #define BNX2_TPAT_FTQ_CMD_WR_TOP_0           (0L<<10)
0537 #define BNX2_TPAT_FTQ_CMD_WR_TOP_1           (1L<<10)
0538 #define BNX2_TPAT_FTQ_CMD_SFT_RESET          (1L<<25)
0539 #define BNX2_TPAT_FTQ_CMD_RD_DATA            (1L<<26)
0540 #define BNX2_TPAT_FTQ_CMD_ADD_INTERVEN           (1L<<27)
0541 #define BNX2_TPAT_FTQ_CMD_ADD_DATA           (1L<<28)
0542 #define BNX2_TPAT_FTQ_CMD_INTERVENE_CLR          (1L<<29)
0543 #define BNX2_TPAT_FTQ_CMD_POP                (1L<<30)
0544 #define BNX2_TPAT_FTQ_CMD_BUSY               (1L<<31)
0545 
0546 #define BNX2_TPAT_FTQ_CTL               0x000853fc
0547 #define BNX2_TPAT_FTQ_CTL_INTERVENE          (1L<<0)
0548 #define BNX2_TPAT_FTQ_CTL_OVERFLOW           (1L<<1)
0549 #define BNX2_TPAT_FTQ_CTL_FORCE_INTERVENE        (1L<<2)
0550 #define BNX2_TPAT_FTQ_CTL_MAX_DEPTH          (0x3ffL<<12)
0551 #define BNX2_TPAT_FTQ_CTL_CUR_DEPTH          (0x3ffL<<22)
0552 
0553 #define BNX2_TPAT_SCRATCH               0x000a0000
0554 #define BNX2_TXP_CPU_MODE               0x00045000
0555 #define BNX2_TXP_CPU_MODE_LOCAL_RST          (1L<<0)
0556 #define BNX2_TXP_CPU_MODE_STEP_ENA           (1L<<1)
0557 #define BNX2_TXP_CPU_MODE_PAGE_0_DATA_ENA        (1L<<2)
0558 #define BNX2_TXP_CPU_MODE_PAGE_0_INST_ENA        (1L<<3)
0559 #define BNX2_TXP_CPU_MODE_MSG_BIT1           (1L<<6)
0560 #define BNX2_TXP_CPU_MODE_INTERRUPT_ENA          (1L<<7)
0561 #define BNX2_TXP_CPU_MODE_SOFT_HALT          (1L<<10)
0562 #define BNX2_TXP_CPU_MODE_BAD_DATA_HALT_ENA      (1L<<11)
0563 #define BNX2_TXP_CPU_MODE_BAD_INST_HALT_ENA      (1L<<12)
0564 #define BNX2_TXP_CPU_MODE_FIO_ABORT_HALT_ENA         (1L<<13)
0565 #define BNX2_TXP_CPU_MODE_SPAD_UNDERFLOW_HALT_ENA    (1L<<15)
0566 
0567 #define BNX2_TXP_CPU_STATE              0x00045004
0568 #define BNX2_TXP_CPU_STATE_BREAKPOINT            (1L<<0)
0569 #define BNX2_TXP_CPU_STATE_BAD_INST_HALTED       (1L<<2)
0570 #define BNX2_TXP_CPU_STATE_PAGE_0_DATA_HALTED        (1L<<3)
0571 #define BNX2_TXP_CPU_STATE_PAGE_0_INST_HALTED        (1L<<4)
0572 #define BNX2_TXP_CPU_STATE_BAD_DATA_ADDR_HALTED      (1L<<5)
0573 #define BNX2_TXP_CPU_STATE_BAD_PC_HALTED         (1L<<6)
0574 #define BNX2_TXP_CPU_STATE_ALIGN_HALTED          (1L<<7)
0575 #define BNX2_TXP_CPU_STATE_FIO_ABORT_HALTED      (1L<<8)
0576 #define BNX2_TXP_CPU_STATE_SOFT_HALTED           (1L<<10)
0577 #define BNX2_TXP_CPU_STATE_SPAD_UNDERFLOW        (1L<<11)
0578 #define BNX2_TXP_CPU_STATE_INTERRRUPT            (1L<<12)
0579 #define BNX2_TXP_CPU_STATE_DATA_ACCESS_STALL         (1L<<14)
0580 #define BNX2_TXP_CPU_STATE_INST_FETCH_STALL      (1L<<15)
0581 #define BNX2_TXP_CPU_STATE_BLOCKED_READ          (1L<<31)
0582 
0583 #define BNX2_TXP_CPU_EVENT_MASK             0x00045008
0584 #define BNX2_TXP_CPU_EVENT_MASK_BREAKPOINT_MASK      (1L<<0)
0585 #define BNX2_TXP_CPU_EVENT_MASK_BAD_INST_HALTED_MASK     (1L<<2)
0586 #define BNX2_TXP_CPU_EVENT_MASK_PAGE_0_DATA_HALTED_MASK  (1L<<3)
0587 #define BNX2_TXP_CPU_EVENT_MASK_PAGE_0_INST_HALTED_MASK  (1L<<4)
0588 #define BNX2_TXP_CPU_EVENT_MASK_BAD_DATA_ADDR_HALTED_MASK    (1L<<5)
0589 #define BNX2_TXP_CPU_EVENT_MASK_BAD_PC_HALTED_MASK   (1L<<6)
0590 #define BNX2_TXP_CPU_EVENT_MASK_ALIGN_HALTED_MASK    (1L<<7)
0591 #define BNX2_TXP_CPU_EVENT_MASK_FIO_ABORT_MASK       (1L<<8)
0592 #define BNX2_TXP_CPU_EVENT_MASK_SOFT_HALTED_MASK     (1L<<10)
0593 #define BNX2_TXP_CPU_EVENT_MASK_SPAD_UNDERFLOW_MASK  (1L<<11)
0594 #define BNX2_TXP_CPU_EVENT_MASK_INTERRUPT_MASK       (1L<<12)
0595 
0596 #define BNX2_TXP_CPU_PROGRAM_COUNTER            0x0004501c
0597 #define BNX2_TXP_CPU_INSTRUCTION            0x00045020
0598 #define BNX2_TXP_CPU_DATA_ACCESS            0x00045024
0599 #define BNX2_TXP_CPU_INTERRUPT_ENABLE           0x00045028
0600 #define BNX2_TXP_CPU_INTERRUPT_VECTOR           0x0004502c
0601 #define BNX2_TXP_CPU_INTERRUPT_SAVED_PC         0x00045030
0602 #define BNX2_TXP_CPU_HW_BREAKPOINT          0x00045034
0603 #define BNX2_TXP_CPU_HW_BREAKPOINT_DISABLE       (1L<<0)
0604 #define BNX2_TXP_CPU_HW_BREAKPOINT_ADDRESS       (0x3fffffffL<<2)
0605 
0606 #define BNX2_TXP_CPU_DEBUG_VECT_PEEK            0x00045038
0607 #define BNX2_TXP_CPU_DEBUG_VECT_PEEK_1_VALUE         (0x7ffL<<0)
0608 #define BNX2_TXP_CPU_DEBUG_VECT_PEEK_1_PEEK_EN       (1L<<11)
0609 #define BNX2_TXP_CPU_DEBUG_VECT_PEEK_1_SEL       (0xfL<<12)
0610 #define BNX2_TXP_CPU_DEBUG_VECT_PEEK_2_VALUE         (0x7ffL<<16)
0611 #define BNX2_TXP_CPU_DEBUG_VECT_PEEK_2_PEEK_EN       (1L<<27)
0612 #define BNX2_TXP_CPU_DEBUG_VECT_PEEK_2_SEL       (0xfL<<28)
0613 
0614 #define BNX2_TXP_CPU_LAST_BRANCH_ADDR           0x00045048
0615 #define BNX2_TXP_CPU_LAST_BRANCH_ADDR_TYPE       (1L<<1)
0616 #define BNX2_TXP_CPU_LAST_BRANCH_ADDR_TYPE_JUMP      (0L<<1)
0617 #define BNX2_TXP_CPU_LAST_BRANCH_ADDR_TYPE_BRANCH    (1L<<1)
0618 #define BNX2_TXP_CPU_LAST_BRANCH_ADDR_LBA        (0x3fffffffL<<2)
0619 
0620 #define BNX2_TXP_CPU_REG_FILE               0x00045200
0621 #define BNX2_TXP_TXPQ                   0x000453c0
0622 #define BNX2_TXP_FTQ_CMD                0x000453f8
0623 #define BNX2_TXP_FTQ_CMD_OFFSET              (0x3ffL<<0)
0624 #define BNX2_TXP_FTQ_CMD_WR_TOP              (1L<<10)
0625 #define BNX2_TXP_FTQ_CMD_WR_TOP_0            (0L<<10)
0626 #define BNX2_TXP_FTQ_CMD_WR_TOP_1            (1L<<10)
0627 #define BNX2_TXP_FTQ_CMD_SFT_RESET           (1L<<25)
0628 #define BNX2_TXP_FTQ_CMD_RD_DATA             (1L<<26)
0629 #define BNX2_TXP_FTQ_CMD_ADD_INTERVEN            (1L<<27)
0630 #define BNX2_TXP_FTQ_CMD_ADD_DATA            (1L<<28)
0631 #define BNX2_TXP_FTQ_CMD_INTERVENE_CLR           (1L<<29)
0632 #define BNX2_TXP_FTQ_CMD_POP                 (1L<<30)
0633 #define BNX2_TXP_FTQ_CMD_BUSY                (1L<<31)
0634 
0635 #define BNX2_TXP_FTQ_CTL                0x000453fc
0636 #define BNX2_TXP_FTQ_CTL_INTERVENE           (1L<<0)
0637 #define BNX2_TXP_FTQ_CTL_OVERFLOW            (1L<<1)
0638 #define BNX2_TXP_FTQ_CTL_FORCE_INTERVENE         (1L<<2)
0639 #define BNX2_TXP_FTQ_CTL_MAX_DEPTH           (0x3ffL<<12)
0640 #define BNX2_TXP_FTQ_CTL_CUR_DEPTH           (0x3ffL<<22)
0641 
0642 #define BNX2_TXP_SCRATCH                0x00060000
0643 
0644 
0645 #include "bnx2_fw.h"
0646 #include "bnx2_fw2.h"
0647 
0648 
0649 
0650 #include <zlib.h>
0651 #define kmalloc(x,y) malloc (x)
0652 #define vmalloc malloc
0653 #define kfree free
0654 #define vfree free
0655 
0656 
0657 
0658 struct bnx2 {
0659   struct z_stream_s *strm;
0660   void          *gunzip_buf;
0661 };
0662 
0663 
0664 
0665 #define FW_BUF_SIZE 0x10000
0666 
0667 static int
0668 bnx2_gunzip_init(struct bnx2 *bp)
0669 {
0670   if ((bp->gunzip_buf = vmalloc(FW_BUF_SIZE)) == NULL)
0671     goto gunzip_nomem1;
0672 
0673   if ((bp->strm = kmalloc(sizeof(*bp->strm), GFP_KERNEL)) == NULL)
0674     goto gunzip_nomem2;
0675 
0676   return 0;
0677 
0678  gunzip_nomem3:
0679   kfree(bp->strm);
0680   bp->strm = NULL;
0681 
0682  gunzip_nomem2:
0683   vfree(bp->gunzip_buf);
0684   bp->gunzip_buf = NULL;
0685 
0686  gunzip_nomem1:
0687   return -1;
0688 }
0689 
0690 static void
0691 bnx2_gunzip_end(struct bnx2 *bp)
0692 {
0693   kfree(bp->strm);
0694   bp->strm = NULL;
0695 
0696   if (bp->gunzip_buf) {
0697     vfree(bp->gunzip_buf);
0698     bp->gunzip_buf = NULL;
0699   }
0700 }
0701 
0702 static int
0703 bnx2_gunzip(struct bnx2 *bp, const u8 *zbuf,
0704         int len, void **outbuf, int *outlen)
0705 {
0706   int rc;
0707 
0708   bp->strm->next_in = (u8 *) zbuf;
0709   bp->strm->avail_in = len;
0710   bp->strm->next_out = bp->gunzip_buf;
0711   bp->strm->avail_out = FW_BUF_SIZE;
0712 
0713   rc = inflateInit2(bp->strm, -MAX_WBITS);
0714   if (rc != Z_OK)
0715     return rc;
0716 
0717   rc = inflate(bp->strm, Z_FINISH);
0718 
0719   *outlen = FW_BUF_SIZE - bp->strm->avail_out;
0720   *outbuf = bp->gunzip_buf;
0721 
0722   if ((rc != Z_OK) && (rc != Z_STREAM_END))
0723     printf ("Firmware decompression error: %s\n",
0724             bp->strm->msg);
0725 
0726   inflateEnd(bp->strm);
0727 
0728   if (rc == Z_STREAM_END)
0729     return 0;
0730 
0731   return rc;
0732 }
0733 
0734 
0735 
0736 int
0737 do_firmware (outfp, rv2p, rv2p_len, name)
0738      FILE *outfp;
0739      const void *rv2p;
0740      const int rv2p_len;
0741      const char *name;
0742 {
0743   int rc = 0, i;
0744   void *text;
0745   int text_len;
0746   struct bnx2 bp_stack;
0747   struct bnx2 *bp = &bp_stack;
0748 
0749   if ((rc = bnx2_gunzip_init(bp)) != 0)
0750     return rc;
0751 
0752   rc = bnx2_gunzip(bp, rv2p, rv2p_len, &text, &text_len);
0753   if (rc)
0754     goto fail;
0755 
0756   text_len -= 4;
0757 
0758   printf ("Processing %s text_len=0x%x\n", name, text_len);
0759   fprintf (outfp, "static u8 %s[] = {\n", name);
0760 #define LINE_WRAP 12
0761   for (i=0; i<text_len; i++) {
0762     if ((i % LINE_WRAP) == 0)
0763       fprintf (outfp, "  ");
0764     fprintf (outfp, "0x%.02x", ((u8 *) text)[i]);
0765     if (i != text_len - 1)
0766       fprintf (outfp, ", ");
0767     if ((i % LINE_WRAP) == (LINE_WRAP - 1) || (i == text_len - 1))
0768       fprintf (outfp, "\n");
0769   }
0770   fprintf (outfp, "};\n\n");
0771 
0772   bnx2_gunzip_end(bp);
0773   return 0;
0774 
0775  fail:
0776   fprintf (stderr, "Error\n");
0777   bnx2_gunzip_end(bp);
0778   return rc;
0779 }
0780 
0781 int
0782 main (void)
0783 {
0784   FILE *fp;
0785   
0786   if (!(fp = fopen ("bnx2_uncompressed_fw.h", "w")))
0787     goto open_fail;
0788 
0789   fprintf (fp, "/* This file has been automatically generated by decompressing data\n *"
0790            " from bnx2_fw.h and bnx2_fw2.h using tools/firmware/bnx2/fw2hdr. */\n\n");
0791 
0792 #define FW(x) do_firmware (fp, x, sizeof (x), #x)
0793 
0794   FW (bnx2_rv2p_proc1);
0795   FW (bnx2_rv2p_proc2);
0796   FW (bnx2_xi90_rv2p_proc1);
0797   FW (bnx2_xi90_rv2p_proc2);
0798   FW (bnx2_xi_rv2p_proc1);
0799   FW (bnx2_xi_rv2p_proc2);
0800   FW (bnx2_COM_b06FwText);
0801   FW (bnx2_CP_b06FwText);
0802   FW (bnx2_RXP_b06FwText);
0803   FW (bnx2_TPAT_b06FwText);
0804   FW (bnx2_TXP_b06FwText);
0805   FW (bnx2_COM_b09FwText);
0806   FW (bnx2_CP_b09FwText);
0807   FW (bnx2_RXP_b09FwText);
0808   FW (bnx2_TPAT_b09FwText);
0809   FW (bnx2_TXP_b09FwText);
0810 
0811   fclose (fp);
0812   return 0;
0813 
0814  open_fail:
0815   fprintf (stderr, "Open failed\n");
0816   return 1;
0817 }