⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 advio.h

📁 pc机上经由pci连接的ata和atapi设备驱动
💻 H
📖 第 1 页 / 共 3 页
字号:

// 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 + -