/**************************************************************************** **************************************************************************** *** *** This header was automatically generated from a Linux kernel header *** of the same name, to make information necessary for userspace to *** call into the kernel available to libc. It contains only constants, *** structures, and macros generated from the original header, and thus, *** contains no copyrightable information. *** **************************************************************************** ****************************************************************************/ #ifndef _LINUX_HDREG_H #define _LINUX_HDREG_H #define HDIO_DRIVE_CMD_HDR_SIZE (4 * sizeof(u8)) #define HDIO_DRIVE_HOB_HDR_SIZE (8 * sizeof(u8)) #define HDIO_DRIVE_TASK_HDR_SIZE (8 * sizeof(u8)) #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 4 #define IDE_TASKFILE_STD_IN_FLAGS 0xFE #define IDE_HOB_STD_IN_FLAGS 0x3C #define IDE_TASKFILE_STD_OUT_FLAGS 0xFE #define IDE_HOB_STD_OUT_FLAGS 0x3C typedef unsigned char task_ioreg_t; typedef unsigned long sata_ioreg_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; typedef 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; struct 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; #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 #define WIN_NOP 0x00 #define CFA_REQ_EXT_ERROR_CODE 0x03 #define WIN_SRST 0x08 #define WIN_DEVICE_RESET 0x08 #define WIN_RECAL 0x10 #define WIN_RESTORE WIN_RECAL #define WIN_READ 0x20 #define WIN_READ_ONCE 0x21 #define WIN_READ_LONG 0x22 #define WIN_READ_LONG_ONCE 0x23 #define WIN_READ_EXT 0x24 #define WIN_READDMA_EXT 0x25 #define WIN_READDMA_QUEUED_EXT 0x26 #define WIN_READ_NATIVE_MAX_EXT 0x27 #define WIN_MULTREAD_EXT 0x29 #define WIN_WRITE 0x30 #define WIN_WRITE_ONCE 0x31 #define WIN_WRITE_LONG 0x32 #define WIN_WRITE_LONG_ONCE 0x33 #define WIN_WRITE_EXT 0x34 #define WIN_WRITEDMA_EXT 0x35 #define WIN_WRITEDMA_QUEUED_EXT 0x36 #define WIN_SET_MAX_EXT 0x37 #define CFA_WRITE_SECT_WO_ERASE 0x38 #define WIN_MULTWRITE_EXT 0x39 #define WIN_WRITE_VERIFY 0x3C #define WIN_VERIFY 0x40 #define WIN_VERIFY_ONCE 0x41 #define WIN_VERIFY_EXT 0x42 #define WIN_FORMAT 0x50 #define WIN_INIT 0x60 #define WIN_SEEK 0x70 #define CFA_TRANSLATE_SECTOR 0x87 #define WIN_DIAGNOSE 0x90 #define WIN_SPECIFY 0x91 #define WIN_DOWNLOAD_MICROCODE 0x92 #define WIN_STANDBYNOW2 0x94 #define WIN_STANDBY2 0x96 #define WIN_SETIDLE2 0x97 #define WIN_CHECKPOWERMODE2 0x98 #define WIN_SLEEPNOW2 0x99 #define WIN_PACKETCMD 0xA0 #define WIN_PIDENTIFY 0xA1 #define WIN_QUEUED_SERVICE 0xA2 #define WIN_SMART 0xB0 #define CFA_ERASE_SECTORS 0xC0 #define WIN_MULTREAD 0xC4 #define WIN_MULTWRITE 0xC5 #define WIN_SETMULT 0xC6 #define WIN_READDMA_QUEUED 0xC7 #define WIN_READDMA 0xC8 #define WIN_READDMA_ONCE 0xC9 #define WIN_WRITEDMA 0xCA #define WIN_WRITEDMA_ONCE 0xCB #define WIN_WRITEDMA_QUEUED 0xCC #define CFA_WRITE_MULTI_WO_ERASE 0xCD #define WIN_GETMEDIASTATUS 0xDA #define WIN_ACKMEDIACHANGE 0xDB #define WIN_POSTBOOT 0xDC #define WIN_PREBOOT 0xDD #define WIN_DOORLOCK 0xDE #define WIN_DOORUNLOCK 0xDF #define WIN_STANDBYNOW1 0xE0 #define WIN_IDLEIMMEDIATE 0xE1 #define WIN_STANDBY 0xE2 #define WIN_SETIDLE1 0xE3 #define WIN_READ_BUFFER 0xE4 #define WIN_CHECKPOWERMODE1 0xE5 #define WIN_SLEEPNOW1 0xE6 #define WIN_FLUSH_CACHE 0xE7 #define WIN_WRITE_BUFFER 0xE8 #define WIN_WRITE_SAME 0xE9 #define WIN_FLUSH_CACHE_EXT 0xEA #define WIN_IDENTIFY 0xEC #define WIN_MEDIAEJECT 0xED #define WIN_IDENTIFY_DMA 0xEE #define WIN_SETFEATURES 0xEF #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 #define WIN_SET_MAX 0xF9 #define DISABLE_SEAGATE 0xFB #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 #define SMART_LCYL_PASS 0x4F #define SMART_HCYL_PASS 0xC2 #define SETFEATURES_EN_8BIT 0x01 #define SETFEATURES_EN_WCACHE 0x02 #define SETFEATURES_DIS_DEFECT 0x04 #define SETFEATURES_EN_APM 0x05 #define SETFEATURES_EN_SAME_R 0x22 #define SETFEATURES_DIS_MSN 0x31 #define SETFEATURES_DIS_RETRY 0x33 #define SETFEATURES_EN_AAM 0x42 #define SETFEATURES_RW_LONG 0x44 #define SETFEATURES_SET_CACHE 0x54 #define SETFEATURES_DIS_RLA 0x55 #define SETFEATURES_EN_RI 0x5D #define SETFEATURES_EN_SI 0x5E #define SETFEATURES_DIS_RPOD 0x66 #define SETFEATURES_DIS_ECC 0x77 #define SETFEATURES_DIS_8BIT 0x81 #define SETFEATURES_DIS_WCACHE 0x82 #define SETFEATURES_EN_DEFECT 0x84 #define SETFEATURES_DIS_APM 0x85 #define SETFEATURES_EN_ECC 0x88 #define SETFEATURES_EN_MSN 0x95 #define SETFEATURES_EN_RETRY 0x99 #define SETFEATURES_EN_RLA 0xAA #define SETFEATURES_PREFETCH 0xAB #define SETFEATURES_EN_REST 0xAC #define SETFEATURES_4B_RW_LONG 0xBB #define SETFEATURES_DIS_AAM 0xC2 #define SETFEATURES_EN_RPOD 0xCC #define SETFEATURES_DIS_RI 0xDD #define SETFEATURES_EN_SAME_M 0xDD #define SETFEATURES_DIS_SI 0xDE #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 0xBF struct hd_geometry { unsigned char heads; unsigned char sectors; unsigned short cylinders; unsigned long start; }; #define HDIO_GETGEO 0x0301 #define HDIO_GET_UNMASKINTR 0x0302 #define HDIO_GET_MULTCOUNT 0x0304 #define HDIO_GET_QDMA 0x0305 #define HDIO_SET_XFER 0x0306 #define HDIO_OBSOLETE_IDENTITY 0x0307 #define HDIO_GET_KEEPSETTINGS 0x0308 #define HDIO_GET_32BIT 0x0309 #define HDIO_GET_NOWERR 0x030a #define HDIO_GET_DMA 0x030b #define HDIO_GET_NICE 0x030c #define HDIO_GET_IDENTITY 0x030d #define HDIO_GET_WCACHE 0x030e #define HDIO_GET_ACOUSTIC 0x030f #define HDIO_GET_ADDRESS 0x0310 #define HDIO_GET_BUSSTATE 0x031a #define HDIO_TRISTATE_HWIF 0x031b #define HDIO_DRIVE_RESET 0x031c #define HDIO_DRIVE_TASKFILE 0x031d #define HDIO_DRIVE_TASK 0x031e #define HDIO_DRIVE_CMD 0x031f #define HDIO_DRIVE_CMD_AEB HDIO_DRIVE_TASK #define HDIO_SET_MULTCOUNT 0x0321 #define HDIO_SET_UNMASKINTR 0x0322 #define HDIO_SET_KEEPSETTINGS 0x0323 #define HDIO_SET_32BIT 0x0324 #define HDIO_SET_NOWERR 0x0325 #define HDIO_SET_DMA 0x0326 #define HDIO_SET_PIO_MODE 0x0327 #define HDIO_SCAN_HWIF 0x0328 #define HDIO_SET_NICE 0x0329 #define HDIO_UNREGISTER_HWIF 0x032a #define HDIO_SET_WCACHE 0x032b #define HDIO_SET_ACOUSTIC 0x032c #define HDIO_SET_BUSSTATE 0x032d #define HDIO_SET_QDMA 0x032e #define HDIO_SET_ADDRESS 0x032f enum { BUSSTATE_OFF = 0, BUSSTATE_ON, BUSSTATE_TRISTATE }; #define __NEW_HD_DRIVE_ID struct hd_driveid { unsigned short config; unsigned short cyls; unsigned short reserved2; unsigned short heads; unsigned short track_bytes; unsigned short sector_bytes; unsigned short sectors; unsigned short vendor0; unsigned short vendor1; unsigned short vendor2; unsigned char serial_no[20]; unsigned short buf_type; unsigned short buf_size; unsigned short ecc_bytes; unsigned char fw_rev[8]; unsigned char model[40]; unsigned char max_multsect; unsigned char vendor3; unsigned short dword_io; unsigned char vendor4; unsigned char capability; unsigned short reserved50; unsigned char vendor5; unsigned char tPIO; unsigned char vendor6; unsigned char tDMA; unsigned short field_valid; unsigned short cur_cyls; unsigned short cur_heads; unsigned short cur_sectors; unsigned short cur_capacity0; unsigned short cur_capacity1; unsigned char multsect; unsigned char multsect_valid; unsigned int lba_capacity; unsigned short dma_1word; unsigned short dma_mword; unsigned short eide_pio_modes; unsigned short eide_dma_min; unsigned short eide_dma_time; unsigned short eide_pio; unsigned short eide_pio_iordy; unsigned short words69_70[2]; unsigned short words71_74[4]; unsigned short queue_depth; unsigned short words76_79[4]; unsigned short major_rev_num; unsigned short minor_rev_num; unsigned short command_set_1; unsigned short command_set_2; unsigned short cfsse; unsigned short cfs_enable_1; unsigned short cfs_enable_2; unsigned short csf_default; unsigned short dma_ultra; unsigned short trseuc; unsigned short trsEuc; unsigned short CurAPMvalues; unsigned short mprc; unsigned short hw_config; unsigned short acoustic; unsigned short msrqs; unsigned short sxfert; unsigned short sal; unsigned int spg; unsigned long long lba_capacity_2; unsigned short words104_125[22]; unsigned short last_lun; unsigned short word127; unsigned short dlf; unsigned short csfo; unsigned short words130_155[26]; unsigned short word156; unsigned short words157_159[3]; unsigned short cfa_power; unsigned short words161_175[15]; unsigned short words176_205[30]; unsigned short words206_254[49]; unsigned short integrity_word; }; #define IDE_NICE_DSC_OVERLAP (0) #define IDE_NICE_ATAPI_OVERLAP (1) #define IDE_NICE_0 (2) #define IDE_NICE_1 (3) #define IDE_NICE_2 (4) #endif