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

📄 hdreg.h

📁 linux得一些常用命令,以及linux环境下的c编程
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef _LINUX_HDREG_H#define _LINUX_HDREG_H/* * This file contains some defines for the AT-hd-controller. * Various sources.   */#define HD_IRQ 14			/* the standard disk interrupt *//* ide.c has its own port definitions in "ide.h" *//* Hd controller regs. Ref: IBM AT Bios-listing */#define HD_DATA		0x1f0		/* _CTL when writing */#define HD_ERROR	0x1f1		/* see err-bits */#define HD_NSECTOR	0x1f2		/* nr of sectors to read/write */#define HD_SECTOR	0x1f3		/* starting sector */#define HD_LCYL		0x1f4		/* starting cylinder */#define HD_HCYL		0x1f5		/* high byte of starting cyl */#define HD_CURRENT	0x1f6		/* 101dhhhh , d=drive, hhhh=head */#define HD_STATUS	0x1f7		/* see status-bits */#define HD_FEATURE	HD_ERROR	/* same io address, read=error, write=feature */#define HD_PRECOMP	HD_FEATURE	/* obsolete use of this port - predates IDE */#define HD_COMMAND	HD_STATUS	/* same io address, read=status, write=cmd */#define HD_CMD		0x3f6		/* used for resets */#define HD_ALTSTATUS	0x3f6		/* same as HD_STATUS but doesn't clear irq *//* remainder is shared between hd.c, ide.c, ide-cd.c, and the hdparm utility *//* Bits of HD_STATUS */#define ERR_STAT		0x01#define INDEX_STAT		0x02#define ECC_STAT		0x04	/* Corrected error */#define DRQ_STAT		0x08#define SEEK_STAT		0x10#define WRERR_STAT		0x20#define READY_STAT		0x40#define BUSY_STAT		0x80/* Bits for HD_ERROR */#define MARK_ERR		0x01	/* Bad address mark */#define TRK0_ERR		0x02	/* couldn't find track 0 */#define ABRT_ERR		0x04	/* Command aborted */#define MCR_ERR			0x08	/* media change request */#define ID_ERR			0x10	/* ID field not found */#define MC_ERR			0x20	/* media changed */#define ECC_ERR			0x40	/* Uncorrectable ECC error */#define BBD_ERR			0x80	/* pre-EIDE meaning:  block marked bad */#define ICRC_ERR		0x80	/* new meaning:  CRC error during transfer *//* * Command Header sizes for IOCTL commands *	HDIO_DRIVE_CMD, HDIO_DRIVE_TASK, and HDIO_DRIVE_TASKFILE */#if 0#include <asm/hdreg.h>typedef ide_ioreg_t task_ioreg_t;#elsetypedef unsigned char task_ioreg_t;#endif#define HDIO_DRIVE_CMD_HDR_SIZE		4*sizeof(task_ioreg_t)#define HDIO_DRIVE_TASK_HDR_SIZE	8*sizeof(task_ioreg_t)#define HDIO_DRIVE_HOB_HDR_SIZE		8*sizeof(task_ioreg_t)#define IDE_DRIVE_TASK_INVALID		-1#define IDE_DRIVE_TASK_NO_DATA		0#define IDE_DRIVE_TASK_SET_XFER		1#define IDE_DRIVE_TASK_IN		2#define IDE_DRIVE_TASK_OUT		3#define IDE_DRIVE_TASK_RAW_WRITE	4struct hd_drive_cmd_hdr {	task_ioreg_t command;	task_ioreg_t sector_number;	task_ioreg_t feature;	task_ioreg_t sector_count;};typedef struct hd_drive_task_hdr {	task_ioreg_t data;	task_ioreg_t feature;	task_ioreg_t sector_count;	task_ioreg_t sector_number;	task_ioreg_t low_cylinder;	task_ioreg_t high_cylinder;	task_ioreg_t device_head;	task_ioreg_t command;} task_struct_t;typedef struct hd_drive_hob_hdr {	task_ioreg_t data;	task_ioreg_t feature;	task_ioreg_t sector_count;	task_ioreg_t sector_number;	task_ioreg_t low_cylinder;	task_ioreg_t high_cylinder;	task_ioreg_t device_head;	task_ioreg_t control;} hob_struct_t;typedef union ide_reg_valid_s {	unsigned all				: 16;	struct {		unsigned data			: 1;		unsigned error_feature		: 1;		unsigned sector			: 1;		unsigned nsector		: 1;		unsigned lcyl			: 1;		unsigned hcyl			: 1;		unsigned select			: 1;		unsigned status_command		: 1;		unsigned data_hob		: 1;		unsigned error_feature_hob	: 1;		unsigned sector_hob		: 1;		unsigned nsector_hob		: 1;		unsigned lcyl_hob		: 1;		unsigned hcyl_hob		: 1;		unsigned select_hob		: 1;		unsigned control_hob		: 1;	} b;} ide_reg_valid_t;/* * Define standard taskfile in/out register */#define IDE_TASKFILE_STD_OUT_FLAGS	0xFE#define IDE_TASKFILE_STD_IN_FLAGS	0xFE#define IDE_HOB_STD_OUT_FLAGS		0xC0#define IDE_HOB_STD_IN_FLAGS		0xC0typedef struct ide_task_request_s {	task_ioreg_t	io_ports[8];	task_ioreg_t	hob_ports[8];	ide_reg_valid_t	out_flags;	ide_reg_valid_t	in_flags;	int		data_phase;	int		req_cmd;	unsigned long	out_size;	unsigned long	in_size;} ide_task_request_t;typedef struct ide_ioctl_request_s {	ide_task_request_t	*task_request;	unsigned char		*out_buffer;	unsigned char		*in_buffer;} ide_ioctl_request_t;#define TASKFILE_INVALID		0x7fff#define TASKFILE_48			0x8000#define TASKFILE_NO_DATA		0x0000#define TASKFILE_IN			0x0001#define TASKFILE_MULTI_IN		0x0002#define TASKFILE_OUT			0x0004#define TASKFILE_MULTI_OUT		0x0008#define TASKFILE_IN_OUT			0x0010#define TASKFILE_IN_DMA			0x0020#define TASKFILE_OUT_DMA		0x0040#define TASKFILE_IN_DMAQ		0x0080#define TASKFILE_OUT_DMAQ		0x0100#define TASKFILE_P_IN			0x0200#define TASKFILE_P_OUT			0x0400#define TASKFILE_P_IN_DMA		0x0800#define TASKFILE_P_OUT_DMA		0x1000#define TASKFILE_P_IN_DMAQ		0x2000#define TASKFILE_P_OUT_DMAQ		0x4000/* ATA/ATAPI Commands pre T13 Spec */#define WIN_NOP				0x00#define CFA_REQ_EXT_ERROR_CODE		0x03 /* CFA Request Extended Error Code */#define WIN_SRST			0x08 /* ATAPI soft reset command */#define WIN_DEVICE_RESET		0x08#define WIN_RESTORE			0x10#define WIN_READ			0x20 /* 28-Bit */#define WIN_READ_EXT			0x24 /* 48-Bit */#define WIN_READDMA_EXT			0x25 /* 48-Bit */#define WIN_READDMA_QUEUED_EXT		0x26 /* 48-Bit */#define WIN_READ_NATIVE_MAX_EXT		0x27 /* 48-Bit */#define WIN_MULTREAD_EXT		0x29 /* 48-Bit */#define WIN_WRITE			0x30 /* 28-Bit */#define WIN_WRITE_EXT			0x34 /* 48-Bit */#define WIN_WRITEDMA_EXT		0x35 /* 48-Bit */#define WIN_WRITEDMA_QUEUED_EXT		0x36 /* 48-Bit */#define WIN_SET_MAX_EXT			0x37 /* 48-Bit */#define CFA_WRITE_SECT_WO_ERASE		0x38 /* CFA Write Sectors without erase */#define WIN_MULTWRITE_EXT		0x39 /* 48-Bit */#define WIN_WRITE_VERIFY		0x3C /* 28-Bit */#define WIN_VERIFY			0x40 /* 28-Bit - Read Verify Sectors */#define WIN_VERIFY_EXT			0x42 /* 48-Bit */#define WIN_FORMAT			0x50#define WIN_INIT			0x60#define WIN_SEEK			0x70#define CFA_TRANSLATE_SECTOR		0x87 /* CFA Translate Sector */#define WIN_DIAGNOSE			0x90#define WIN_SPECIFY			0x91 /* set drive geometry translation */#define WIN_DOWNLOAD_MICROCODE		0x92#define WIN_STANDBYNOW2			0x94#define WIN_SETIDLE2			0x97#define WIN_CHECKPOWERMODE2		0x98#define WIN_SLEEPNOW2			0x99#define WIN_PACKETCMD			0xA0 /* Send a packet command. */#define WIN_PIDENTIFY			0xA1 /* identify ATAPI device	*/#define WIN_QUEUED_SERVICE		0xA2#define WIN_SMART			0xB0 /* self-monitoring and reporting */#define CFA_ERASE_SECTORS       	0xC0#define WIN_MULTREAD			0xC4 /* read sectors using multiple mode*/#define WIN_MULTWRITE			0xC5 /* write sectors using multiple mode */#define WIN_SETMULT			0xC6 /* enable/disable multiple mode */#define WIN_READDMA_QUEUED		0xC7 /* read sectors using Queued DMA transfers */#define WIN_READDMA			0xC8 /* read sectors using DMA transfers */#define WIN_WRITEDMA			0xCA /* write sectors using DMA transfers */#define WIN_WRITEDMA_QUEUED		0xCC /* write sectors using Queued DMA transfers */#define CFA_WRITE_MULTI_WO_ERASE	0xCD /* CFA Write multiple without erase */#define WIN_GETMEDIASTATUS		0xDA	#define WIN_DOORLOCK			0xDE /* lock door on removable drives */#define WIN_DOORUNLOCK			0xDF /* unlock door on removable drives */#define WIN_STANDBYNOW1			0xE0#define WIN_IDLEIMMEDIATE		0xE1 /* force drive to become "ready" */#define WIN_STANDBY             	0xE2 /* Set device in Standby Mode */#define WIN_SETIDLE1			0xE3#define WIN_READ_BUFFER			0xE4 /* force read only 1 sector */#define WIN_CHECKPOWERMODE1		0xE5#define WIN_SLEEPNOW1			0xE6#define WIN_FLUSH_CACHE			0xE7#define WIN_WRITE_BUFFER		0xE8 /* force write only 1 sector */#define WIN_FLUSH_CACHE_EXT		0xEA /* 48-Bit */#define WIN_IDENTIFY			0xEC /* ask drive to identify itself	*/#define WIN_MEDIAEJECT			0xED#define WIN_IDENTIFY_DMA		0xEE /* same as WIN_IDENTIFY, but DMA */#define WIN_SETFEATURES			0xEF /* set special drive features */#define EXABYTE_ENABLE_NEST		0xF0#define WIN_SECURITY_SET_PASS		0xF1#define WIN_SECURITY_UNLOCK		0xF2#define WIN_SECURITY_ERASE_PREPARE	0xF3#define WIN_SECURITY_ERASE_UNIT		0xF4#define WIN_SECURITY_FREEZE_LOCK	0xF5#define WIN_SECURITY_DISABLE		0xF6#define WIN_READ_NATIVE_MAX		0xF8 /* return the native maximum address */#define WIN_SET_MAX			0xF9#define DISABLE_SEAGATE			0xFB/* WIN_SMART sub-commands */#define SMART_READ_VALUES		0xD0#define SMART_READ_THRESHOLDS		0xD1#define SMART_AUTOSAVE			0xD2#define SMART_SAVE			0xD3#define SMART_IMMEDIATE_OFFLINE		0xD4#define SMART_READ_LOG_SECTOR		0xD5#define SMART_WRITE_LOG_SECTOR		0xD6#define SMART_WRITE_THRESHOLDS		0xD7#define SMART_ENABLE			0xD8#define SMART_DISABLE			0xD9#define SMART_STATUS			0xDA#define SMART_AUTO_OFFLINE		0xDB/* Password used in TF4 & TF5 executing SMART commands */#define SMART_LCYL_PASS			0x4F#define SMART_HCYL_PASS			0xC2		/* WIN_SETFEATURES sub-commands */#define SETFEATURES_EN_WCACHE	0x02	/* Enable write cache */#define SETFEATURES_XFER	0x03	/* Set transfer mode */#	define XFER_UDMA_7	0x47	/* 0100|0111 */#	define XFER_UDMA_6	0x46	/* 0100|0110 */#	define XFER_UDMA_5	0x45	/* 0100|0101 */#	define XFER_UDMA_4	0x44	/* 0100|0100 */#	define XFER_UDMA_3	0x43	/* 0100|0011 */#	define XFER_UDMA_2	0x42	/* 0100|0010 */#	define XFER_UDMA_1	0x41	/* 0100|0001 */#	define XFER_UDMA_0	0x40	/* 0100|0000 */#	define XFER_MW_DMA_2	0x22	/* 0010|0010 */#	define XFER_MW_DMA_1	0x21	/* 0010|0001 */#	define XFER_MW_DMA_0	0x20	/* 0010|0000 */#	define XFER_SW_DMA_2	0x12	/* 0001|0010 */#	define XFER_SW_DMA_1	0x11	/* 0001|0001 */#	define XFER_SW_DMA_0	0x10	/* 0001|0000 */#	define XFER_PIO_4	0x0C	/* 0000|1100 */#	define XFER_PIO_3	0x0B	/* 0000|1011 */#	define XFER_PIO_2	0x0A	/* 0000|1010 */#	define XFER_PIO_1	0x09	/* 0000|1001 */#	define XFER_PIO_0	0x08	/* 0000|1000 */#	define XFER_PIO_SLOW	0x00	/* 0000|0000 */#define SETFEATURES_DIS_DEFECT	0x04	/* Disable Defect Management */#define SETFEATURES_EN_APM	0x05	/* Enable advanced power management */#define SETFEATURES_DIS_MSN	0x31	/* Disable Media Status Notification */#define SETFEATURES_EN_AAM	0x42	/* Enable Automatic Acoustic Management */#define SETFEATURES_DIS_RLA	0x55	/* Disable read look-ahead feature */#define SETFEATURES_EN_RI	0x5D	/* Enable release interrupt */#define SETFEATURES_EN_SI	0x5E	/* Enable SERVICE interrupt */#define SETFEATURES_DIS_RPOD	0x66	/* Disable reverting to power on defaults */#define SETFEATURES_DIS_WCACHE	0x82	/* Disable write cache */#define SETFEATURES_EN_DEFECT	0x84	/* Enable Defect Management */#define SETFEATURES_DIS_APM	0x85	/* Disable advanced power management */#define SETFEATURES_EN_MSN	0x95	/* Enable Media Status Notification */#define SETFEATURES_EN_RLA	0xAA	/* Enable read look-ahead feature */#define SETFEATURES_PREFETCH	0xAB	/* Sets drive prefetch value */#define SETFEATURES_DIS_AAM	0xC2	/* Disable Automatic Acoustic Management */#define SETFEATURES_EN_RPOD	0xCC	/* Enable reverting to power on defaults */#define SETFEATURES_DIS_RI	0xDD	/* Disable release interrupt */#define SETFEATURES_DIS_SI	0xDE	/* Disable SERVICE interrupt *//* WIN_SECURITY sub-commands */#define SECURITY_SET_PASSWORD		0xBA#define SECURITY_UNLOCK			0xBB#define SECURITY_ERASE_PREPARE		0xBC#define SECURITY_ERASE_UNIT		0xBD#define SECURITY_FREEZE_LOCK		0xBE#define SECURITY_DISABLE_PASSWORD	0xBFstruct hd_geometry {      unsigned char heads;      unsigned char sectors;      unsigned short cylinders;      unsigned long start;};/* BIG GEOMETRY */struct hd_big_geometry {

⌨️ 快捷键说明

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