📄 ispreg.h
字号:
/* * NVRAM Definitions (PCI cards only) */#define ISPBSMX(c, byte, shift, mask) \ (((c)[(byte)] >> (shift)) & (mask))/* * Qlogic 1020/1040 NVRAM is an array of 128 bytes. * * Some portion of the front of this is for general host adapter properties * This is followed by an array of per-target parameters, and is tailed off * with a checksum xor byte at offset 127. For non-byte entities data is * stored in Little Endian order. */#define ISP_NVRAM_SIZE 128#define ISP_NVRAM_VERSION(c) (c)[4]#define ISP_NVRAM_FIFO_THRESHOLD(c) ISPBSMX(c, 5, 0, 0x03)#define ISP_NVRAM_BIOS_DISABLE(c) ISPBSMX(c, 5, 2, 0x01)#define ISP_NVRAM_HBA_ENABLE(c) ISPBSMX(c, 5, 3, 0x01)#define ISP_NVRAM_INITIATOR_ID(c) ISPBSMX(c, 5, 4, 0x0f)#define ISP_NVRAM_BUS_RESET_DELAY(c) (c)[6]#define ISP_NVRAM_BUS_RETRY_COUNT(c) (c)[7]#define ISP_NVRAM_BUS_RETRY_DELAY(c) (c)[8]#define ISP_NVRAM_ASYNC_DATA_SETUP_TIME(c) ISPBSMX(c, 9, 0, 0x0f)#define ISP_NVRAM_REQ_ACK_ACTIVE_NEGATION(c) ISPBSMX(c, 9, 4, 0x01)#define ISP_NVRAM_DATA_LINE_ACTIVE_NEGATION(c) ISPBSMX(c, 9, 5, 0x01)#define ISP_NVRAM_DATA_DMA_BURST_ENABLE(c) ISPBSMX(c, 9, 6, 0x01)#define ISP_NVRAM_CMD_DMA_BURST_ENABLE(c) ISPBSMX(c, 9, 7, 0x01)#define ISP_NVRAM_TAG_AGE_LIMIT(c) (c)[10]#define ISP_NVRAM_LOWTRM_ENABLE(c) ISPBSMX(c, 11, 0, 0x01)#define ISP_NVRAM_HITRM_ENABLE(c) ISPBSMX(c, 11, 1, 0x01)#define ISP_NVRAM_PCMC_BURST_ENABLE(c) ISPBSMX(c, 11, 2, 0x01)#define ISP_NVRAM_ENABLE_60_MHZ(c) ISPBSMX(c, 11, 3, 0x01)#define ISP_NVRAM_SCSI_RESET_DISABLE(c) ISPBSMX(c, 11, 4, 0x01)#define ISP_NVRAM_ENABLE_AUTO_TERM(c) ISPBSMX(c, 11, 5, 0x01)#define ISP_NVRAM_FIFO_THRESHOLD_128(c) ISPBSMX(c, 11, 6, 0x01)#define ISP_NVRAM_AUTO_TERM_SUPPORT(c) ISPBSMX(c, 11, 7, 0x01)#define ISP_NVRAM_SELECTION_TIMEOUT(c) (((c)[12]) | ((c)[13] << 8))#define ISP_NVRAM_MAX_QUEUE_DEPTH(c) (((c)[14]) | ((c)[15] << 8))#define ISP_NVRAM_SCSI_BUS_SIZE(c) ISPBSMX(c, 16, 0, 0x01)#define ISP_NVRAM_SCSI_BUS_TYPE(c) ISPBSMX(c, 16, 1, 0x01)#define ISP_NVRAM_ADAPTER_CLK_SPEED(c) ISPBSMX(c, 16, 2, 0x01)#define ISP_NVRAM_SOFT_TERM_SUPPORT(c) ISPBSMX(c, 16, 3, 0x01)#define ISP_NVRAM_FLASH_ONBOARD(c) ISPBSMX(c, 16, 4, 0x01)#define ISP_NVRAM_FAST_MTTR_ENABLE(c) ISPBSMX(c, 22, 0, 0x01)#define ISP_NVRAM_TARGOFF 28#define ISP_NVARM_TARGSIZE 6#define _IxT(tgt, tidx) \ (ISP_NVRAM_TARGOFF + (ISP_NVARM_TARGSIZE * (tgt)) + (tidx))#define ISP_NVRAM_TGT_RENEG(c, t) ISPBSMX(c, _IxT(t, 0), 0, 0x01)#define ISP_NVRAM_TGT_QFRZ(c, t) ISPBSMX(c, _IxT(t, 0), 1, 0x01)#define ISP_NVRAM_TGT_ARQ(c, t) ISPBSMX(c, _IxT(t, 0), 2, 0x01)#define ISP_NVRAM_TGT_TQING(c, t) ISPBSMX(c, _IxT(t, 0), 3, 0x01)#define ISP_NVRAM_TGT_SYNC(c, t) ISPBSMX(c, _IxT(t, 0), 4, 0x01)#define ISP_NVRAM_TGT_WIDE(c, t) ISPBSMX(c, _IxT(t, 0), 5, 0x01)#define ISP_NVRAM_TGT_PARITY(c, t) ISPBSMX(c, _IxT(t, 0), 6, 0x01)#define ISP_NVRAM_TGT_DISC(c, t) ISPBSMX(c, _IxT(t, 0), 7, 0x01)#define ISP_NVRAM_TGT_EXEC_THROTTLE(c, t) ISPBSMX(c, _IxT(t, 1), 0, 0xff)#define ISP_NVRAM_TGT_SYNC_PERIOD(c, t) ISPBSMX(c, _IxT(t, 2), 0, 0xff)#define ISP_NVRAM_TGT_SYNC_OFFSET(c, t) ISPBSMX(c, _IxT(t, 3), 0, 0x0f)#define ISP_NVRAM_TGT_DEVICE_ENABLE(c, t) ISPBSMX(c, _IxT(t, 3), 4, 0x01)#define ISP_NVRAM_TGT_LUN_DISABLE(c, t) ISPBSMX(c, _IxT(t, 3), 5, 0x01)/* * Qlogic 1080/1240 NVRAM is an array of 256 bytes. * * Some portion of the front of this is for general host adapter properties * This is followed by an array of per-target parameters, and is tailed off * with a checksum xor byte at offset 256. For non-byte entities data is * stored in Little Endian order. */#define ISP1080_NVRAM_SIZE 256#define ISP1080_NVRAM_VERSION(c) ISP_NVRAM_VERSION(c)/* Offset 5 *//* u_int8_t bios_configuration_mode :2; u_int8_t bios_disable :1; u_int8_t selectable_scsi_boot_enable :1; u_int8_t cd_rom_boot_enable :1; u_int8_t disable_loading_risc_code :1; u_int8_t enable_64bit_addressing :1; u_int8_t unused_7 :1; *//* Offsets 6, 7 *//* u_int8_t boot_lun_number :5; u_int8_t scsi_bus_number :1; u_int8_t unused_6 :1; u_int8_t unused_7 :1; u_int8_t boot_target_number :4; u_int8_t unused_12 :1; u_int8_t unused_13 :1; u_int8_t unused_14 :1; u_int8_t unused_15 :1; */#define ISP1080_NVRAM_HBA_ENABLE(c) ISPBSMX(c, 16, 3, 0x01)#define ISP1080_NVRAM_BURST_ENABLE(c) ISPBSMX(c, 16, 1, 0x01)#define ISP1080_NVRAM_FIFO_THRESHOLD(c) ISPBSMX(c, 16, 4, 0x0f)#define ISP1080_NVRAM_AUTO_TERM_SUPPORT(c) ISPBSMX(c, 17, 7, 0x01)#define ISP1080_NVRAM_BUS0_TERM_MODE(c) ISPBSMX(c, 17, 0, 0x03)#define ISP1080_NVRAM_BUS1_TERM_MODE(c) ISPBSMX(c, 17, 2, 0x03)#define ISP1080_ISP_PARAMETER(c) \ (((c)[18]) | ((c)[19] << 8))#define ISP1080_FAST_POST(c) ISPBSMX(c, 20, 0, 0x01)#define ISP1080_REPORT_LVD_TRANSITION(c) ISPBSMX(c, 20, 1, 0x01)#define ISP1080_BUS1_OFF 112#define ISP1080_NVRAM_INITIATOR_ID(c, b) \ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 24, 0, 0x0f)#define ISP1080_NVRAM_BUS_RESET_DELAY(c, b) \ (c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 25]#define ISP1080_NVRAM_BUS_RETRY_COUNT(c, b) \ (c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 26]#define ISP1080_NVRAM_BUS_RETRY_DELAY(c, b) \ (c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 27]#define ISP1080_NVRAM_ASYNC_DATA_SETUP_TIME(c, b) \ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 28, 0, 0x0f)#define ISP1080_NVRAM_REQ_ACK_ACTIVE_NEGATION(c, b) \ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 28, 4, 0x01)#define ISP1080_NVRAM_DATA_LINE_ACTIVE_NEGATION(c, b) \ ISPBSMX(c, ((b == 0)? 0 : ISP1080_BUS1_OFF) + 28, 5, 0x01)#define ISP1080_NVRAM_SELECTION_TIMEOUT(c, b) \ (((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 30]) | \ ((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 31] << 8))#define ISP1080_NVRAM_MAX_QUEUE_DEPTH(c, b) \ (((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 32]) | \ ((c)[((b == 0)? 0 : ISP1080_BUS1_OFF) + 33] << 8))#define ISP1080_NVRAM_TARGOFF(b) \ ((b == 0)? 40: (40 + ISP1080_BUS1_OFF))#define ISP1080_NVRAM_TARGSIZE 6#define _IxT8(tgt, tidx, b) \ (ISP1080_NVRAM_TARGOFF((b)) + (ISP1080_NVRAM_TARGSIZE * (tgt)) + (tidx))#define ISP1080_NVRAM_TGT_RENEG(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 0, 0x01)#define ISP1080_NVRAM_TGT_QFRZ(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 1, 0x01)#define ISP1080_NVRAM_TGT_ARQ(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 2, 0x01)#define ISP1080_NVRAM_TGT_TQING(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 3, 0x01)#define ISP1080_NVRAM_TGT_SYNC(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 4, 0x01)#define ISP1080_NVRAM_TGT_WIDE(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 5, 0x01)#define ISP1080_NVRAM_TGT_PARITY(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 6, 0x01)#define ISP1080_NVRAM_TGT_DISC(c, t, b) \ ISPBSMX(c, _IxT8(t, 0, (b)), 7, 0x01)#define ISP1080_NVRAM_TGT_EXEC_THROTTLE(c, t, b) \ ISPBSMX(c, _IxT8(t, 1, (b)), 0, 0xff)#define ISP1080_NVRAM_TGT_SYNC_PERIOD(c, t, b) \ ISPBSMX(c, _IxT8(t, 2, (b)), 0, 0xff)#define ISP1080_NVRAM_TGT_SYNC_OFFSET(c, t, b) \ ISPBSMX(c, _IxT8(t, 3, (b)), 0, 0x0f)#define ISP1080_NVRAM_TGT_DEVICE_ENABLE(c, t, b) \ ISPBSMX(c, _IxT8(t, 3, (b)), 4, 0x01)#define ISP1080_NVRAM_TGT_LUN_DISABLE(c, t, b) \ ISPBSMX(c, _IxT8(t, 3, (b)), 5, 0x01)#define ISP12160_NVRAM_HBA_ENABLE ISP1080_NVRAM_HBA_ENABLE#define ISP12160_NVRAM_BURST_ENABLE ISP1080_NVRAM_BURST_ENABLE#define ISP12160_NVRAM_FIFO_THRESHOLD ISP1080_NVRAM_FIFO_THRESHOLD#define ISP12160_NVRAM_AUTO_TERM_SUPPORT ISP1080_NVRAM_AUTO_TERM_SUPPORT#define ISP12160_NVRAM_BUS0_TERM_MODE ISP1080_NVRAM_BUS0_TERM_MODE#define ISP12160_NVRAM_BUS1_TERM_MODE ISP1080_NVRAM_BUS1_TERM_MODE#define ISP12160_ISP_PARAMETER ISP12160_ISP_PARAMETER#define ISP12160_FAST_POST ISP1080_FAST_POST#define ISP12160_REPORT_LVD_TRANSITION ISP1080_REPORT_LVD_TRANSTION#define ISP12160_NVRAM_INITIATOR_ID \ ISP1080_NVRAM_INITIATOR_ID#define ISP12160_NVRAM_BUS_RESET_DELAY \ ISP1080_NVRAM_BUS_RESET_DELAY#define ISP12160_NVRAM_BUS_RETRY_COUNT \ ISP1080_NVRAM_BUS_RETRY_COUNT#define ISP12160_NVRAM_BUS_RETRY_DELAY \ ISP1080_NVRAM_BUS_RETRY_DELAY#define ISP12160_NVRAM_ASYNC_DATA_SETUP_TIME \ ISP1080_NVRAM_ASYNC_DATA_SETUP_TIME#define ISP12160_NVRAM_REQ_ACK_ACTIVE_NEGATION \ ISP1080_NVRAM_REQ_ACK_ACTIVE_NEGATION#define ISP12160_NVRAM_DATA_LINE_ACTIVE_NEGATION \ ISP1080_NVRAM_DATA_LINE_ACTIVE_NEGATION#define ISP12160_NVRAM_SELECTION_TIMEOUT \ ISP1080_NVRAM_SELECTION_TIMEOUT#define ISP12160_NVRAM_MAX_QUEUE_DEPTH \ ISP1080_NVRAM_MAX_QUEUE_DEPTH#define ISP12160_BUS0_OFF 24#define ISP12160_BUS1_OFF 136#define ISP12160_NVRAM_TARGOFF(b) \ (((b == 0)? ISP12160_BUS0_OFF : ISP12160_BUS1_OFF) + 16)#define ISP12160_NVRAM_TARGSIZE 6#define _IxT16(tgt, tidx, b) \ (ISP12160_NVRAM_TARGOFF((b))+(ISP12160_NVRAM_TARGSIZE * (tgt))+(tidx))#define ISP12160_NVRAM_TGT_RENEG(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 0, 0x01)#define ISP12160_NVRAM_TGT_QFRZ(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 1, 0x01)#define ISP12160_NVRAM_TGT_ARQ(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 2, 0x01)#define ISP12160_NVRAM_TGT_TQING(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 3, 0x01)#define ISP12160_NVRAM_TGT_SYNC(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 4, 0x01)#define ISP12160_NVRAM_TGT_WIDE(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 5, 0x01)#define ISP12160_NVRAM_TGT_PARITY(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 6, 0x01)#define ISP12160_NVRAM_TGT_DISC(c, t, b) \ ISPBSMX(c, _IxT16(t, 0, (b)), 7, 0x01)#define ISP12160_NVRAM_TGT_EXEC_THROTTLE(c, t, b) \ ISPBSMX(c, _IxT16(t, 1, (b)), 0, 0xff)#define ISP12160_NVRAM_TGT_SYNC_PERIOD(c, t, b) \ ISPBSMX(c, _IxT16(t, 2, (b)), 0, 0xff)#define ISP12160_NVRAM_TGT_SYNC_OFFSET(c, t, b) \ ISPBSMX(c, _IxT16(t, 3, (b)), 0, 0x1f)#define ISP12160_NVRAM_TGT_DEVICE_ENABLE(c, t, b) \ ISPBSMX(c, _IxT16(t, 3, (b)), 5, 0x01)#define ISP12160_NVRAM_PPR_OPTIONS(c, t, b) \ ISPBSMX(c, _IxT16(t, 4, (b)), 0, 0x0f)#define ISP12160_NVRAM_PPR_WIDTH(c, t, b) \ ISPBSMX(c, _IxT16(t, 4, (b)), 4, 0x03)#define ISP12160_NVRAM_PPR_ENABLE(c, t, b) \ ISPBSMX(c, _IxT16(t, 4, (b)), 7, 0x01)/* * Qlogic 2XXX NVRAM is an array of 256 bytes. * * Some portion of the front of this is for general RISC engine parameters, * mostly reflecting the state of the last INITIALIZE FIRMWARE mailbox command. * * This is followed by some general host adapter parameters, and ends with * a checksum xor byte at offset 255. For non-byte entities data is stored * in Little Endian order. */#define ISP2100_NVRAM_SIZE 256/* ISP_NVRAM_VERSION is in same overall place */#define ISP2100_NVRAM_RISCVER(c) (c)[6]#define ISP2100_NVRAM_OPTIONS(c) (c)[8]#define ISP2100_NVRAM_MAXFRAMELENGTH(c) (((c)[10]) | ((c)[11] << 8))#define ISP2100_NVRAM_MAXIOCBALLOCATION(c) (((c)[12]) | ((c)[13] << 8))#define ISP2100_NVRAM_EXECUTION_THROTTLE(c) (((c)[14]) | ((c)[15] << 8))#define ISP2100_NVRAM_RETRY_COUNT(c) (c)[16]#define ISP2100_NVRAM_RETRY_DELAY(c) (c)[17]#define ISP2100_NVRAM_PORT_NAME(c) (\ (((u_int64_t)(c)[18]) << 56) | \ (((u_int64_t)(c)[19]) << 48) | \ (((u_int64_t)(c)[20]) << 40) | \ (((u_int64_t)(c)[21]) << 32) | \ (((u_int64_t)(c)[22]) << 24) | \ (((u_int64_t)(c)[23]) << 16) | \ (((u_int64_t)(c)[24]) << 8) | \ (((u_int64_t)(c)[25]) << 0))#define ISP2100_NVRAM_HARDLOOPID(c) (c)[26]#define ISP2200_NVRAM_NODE_NAME(c) (\ (((u_int64_t)(c)[30]) << 56) | \ (((u_int64_t)(c)[31]) << 48) | \ (((u_int64_t)(c)[32]) << 40) | \ (((u_int64_t)(c)[33]) << 32) | \ (((u_int64_t)(c)[34]) << 24) | \ (((u_int64_t)(c)[35]) << 16) | \ (((u_int64_t)(c)[36]) << 8) | \ (((u_int64_t)(c)[37]) << 0))#define ISP2100_NVRAM_HBA_OPTIONS(c) (c)[70]#define ISP2100_NVRAM_HBA_DISABLE(c) ISPBSMX(c, 70, 0, 0x01)#define ISP2100_NVRAM_BIOS_DISABLE(c) ISPBSMX(c, 70, 1, 0x01)#define ISP2100_NVRAM_LUN_DISABLE(c) ISPBSMX(c, 70, 2, 0x01)#define ISP2100_NVRAM_ENABLE_SELECT_BOOT(c) ISPBSMX(c, 70, 3, 0x01)#define ISP2100_NVRAM_DISABLE_CODELOAD(c) ISPBSMX(c, 70, 4, 0x01)#define ISP2100_NVRAM_SET_CACHELINESZ(c) ISPBSMX(c, 70, 5, 0x01)#define ISP2100_NVRAM_BOOT_NODE_NAME(c) (\ (((u_int64_t)(c)[72]) << 56) | \ (((u_int64_t)(c)[73]) << 48) | \ (((u_int64_t)(c)[74]) << 40) | \ (((u_int64_t)(c)[75]) << 32) | \ (((u_int64_t)(c)[76]) << 24) | \ (((u_int64_t)(c)[77]) << 16) | \ (((u_int64_t)(c)[78]) << 8) | \ (((u_int64_t)(c)[79]) << 0))#define ISP2100_NVRAM_BOOT_LUN(c) (c)[80]#define ISP2200_HBA_FEATURES(c) (c)[232] | ((c)[233] << 8)/* * Firmware Crash Dump * * QLogic needs specific information format when they look at firmware crashes. * * This is incredibly kernel memory consumptive (to say the least), so this * code is only compiled in when needed. */#define QLA2200_RISC_IMAGE_DUMP_SIZE \ (1 * sizeof (u_int16_t)) + /* 'used' flag (also HBA type) */ \ (352 * sizeof (u_int16_t)) + /* RISC registers */ \ (61440 * sizeof (u_int16_t)) /* RISC SRAM (offset 0x1000..0xffff) */#define QLA2300_RISC_IMAGE_DUMP_SIZE \ (1 * sizeof (u_int16_t)) + /* 'used' flag (also HBA type) */ \ (464 * sizeof (u_int16_t)) + /* RISC registers */ \ (63488 * sizeof (u_int16_t)) + /* RISC SRAM (0x0800..0xffff) */ \ (4096 * sizeof (u_int16_t)) + /* RISC SRAM (0x10000..0x10FFF) */ \ (61440 * sizeof (u_int16_t)) /* RISC SRAM (0x11000..0x1FFFF) *//* the larger of the two */#define ISP_CRASH_IMAGE_SIZE QLA2300_RISC_IMAGE_DUMP_SIZE#endif /* _ISPREG_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -