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

📄 ata_atapiif.h

📁 epson usb2.0 控制芯片 S1R72V05 固件程序。
💻 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 + -