📄 advansys.c
字号:
#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 30typedef struct asc_dvc_var { PortAddr iop_base; ushort err_code; ushort dvc_cntl; ushort bug_fix_cntl; ushort bus_type; Ptr2Func isr_callback; Ptr2Func 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; Ptr2Func saved_ptr2func; ASC_SCSI_BIT_ID_TYPE pci_fix_asyn_xfer_always; char redo_scam; ushort res2; uchar dos_int13_table[ASC_MAX_TID + 1]; ulong 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; ulong drv_ptr; ulong uc_break; ulong res7; ulong res8;} ASC_DVC_VAR;typedef int (* ASC_ISR_CALLBACK) (ASC_DVC_VAR asc_ptr_type *, ASC_QDONE_INFO *);typedef int (* ASC_EXE_CALLBACK) (ASC_DVC_VAR asc_ptr_type *, ASC_SCSI_Q *);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 { ulong lba; ulong 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 ASC_EEP_MAX_DVC_ADDR_VL 15#define ASC_EEP_DVC_CFG_BEG 32#define ASC_EEP_MAX_DVC_ADDR 45#define ASC_EEP_DEFINED_WORDS 10#define ASC_EEP_MAX_ADDR 63#define ASC_EEP_RES_WORDS 0#define ASC_EEP_MAX_RETRY 20#define ASC_MAX_INIT_BUSY_RETRY 8#define ASC_EEP_ISA_PNP_WSIZE 16typedef struct asceep_config { ushort cfg_lsw; ushort cfg_msw; uchar init_sdtr; uchar disc_enable; uchar use_cmd_qng; uchar start_motor; uchar max_total_qng; uchar max_tag_qng; uchar bios_scan; uchar power_up_wait; uchar no_scam; uchar chip_scsi_id:4; uchar isa_dma_speed:4; uchar dos_int13_table[ASC_MAX_TID + 1]; uchar adapter_info[6]; ushort cntl; ushort chksum;} ASCEEP_CONFIG;#define ASC_PCI_CFG_LSW_SCSI_PARITY 0x0800#define ASC_PCI_CFG_LSW_BURST_MODE 0x0080#define ASC_PCI_CFG_LSW_INTR_ABLE 0x0020#define ASC_EEP_CMD_READ 0x80#define ASC_EEP_CMD_WRITE 0x40#define ASC_EEP_CMD_WRITE_ABLE 0x30#define ASC_EEP_CMD_WRITE_DISABLE 0x00#define ASC_OVERRUN_BSIZE 0x00000048UL#define ASC_CTRL_BREAK_ONCE 0x0001#define ASC_CTRL_BREAK_STAY_IDLE 0x0002#define ASCV_MSGOUT_BEG 0x0000#define ASCV_MSGOUT_SDTR_PERIOD (ASCV_MSGOUT_BEG+3)#define ASCV_MSGOUT_SDTR_OFFSET (ASCV_MSGOUT_BEG+4)#define ASCV_BREAK_SAVED_CODE (ushort)0x0006#define ASCV_MSGIN_BEG (ASCV_MSGOUT_BEG+8)#define ASCV_MSGIN_SDTR_PERIOD (ASCV_MSGIN_BEG+3)#define ASCV_MSGIN_SDTR_OFFSET (ASCV_MSGIN_BEG+4)#define ASCV_SDTR_DATA_BEG (ASCV_MSGIN_BEG+8)#define ASCV_SDTR_DONE_BEG (ASCV_SDTR_DATA_BEG+8)#define ASCV_MAX_DVC_QNG_BEG (ushort)0x0020#define ASCV_BREAK_ADDR (ushort)0x0028#define ASCV_BREAK_NOTIFY_COUNT (ushort)0x002A#define ASCV_BREAK_CONTROL (ushort)0x002C#define ASCV_BREAK_HIT_COUNT (ushort)0x002E#define ASCV_ASCDVC_ERR_CODE_W (ushort)0x0030#define ASCV_MCODE_CHKSUM_W (ushort)0x0032#define ASCV_MCODE_SIZE_W (ushort)0x0034#define ASCV_STOP_CODE_B (ushort)0x0036#define ASCV_DVC_ERR_CODE_B (ushort)0x0037#define ASCV_OVERRUN_PADDR_D (ushort)0x0038#define ASCV_OVERRUN_BSIZE_D (ushort)0x003C#define ASCV_HALTCODE_W (ushort)0x0040#define ASCV_CHKSUM_W (ushort)0x0042#define ASCV_MC_DATE_W (ushort)0x0044#define ASCV_MC_VER_W (ushort)0x0046#define ASCV_NEXTRDY_B (ushort)0x0048#define ASCV_DONENEXT_B (ushort)0x0049#define ASCV_USE_TAGGED_QNG_B (ushort)0x004A#define ASCV_SCSIBUSY_B (ushort)0x004B#define ASCV_Q_DONE_IN_PROGRESS_B (ushort)0x004C#define ASCV_CURCDB_B (ushort)0x004D#define ASCV_RCLUN_B (ushort)0x004E#define ASCV_BUSY_QHEAD_B (ushort)0x004F#define ASCV_DISC1_QHEAD_B (ushort)0x0050#define ASCV_DISC_ENABLE_B (ushort)0x0052#define ASCV_CAN_TAGGED_QNG_B (ushort)0x0053#define ASCV_HOSTSCSI_ID_B (ushort)0x0055#define ASCV_MCODE_CNTL_B (ushort)0x0056#define ASCV_NULL_TARGET_B (ushort)0x0057#define ASCV_FREE_Q_HEAD_W (ushort)0x0058#define ASCV_DONE_Q_TAIL_W (ushort)0x005A#define ASCV_FREE_Q_HEAD_B (ushort)(ASCV_FREE_Q_HEAD_W+1)#define AS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -