📄 advio.h
字号:
// config and reset funcitons
extern int reg_config( void );
extern int reg_reset( int skipFlag );
// ATA Non-Data command funnctions (for CHS, LBA28 and LBA48)
extern int reg_non_data_chs( int cmd,
unsigned int fr, unsigned int sc,
unsigned int cyl, unsigned int head, unsigned int sect );
extern int reg_non_data_lba28( int cmd,
unsigned int fr, unsigned int sc,
unsigned long lba );
extern int reg_non_data_lba48( int cmd,
unsigned int fr, unsigned int sc,
unsigned long lbahi, unsigned long lbalo );
// ATA PIO Data In command functions (for CHS, LBA28 and LBA48)
extern int reg_pio_data_in_chs( 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 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 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 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 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 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(
unsigned int cpbc,
unsigned int cpseg, unsigned int cpoff,
int dir,
long dpbc,
unsigned int dpseg, unsigned int dpoff,
unsigned long lba );
//--------------------------------------------------------------
// ADVIOTMR.C
//--------------------------------------------------------------
// Public data/functions in ADVIOTMR.C
extern long tmr_read_bios_timer( void );
extern void tmr_set_timeout( void );
extern int tmr_chk_timeout( void );
//--------------------------------------------------------------
// ADVIOTRC.C
//--------------------------------------------------------------
// Public data/functions in ADVIOTRC.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 (see flg).
#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 ct,
// trc_cht_types(), etc. this is a bit shift value.
// NOTE: also see trc_get_type_name() in ADVIOTRC.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 ADVIOINT.C
//
//**************************************************************
// Private data/functions in ADVIOINT.C
extern void int_on( void );
extern void int_off( void );
extern void int_clear( void );
extern int int_check( void );
//**************************************************************
//
// Private data in ADVIOSUB.C
//
//**************************************************************
// Private functions in ADVIOSUB.C
extern void sub_zero_return_data( void );
extern void sub_setup_command( void );
extern void sub_trace_command( void );
extern int sub_select( 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 ADVIOTRC.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_DEBUG 41 // debug data
#define TRC_LLT_P_CMD 42 // packet cmd code
#define TRC_LLT_R_BM_CR 43 // read bus master cmd reg
#define TRC_LLT_R_BM_SR 44 // read bus master status reg
#define TRC_LLT_W_BM_CR 45 // write bus master cmd reg
#define TRC_LLT_W_BM_SR 46 // write bus master status reg
//**************************************************************
//
// Private functions in ADVIOTRC.C
//
//**************************************************************
extern void trc_cht( void );
extern void trc_llt( unsigned char addr,
unsigned char data,
unsigned char type );
// end advio.h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -