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

📄 ata.h

📁 Sunplus 8202S source code.
💻 H
字号:
#ifndef __ATA_H
#define __ATA_H

#include "config.h"

#define	PRM	(1)	/* primary device or not */
#define	DEV	(0)	/* device 0 or not */
 
#if	defined(__BORLANDC__)
/* IDE I/O address:read */
#define	IDE_DATA			(0x00)
#define	IDE_ERROR			(0x01)
#define	IDE_SECTOR_CNT			(0x02)
#define	IDE_SECTOR_NUM			(0x03)
#define	IDE_CYLINDER_LO			(0x04)
#define	IDE_CYLINDER_HI			(0x05)
#define	IDE_DEVICE_HEAD			(0x06)
#define	IDE_STATUS			(0x07)
#define	IDE_ALT_STATUS			(0x206)

/* IDE I/O address:write */
#define	IDE_FEATURE	IDE_ERROR
#define	IDE_COMMAND	IDE_STATUS
#define	IDE_DEVICE_CTRL	IDE_ALT_STATUS

/* packet I/O address */
#define	IDEPORT(n,x)	(((n) ? 0x170 : 0x1f0) + (UINT16) (x))
#endif	/*__BORLANDC__*/



#if	defined(__EMU__)
/* IDE I/O address:read */
#define	IDE_DATA			(0x00+0x10)
#define	IDE_ERROR			(0x01+0x10)
#define	IDE_SECTOR_CNT			(0x02+0x10)
#define	IDE_SECTOR_NUM			(0x03+0x10)
#define	IDE_CYLINDER_LO			(0x04+0x10)
#define	IDE_CYLINDER_HI			(0x05+0x10)
#define	IDE_DEVICE_HEAD			(0x06+0x10)
#define	IDE_STATUS			(0x07+0x10)
#define	IDE_ALT_STATUS			(0x0E)

/* IDE I/O address:write */
#define	IDE_FEATURE			IDE_ERROR
#define	IDE_COMMAND			IDE_STATUS
#define	IDE_DEVICE_CTRL	IDE_ALT_STATUS

// DVDDSP_CONFIG
#define ATAPI_DEV_HRESET		(1<<0)
#define ATAPI_HOST_RESET		(1<<1)
#define ATAPI_CSS_ENABLE		(1<<2)
#define ATAPI_FIFO_FLUSH		(1<<3)
#define ATAPI_CPPM_ENABLE       (1<<8)

#define CDDSP_FIFOIN          (1<<10)

#ifdef  DVD728
#define PIO_MODE4               (1<<11)
#define PIO_MODE3               (0<<11)
#define PIO_MODE2               (3<<11)
#define PIO_MODE2_REG           (2<<11)
#define ATAPI_INTR_MODE     	(1<<4)
#define ATAPI_DEVICE_INT    	(1<<5)
#define ATAPI_ADV_POLLING		(1<<5)
#else

#define PIO_MODE4			      (0<<11)
#define PIO_MODE3			      (1<<11)
#define PIO_MODE2			      (2<<11)

#define ATAPI_INTR_MODE     	(0)
#define ATAPI_DEVICE_INT    	(0)
#define ATAPI_ADV_POLLING		(0)

#endif


#define E10MHZ_MODE           (3<<11)

#define UDE_ASYNC_MODE        (1<<14)
#define UDE_SYNC_MODE         (0<<14)

#define ATAPI_DEVICE          (0<<15)
#define UDE_DEVICE            (1<<15)

// DVDDSP_FUNCTION
#define DEVICE_INT			(1<<12)

#define ATAPI_READ		   	(1<<13)
#define ATAPI_WRITE			(0<<13)

#define REG_MODE			(1<<14)
#define DATA_MODE			(0<<14)

#define HOST_START			(1<<15)
#define HOST_BUSY			(1<<15)

#endif	/*__EMU__*/

//#define	IDEC_IDENTIFY		0xec
//#define 	IDEC_PACKET             0xa0
//#define	IDEC_IDENTIFY_PACKET	0xa1

#define STATUS_BSY              (0x80)
#define STATUS_DRDY             (0x40)
#define STATUS_DF               (0x20)
#define STATUS_DRQ              (0x08)
#define STATUS_ERR              (0x01)

/* packet command */
//#define PKTC_READ10		0x28
//#define PKTC_READ12		0xa8
//#define PKTC_LOAD		0xa6

// PUBLIC
#define ATA_DMA_MODE			(1<<0)
#define ATA_POLLING_MODE		(1<<4)
#define ATA_INTR_MODE			(0<<4)
#define ATA_NO_BYTECNT			(1<<5)
#define ATA_PIO_DATAIN			(1<<8)

// ATA command
#define ATAC_CHECK_PWR			0xe5
#define ATAC_DIAGNOSTIC			0x90
#define ATAC_SET_FEA			0xef
#define ATAC_ID_PACK			0xa1
#define ATAC_ID_DEV				0xec
#define ATAC_IDLE_IMME			0xe1
#define ATAC_STAND_IMME			0xe0
#define ATAC_SLEEP				0xe6
#define ATAC_RD_SEC				0x20
#define ATAC_WR_SEC				0x30
#define ATAC_WR_DMA				0xca

// ATAPI command
#define PKTC_REQ_SENSE			0x03
#define PKTC_READ_CAPACITY		0x25
#define PKTC_READ10				0x28
#define PKTC_WRITE10			0x2a


#endif/*__ATA_H*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -