📄 ataio.h
字号:
extern int reg_pio_data_in_chs( int dev, int cmd,
unsigned int fr, unsigned int sc,
unsigned int cyl, unsigned int head, unsigned int sect,
unsigned int seg, unsigned int off,
long numSect, int multiCnt );
extern int reg_pio_data_in_lba28( int dev, int cmd,
unsigned int fr, unsigned int sc,
unsigned long lba,
unsigned int seg, unsigned int off,
long numSect, int multiCnt );
extern int reg_pio_data_in_lba48( int dev, int cmd,
unsigned int fr, unsigned int sc,
unsigned long lbahi, unsigned long lbalo,
unsigned int seg, unsigned int off,
long numSect, int multiCnt );
// ATA PIO Data Out command functions (for CHS, LBA28 and LBA48)
extern int reg_pio_data_out_chs( int dev, int cmd,
unsigned int fr, unsigned int sc,
unsigned int cyl, unsigned int head, unsigned int sect,
unsigned int seg, unsigned int off,
long numSect, int multiCnt );
extern int reg_pio_data_out_lba28( int dev, int cmd,
unsigned int fr, unsigned int sc,
unsigned long lba,
unsigned int seg, unsigned int off,
long numSect, int multiCnt );
extern int reg_pio_data_out_lba48( int dev, int cmd,
unsigned int fr, unsigned int sc,
unsigned long lbahi, unsigned long lbalo,
unsigned int seg, unsigned int off,
long numSect, int multiCnt );
// ATAPI Packet PIO function
extern int reg_packet( int dev,
unsigned int cpbc,
unsigned int cpseg, unsigned int cpoff,
int dir,
long dpbc,
unsigned int dpseg, unsigned int dpoff,
unsigned long lba );
//**************************************************************
//
// Public data in ATAIOTMR.C
//
//**************************************************************
extern long tmr_time_out; // command time out in seconds
extern long tmr_cmd_start_time; // command start time
//**************************************************************
//
// Public functions in ATAIOTMR.C
//
//**************************************************************
extern long tmr_read_bios_timer( void );
extern void tmr_set_timeout( void );
extern int tmr_chk_timeout( void );
//**************************************************************
//
// Public functions in ATAIOTRC.C
//
//**************************************************************
// number of commands in lookup table
#define TRC_NUM_CMDS 53
// macro to convert a command code to a command index
#define TRC_CC2NDX(cc) (trc_CmdCodeNdx[cc])
// command code to command index table
extern unsigned char trc_CmdCodeNdx[256];
// command history trace entry types used by reg_cmd_info.flg,
// trc_get_cmd_name(), etc.
#define TRC_FLAG_EMPTY 0
#define TRC_FLAG_SRST 1
#define TRC_FLAG_ATA 2
#define TRC_FLAG_ATAPI 3
// command types (protocol types) used by reg_cmd_info.ct,
// trc_cht_types(), etc. this is a bit shift value.
// NOTE: also see trc_get_type_name() in ATAIOTRC.C !
#define TRC_TYPE_ALL 16 // trace all cmd types
#define TRC_TYPE_NONE 0 // don't trace any cmd types
#define TRC_TYPE_ADMAI 1 // ATA DMA In
#define TRC_TYPE_ADMAO 2 // ATA DMA Out
#define TRC_TYPE_AND 3 // ATA PIO Non-Data
#define TRC_TYPE_APDI 4 // ATA PIO Data In
#define TRC_TYPE_APDO 5 // ATA PIO Data Out
#define TRC_TYPE_ASR 6 // ATA Soft Reset
#define TRC_TYPE_PDMAI 7 // ATAPI DMA In
#define TRC_TYPE_PDMAO 8 // ATAPI DMA Out
#define TRC_TYPE_PND 9 // ATAPI PIO Non-Data
#define TRC_TYPE_PPDI 10 // ATAPI PIO Data In
#define TRC_TYPE_PPDO 11 // ATAPI PIO Data Out
extern unsigned char * trc_get_type_name( unsigned char ct );
extern unsigned char * trc_get_cmd_name( unsigned int cc );
extern unsigned char * trc_get_st_bit_name( unsigned char st );
extern unsigned char * trc_get_er_bit_name( unsigned char er );
extern unsigned char * trc_get_err_name( int ec );
extern void trc_err_dump1( void );
extern unsigned char * trc_err_dump2( void );
extern void trc_cht_types( int type );
extern void trc_cht_dump0( void );
extern void trc_cht_dump1( void );
extern unsigned char * trc_cht_dump2( void );
extern void trc_llt_dump0( void );
extern void trc_llt_dump1( void );
extern unsigned char * trc_llt_dump2( void );
//********************************************************************
//
// The remainder of this file is ATADRVR's private data -
// this data and these functions should not be used outside
// of the ATADRVR source files.
//
//********************************************************************
// This macro provides a small delay that is used in several
// places in the ATA command protocols:
#define DELAY400NS { pio_inbyte( CB_ASTAT ); pio_inbyte( CB_ASTAT ); \
pio_inbyte( CB_ASTAT ); pio_inbyte( CB_ASTAT ); }
//**************************************************************
//
// Private data in ATAIOINT.C
//
//**************************************************************
// Interrupt counter (incremented each time there is an interrupt)
extern volatile int int_intr_cntr;
// Interrupt flag (!= 0 if there was an interrupt)
extern volatile int int_intr_flag;
// BMCR/BMIDE Status register I/O address
extern unsigned int int_bmcr_addr;
// BMCR/BMIDE Status register at time of last interrupt
extern volatile unsigned char int_bm_status;
// ATA Status register I/O address
extern unsigned int int_ata_addr;
// ATA Status register at time of last interrupt
extern volatile unsigned char int_ata_status;
//**************************************************************
//
// Private functions in ATAIOINT.C
//
//**************************************************************
extern void int_save_int_vect( void );
extern void int_restore_int_vect( void );
//**************************************************************
//
// Private data in ATAIOSUB.C
//
//**************************************************************
// Private functions in ATAIOSUB.C
extern void sub_zero_return_data( void );
extern void sub_setup_command( void );
extern void sub_trace_command( void );
extern int sub_select( int dev );
extern void sub_atapi_delay( int dev );
extern void sub_xfer_delay( void );
extern unsigned char sub_readBusMstrCmd( void );
extern unsigned char sub_readBusMstrStatus( void );
extern void sub_writeBusMstrCmd( unsigned char x );
extern void sub_writeBusMstrStatus( unsigned char x );
//**************************************************************
//
// Private data in ATAIOTRC.C
//
//**************************************************************
// low level trace entry type values
#define TRC_LLT_NONE 0 // unused entry
#define TRC_LLT_INB 1 // in byte
#define TRC_LLT_OUTB 2 // out byte
#define TRC_LLT_INW 3 // in word
#define TRC_LLT_OUTW 4 // out word
#define TRC_LLT_INSB 5 // rep in byte
#define TRC_LLT_OUTSB 6 // rep out byte
#define TRC_LLT_INSW 7 // rep in word
#define TRC_LLT_OUTSW 8 // rep out word
#define TRC_LLT_INSD 9 // rep in dword
#define TRC_LLT_OUTSD 10 // rep out dword
#define TRC_LLT_S_CFG 11 // start config
#define TRC_LLT_S_RST 12 // start reset
#define TRC_LLT_S_ND 13 // start ND cmd
#define TRC_LLT_S_PDI 14 // start PDI cmd
#define TRC_LLT_S_PDO 15 // start PDO cmd
#define TRC_LLT_S_PI 16 // start packet cmd
#define TRC_LLT_S_RWD 17 // start ata R/W DMA cmd
#define TRC_LLT_S_PID 18 // start packet DMA cmd
#define TRC_LLT_WINT 21 // wait for int
#define TRC_LLT_INTRQ 22 // int received
#define TRC_LLT_PNBSY 23 // poll for not busy
#define TRC_LLT_PRDY 24 // poll for ready
#define TRC_LLT_TOUT 25 // timeout
#define TRC_LLT_ERROR 26 // error detected
#define TRC_LLT_DELAY1 27 // delay ~110ms
#define TRC_LLT_DELAY2 28 // delay 0-55ms
#define TRC_LLT_E_CFG 31 // end config
#define TRC_LLT_E_RST 32 // end reset
#define TRC_LLT_E_ND 33 // end ND cmd
#define TRC_LLT_E_PDI 34 // end PDI cmd
#define TRC_LLT_E_PDO 35 // end PDO cmd
#define TRC_LLT_E_PI 36 // end packet CMD
#define TRC_LLT_E_RWD 37 // end ata R/W DMA cmd
#define TRC_LLT_E_PID 38 // end packet DMA cmd
#define TRC_LLT_DMA1 41 // enable/start ISA DMA channel
#define TRC_LLT_DMA2 42 // poll the ISA DMA TC bit
#define TRC_LLT_DMA3 43 // disable/stop ISA DMA channel
#define TRC_LLT_DEBUG 51 // debug data
#define TRC_LLT_P_CMD 52 // packet cmd code
#define TRC_LLT_R_BM_CR 53 // read bus master cmd reg
#define TRC_LLT_R_BM_SR 54 // read bus master status reg
#define TRC_LLT_W_BM_CR 55 // write bus master cmd reg
#define TRC_LLT_W_BM_SR 56 // write bus master status reg
//**************************************************************
//
// Private functions in ATAIOTRC.C
//
//**************************************************************
extern void trc_cht( void );
extern void trc_llt( unsigned char addr,
unsigned char data,
unsigned char type );
// end ataio.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -