📄 ata_atapiif.h
字号:
/*
* description : ATA/ATAPI Interface
* Maker : Hideyuki Nekoshima
* Copyright : (C)2003,SEIKO EPSON Corp. All Rights Reserved.
*
* description : ATA/ATAPI Interface
* Maker : Hideyuki Nekoshima
* Copyright : (C)2003,SEIKO EPSON Corp. All Rights Reserved.
*/
#ifndef ATA_IF_H
#define ATA_IF_H
#include "SPRDEF.h"
#ifdef S1R72V05
#include "Reg72V05.h"
#else
#include "Reg72V03.h"
#endif
/* PASS IF function list */
/* ATA/ATAPI Interface ATA Command Block */
typedef struct atacmd{
UCHAR reg01; /* Features */
UCHAR reg02; /* Sector Count */
UCHAR reg03; /* Sector Number or LBA */
UCHAR reg04; /* Cylinder Low or LBA */
UCHAR reg05; /* Cylinder Hight or LBA */
UCHAR reg06; /* Device/Header or Device/LBA */
UCHAR reg07; /* Command */
UCHAR BigDriveReg02; /* Sector Count for BigDrive */
UCHAR BigDriveReg03; /* Sector Number or LBA for BigDrive */
UCHAR BigDriveReg04; /* Cylinder Low or LBA for BigDrive*/
/* Cylinder Low or LBA for BigDrive */
UCHAR BigDriveReg05; /* Cylinder Low or LBA for BigDrive*/
UCHAR BigDriveReg06; /* Device/Header or Device/LBA for BigDrive */
}ATA_IFATACMD;
typedef struct atastatus{
UCHAR status; /* IDE status */
UCHAR IntReasen; /* IDE Interrupt reason */
UCHAR error; /* Error */
UCHAR busStatus; /* IDE bus information */
USHORT transfersize; /* Number of bytes that required by device data transfer */
}ATA_IFSTATUS;
typedef struct atatranpara{
USHORT transfersize; /* Number of data transfer bytes */
UCHAR direction; /* Transfer derection */
UCHAR reserve; /* Reserved */
ULONG dataPointer; /* Data buffer address */
}ATA_IFTRANPARA;
typedef struct atainterrupt{
UCHAR ide_int_stat;
}ATA_IFINTERRUPT;
/* ATA/ATAPI IF function list */
extern LONG ATA_IFReset( void );
extern LONG ATA_IFOpen( void );
extern LONG ATA_IFLockPort( USHORT portNumber );
extern LONG ATA_IFUnlockPort( USHORT portNumber );
extern LONG ATA_IFSelResetDevice( USHORT portNumber, UCHAR selectDevice);
extern LONG ATA_IFATACommandOutA( USHORT portNumber, UCHAR selectDevice, UCHAR pioMode, ATA_IFATACMD *pATAIFATACmd );
extern LONG ATA_IFAtapiCommandOutA( USHORT portNumber, UCHAR selectDevice, UCHAR transferMode, UCHAR pioMode, UCHAR *pATAIFAtapiCmd );
extern LONG ATA_IFGetStatus( USHORT portNumber, UCHAR selectDevice, ATA_IFSTATUS *pATAIFStatus );
extern LONG ATA_IFPIODataTransfer( USHORT portNumber, UCHAR selectDevice, ATA_IFTRANPARA *pTranPara );
LONG ATA_IFGetInterrupt( UCHAR mainIntEnb, ATA_IFINTERRUPT *pATAIFInterrupt);
LONG ATA_IFSetIntEvent( UCHAR );
LONG ATA_IFIdeTerm( UCHAR );
#define ATA_IF_MAX_PORT 0x01 /* number of ATA/ATAPI ports */
#define ATA_IF_PORT_LOCK 0x01 /* PORT LOCK */
#define ATA_IF_PORT_UNLOCK 0x00 /* PORT UNLOCK */
#define ATA_IF_MASTER 0xE0 /* ATA/ATAPI Master Drive */
#define ATA_IF_SLAVE 0xF0 /* ATA\ATAPI Slave Drive */
#define ATA_IF_MASTER_BIG 0xE1 /* ATA/ATAPI Master Drive */
#define ATA_IF_SLAVE_BIG 0xF1 /* ATA/ATAPI Slave Drive */
#define ATA_IF_PIO_MODE0 0x00 /* PIO Transfer Mode */
#define ATA_IF_PIO_MODE1 0x01 /* PIO Transfer Mode */
#define ATA_IF_PIO_MODE2 0x02 /* PIO Transfer Mode */
#define ATA_IF_PIO_MODE3 0x03 /* PIO Transfer Mode */
#define ATA_IF_PIO_MODE4 0x04 /* PIO Transfer Mode */
#define ATA_IF_IDE_IN 0x00 /* IDE Data Transfer Direction IN */
#define ATA_IF_IDE_OUT 0x01 /* IDE Data Transfer Direction OUT */
#define ATA_IF_PIO 0x00 /* IDE PIO Data Transfer */
#define ATA_IF_DMA 0x01 /* IDE DMA Data Transfer */
#define IDE_CS00 0x00
#define IDE_CS01 0x01
#define IDE_CS02 0x02
#define IDE_CS03 0x03
#define IDE_CS04 0x04
#define IDE_CS05 0x05
#define IDE_CS06 0x06
#define IDE_CS07 0x07
#define IDE_CS10 0x08
#define IDE_CS11 0x09
#define IDE_CS12 0x0A
#define IDE_CS13 0x0B
#define IDE_CS14 0x0C
#define IDE_CS15 0x0D
#define IDE_CS16 0x0E
#define IDE_CS17 0x0F
#define ATA_IF_TERM_ON 0x01
#define ATA_IF_TERM_OFF 0x02
#endif /* ATA_IF_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -