📄 advansys.c
字号:
ushort entry_to_copy; ushort res; ASC_SG_LIST sg_list[ASC_MIN_SG_LIST];} ASC_MIN_SG_HEAD;#define QCX_SORT (0x0001)#define QCX_COALEASE (0x0002)typedef struct asc_scsi_q { ASC_SCSIQ_1 q1; ASC_SCSIQ_2 q2; uchar *cdbptr; ASC_SG_HEAD *sg_head; ushort remain_sg_entry_cnt; ushort next_sg_index;} ASC_SCSI_Q;typedef struct asc_scsi_req_q { ASC_SCSIQ_1 r1; ASC_SCSIQ_2 r2; uchar *cdbptr; ASC_SG_HEAD *sg_head; uchar *sense_ptr; ASC_SCSIQ_3 r3; uchar cdb[ASC_MAX_CDB_LEN]; uchar sense[ASC_MIN_SENSE_LEN];} ASC_SCSI_REQ_Q;typedef struct asc_scsi_bios_req_q { ASC_SCSIQ_1 r1; ASC_SCSIQ_2 r2; uchar *cdbptr; ASC_SG_HEAD *sg_head; uchar *sense_ptr; ASC_SCSIQ_3 r3; uchar cdb[ASC_MAX_CDB_LEN]; uchar sense[ASC_MIN_SENSE_LEN];} ASC_SCSI_BIOS_REQ_Q;typedef struct asc_risc_q { uchar fwd; uchar bwd; ASC_SCSIQ_1 i1; ASC_SCSIQ_2 i2; ASC_SCSIQ_3 i3; ASC_SCSIQ_4 i4;} ASC_RISC_Q;typedef struct asc_sg_list_q { uchar seq_no; uchar q_no; uchar cntl; uchar sg_head_qp; uchar sg_list_cnt; uchar sg_cur_list_cnt;} ASC_SG_LIST_Q;typedef struct asc_risc_sg_list_q { uchar fwd; uchar bwd; ASC_SG_LIST_Q sg; ASC_SG_LIST sg_list[7];} ASC_RISC_SG_LIST_Q;#define ASC_EXE_SCSI_IO_MAX_IDLE_LOOP 0x1000000UL#define ASC_EXE_SCSI_IO_MAX_WAIT_LOOP 1024#define ASCQ_ERR_NO_ERROR 0#define ASCQ_ERR_IO_NOT_FOUND 1#define ASCQ_ERR_LOCAL_MEM 2#define ASCQ_ERR_CHKSUM 3#define ASCQ_ERR_START_CHIP 4#define ASCQ_ERR_INT_TARGET_ID 5#define ASCQ_ERR_INT_LOCAL_MEM 6#define ASCQ_ERR_HALT_RISC 7#define ASCQ_ERR_GET_ASPI_ENTRY 8#define ASCQ_ERR_CLOSE_ASPI 9#define ASCQ_ERR_HOST_INQUIRY 0x0A#define ASCQ_ERR_SAVED_SRB_BAD 0x0B#define ASCQ_ERR_QCNTL_SG_LIST 0x0C#define ASCQ_ERR_Q_STATUS 0x0D#define ASCQ_ERR_WR_SCSIQ 0x0E#define ASCQ_ERR_PC_ADDR 0x0F#define ASCQ_ERR_SYN_OFFSET 0x10#define ASCQ_ERR_SYN_XFER_TIME 0x11#define ASCQ_ERR_LOCK_DMA 0x12#define ASCQ_ERR_UNLOCK_DMA 0x13#define ASCQ_ERR_VDS_CHK_INSTALL 0x14#define ASCQ_ERR_MICRO_CODE_HALT 0x15#define ASCQ_ERR_SET_LRAM_ADDR 0x16#define ASCQ_ERR_CUR_QNG 0x17#define ASCQ_ERR_SG_Q_LINKS 0x18#define ASCQ_ERR_SCSIQ_PTR 0x19#define ASCQ_ERR_ISR_RE_ENTRY 0x1A#define ASCQ_ERR_CRITICAL_RE_ENTRY 0x1B#define ASCQ_ERR_ISR_ON_CRITICAL 0x1C#define ASCQ_ERR_SG_LIST_ODD_ADDRESS 0x1D#define ASCQ_ERR_XFER_ADDRESS_TOO_BIG 0x1E#define ASCQ_ERR_SCSIQ_NULL_PTR 0x1F#define ASCQ_ERR_SCSIQ_BAD_NEXT_PTR 0x20#define ASCQ_ERR_GET_NUM_OF_FREE_Q 0x21#define ASCQ_ERR_SEND_SCSI_Q 0x22#define ASCQ_ERR_HOST_REQ_RISC_HALT 0x23#define ASCQ_ERR_RESET_SDTR 0x24#define ASC_WARN_NO_ERROR 0x0000#define ASC_WARN_IO_PORT_ROTATE 0x0001#define ASC_WARN_EEPROM_CHKSUM 0x0002#define ASC_WARN_IRQ_MODIFIED 0x0004#define ASC_WARN_AUTO_CONFIG 0x0008#define ASC_WARN_CMD_QNG_CONFLICT 0x0010#define ASC_WARN_EEPROM_RECOVER 0x0020#define ASC_WARN_CFG_MSW_RECOVER 0x0040#define ASC_WARN_SET_PCI_CONFIG_SPACE 0x0080#define ASC_IERR_WRITE_EEPROM 0x0001#define ASC_IERR_MCODE_CHKSUM 0x0002#define ASC_IERR_SET_PC_ADDR 0x0004#define ASC_IERR_START_STOP_CHIP 0x0008#define ASC_IERR_IRQ_NO 0x0010#define ASC_IERR_SET_IRQ_NO 0x0020#define ASC_IERR_CHIP_VERSION 0x0040#define ASC_IERR_SET_SCSI_ID 0x0080#define ASC_IERR_GET_PHY_ADDR 0x0100#define ASC_IERR_BAD_SIGNATURE 0x0200#define ASC_IERR_NO_BUS_TYPE 0x0400#define ASC_IERR_SCAM 0x0800#define ASC_IERR_SET_SDTR 0x1000#define ASC_IERR_RW_LRAM 0x8000#define ASC_DEF_IRQ_NO 10#define ASC_MAX_IRQ_NO 15#define ASC_MIN_IRQ_NO 10#define ASC_MIN_REMAIN_Q (0x02)#define ASC_DEF_MAX_TOTAL_QNG (0xF0)#define ASC_MIN_TAG_Q_PER_DVC (0x04)#define ASC_DEF_TAG_Q_PER_DVC (0x04)#define ASC_MIN_FREE_Q ASC_MIN_REMAIN_Q#define ASC_MIN_TOTAL_QNG ((ASC_MAX_SG_QUEUE)+(ASC_MIN_FREE_Q))#define ASC_MAX_TOTAL_QNG 240#define ASC_MAX_PCI_ULTRA_INRAM_TOTAL_QNG 16#define ASC_MAX_PCI_ULTRA_INRAM_TAG_QNG 8#define ASC_MAX_PCI_INRAM_TOTAL_QNG 20#define ASC_MAX_INRAM_TAG_QNG 16#define ASC_IOADR_TABLE_MAX_IX 11#define ASC_IOADR_GAP 0x10#define ASC_SEARCH_IOP_GAP 0x10#define ASC_MIN_IOP_ADDR (PortAddr)0x0100#define ASC_MAX_IOP_ADDR (PortAddr)0x3F0#define ASC_IOADR_1 (PortAddr)0x0110#define ASC_IOADR_2 (PortAddr)0x0130#define ASC_IOADR_3 (PortAddr)0x0150#define ASC_IOADR_4 (PortAddr)0x0190#define ASC_IOADR_5 (PortAddr)0x0210#define ASC_IOADR_6 (PortAddr)0x0230#define ASC_IOADR_7 (PortAddr)0x0250#define ASC_IOADR_8 (PortAddr)0x0330#define ASC_IOADR_DEF ASC_IOADR_8#define ASC_LIB_SCSIQ_WK_SP 256#define ASC_MAX_SYN_XFER_NO 16#define ASC_SYN_MAX_OFFSET 0x0F#define ASC_DEF_SDTR_OFFSET 0x0F#define ASC_DEF_SDTR_INDEX 0x00#define ASC_SDTR_ULTRA_PCI_10MB_INDEX 0x02#define SYN_XFER_NS_0 25#define SYN_XFER_NS_1 30#define SYN_XFER_NS_2 35#define SYN_XFER_NS_3 40#define SYN_XFER_NS_4 50#define SYN_XFER_NS_5 60#define SYN_XFER_NS_6 70#define SYN_XFER_NS_7 85#define SYN_ULTRA_XFER_NS_0 12#define SYN_ULTRA_XFER_NS_1 19#define SYN_ULTRA_XFER_NS_2 25#define SYN_ULTRA_XFER_NS_3 32#define SYN_ULTRA_XFER_NS_4 38#define SYN_ULTRA_XFER_NS_5 44#define SYN_ULTRA_XFER_NS_6 50#define SYN_ULTRA_XFER_NS_7 57#define SYN_ULTRA_XFER_NS_8 63#define SYN_ULTRA_XFER_NS_9 69#define SYN_ULTRA_XFER_NS_10 75#define SYN_ULTRA_XFER_NS_11 82#define SYN_ULTRA_XFER_NS_12 88#define SYN_ULTRA_XFER_NS_13 94#define SYN_ULTRA_XFER_NS_14 100#define SYN_ULTRA_XFER_NS_15 107typedef struct ext_msg { uchar msg_type; uchar msg_len; uchar msg_req; union { struct { uchar sdtr_xfer_period; uchar sdtr_req_ack_offset; } sdtr; struct { uchar wdtr_width; } wdtr; struct { uchar mdp_b3; uchar mdp_b2; uchar mdp_b1; uchar mdp_b0; } mdp; } u_ext_msg; uchar res;} EXT_MSG;#define xfer_period u_ext_msg.sdtr.sdtr_xfer_period#define req_ack_offset u_ext_msg.sdtr.sdtr_req_ack_offset#define wdtr_width u_ext_msg.wdtr.wdtr_width#define mdp_b3 u_ext_msg.mdp_b3#define mdp_b2 u_ext_msg.mdp_b2#define mdp_b1 u_ext_msg.mdp_b1#define mdp_b0 u_ext_msg.mdp_b0typedef struct asc_dvc_cfg { ASC_SCSI_BIT_ID_TYPE can_tagged_qng; ASC_SCSI_BIT_ID_TYPE cmd_qng_enabled; ASC_SCSI_BIT_ID_TYPE disc_enable; ASC_SCSI_BIT_ID_TYPE sdtr_enable; uchar chip_scsi_id:4; uchar isa_dma_speed:4; uchar isa_dma_channel; uchar chip_version; ushort pci_device_id; ushort lib_serial_no; ushort lib_version; ushort mcode_date; ushort mcode_version; uchar max_tag_qng[ASC_MAX_TID + 1]; uchar *overrun_buf; uchar sdtr_period_offset[ASC_MAX_TID + 1]; ushort pci_slot_info; uchar adapter_info[6];} ASC_DVC_CFG;#define ASC_DEF_DVC_CNTL 0xFFFF#define ASC_DEF_CHIP_SCSI_ID 7#define ASC_DEF_ISA_DMA_SPEED 4#define ASC_INIT_STATE_NULL 0x0000#define ASC_INIT_STATE_BEG_GET_CFG 0x0001#define ASC_INIT_STATE_END_GET_CFG 0x0002#define ASC_INIT_STATE_BEG_SET_CFG 0x0004#define ASC_INIT_STATE_END_SET_CFG 0x0008#define ASC_INIT_STATE_BEG_LOAD_MC 0x0010#define ASC_INIT_STATE_END_LOAD_MC 0x0020#define ASC_INIT_STATE_BEG_INQUIRY 0x0040#define ASC_INIT_STATE_END_INQUIRY 0x0080#define ASC_INIT_RESET_SCSI_DONE 0x0100#define ASC_INIT_STATE_WITHOUT_EEP 0x8000#define ASC_PCI_DEVICE_ID_REV_A 0x1100#define ASC_PCI_DEVICE_ID_REV_B 0x1200#define ASC_BUG_FIX_IF_NOT_DWB 0x0001#define ASC_BUG_FIX_ASYN_USE_SYN 0x0002#define ASYN_SDTR_DATA_FIX_PCI_REV_AB 0x41#define ASC_MIN_TAGGED_CMD 7#define ASC_MAX_SCSI_RESET_WAIT 30struct asc_dvc_var; /* Forward Declaration. */typedef void (* ASC_ISR_CALLBACK)(struct asc_dvc_var *, ASC_QDONE_INFO *);typedef int (* ASC_EXE_CALLBACK)(struct asc_dvc_var *, ASC_SCSI_Q *);typedef struct asc_dvc_var { PortAddr iop_base; ushort err_code; ushort dvc_cntl; ushort bug_fix_cntl; ushort bus_type; ASC_ISR_CALLBACK isr_callback; ASC_EXE_CALLBACK exe_callback; ASC_SCSI_BIT_ID_TYPE init_sdtr; ASC_SCSI_BIT_ID_TYPE sdtr_done; ASC_SCSI_BIT_ID_TYPE use_tagged_qng; ASC_SCSI_BIT_ID_TYPE unit_not_ready; ASC_SCSI_BIT_ID_TYPE queue_full_or_busy; ASC_SCSI_BIT_ID_TYPE start_motor; uchar scsi_reset_wait; uchar chip_no; char is_in_int; uchar max_total_qng; uchar cur_total_qng; uchar in_critical_cnt; uchar irq_no; uchar last_q_shortage; ushort init_state; uchar cur_dvc_qng[ASC_MAX_TID + 1]; uchar max_dvc_qng[ASC_MAX_TID + 1]; ASC_SCSI_Q *scsiq_busy_head[ASC_MAX_TID + 1]; ASC_SCSI_Q *scsiq_busy_tail[ASC_MAX_TID + 1]; uchar sdtr_period_tbl[ASC_MAX_SYN_XFER_NO]; ASC_DVC_CFG *cfg; ASC_SCSI_BIT_ID_TYPE pci_fix_asyn_xfer_always; char redo_scam; ushort res2; uchar dos_int13_table[ASC_MAX_TID + 1]; ASC_DCNT max_dma_count; ASC_SCSI_BIT_ID_TYPE no_scam; ASC_SCSI_BIT_ID_TYPE pci_fix_asyn_xfer; uchar max_sdtr_index; uchar host_init_sdtr_index; struct asc_board *drv_ptr; ASC_DCNT uc_break;} ASC_DVC_VAR;typedef struct asc_dvc_inq_info { uchar type[ASC_MAX_TID + 1][ASC_MAX_LUN + 1];} ASC_DVC_INQ_INFO;typedef struct asc_cap_info { ASC_DCNT lba; ASC_DCNT blk_size;} ASC_CAP_INFO;typedef struct asc_cap_info_array { ASC_CAP_INFO cap_info[ASC_MAX_TID + 1][ASC_MAX_LUN + 1];} ASC_CAP_INFO_ARRAY;#define ASC_MCNTL_NO_SEL_TIMEOUT (ushort)0x0001#define ASC_MCNTL_NULL_TARGET (ushort)0x0002#define ASC_CNTL_INITIATOR (ushort)0x0001#define ASC_CNTL_BIOS_GT_1GB (ushort)0x0002#define ASC_CNTL_BIOS_GT_2_DISK (ushort)0x0004#define ASC_CNTL_BIOS_REMOVABLE (ushort)0x0008#define ASC_CNTL_NO_SCAM (ushort)0x0010#define ASC_CNTL_INT_MULTI_Q (ushort)0x0080#define ASC_CNTL_NO_LUN_SUPPORT (ushort)0x0040#define ASC_CNTL_NO_VERIFY_COPY (ushort)0x0100#define ASC_CNTL_RESET_SCSI (ushort)0x0200#define ASC_CNTL_INIT_INQUIRY (ushort)0x0400#define ASC_CNTL_INIT_VERBOSE (ushort)0x0800#define ASC_CNTL_SCSI_PARITY (ushort)0x1000#define ASC_CNTL_BURST_MODE (ushort)0x2000#define ASC_CNTL_SDTR_ENABLE_ULTRA (ushort)0x4000#define ASC_EEP_DVC_CFG_BEG_VL 2#define A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -