|
|
1.1 ! root 1: /* ! 2: * this header holds data structures as dictated by spec ! 3: */ ! 4: #ifndef HDREG_H ! 5: #define HDREG_H ! 6: ! 7: struct hd_driveid { ! 8: unsigned short config; /* lots of obsolete bit flags */ ! 9: unsigned short cyls; /* Obsolete, "physical" cyls */ ! 10: unsigned short reserved2; /* reserved (word 2) */ ! 11: unsigned short heads; /* Obsolete, "physical" heads */ ! 12: unsigned short track_bytes; /* unformatted bytes per track */ ! 13: unsigned short sector_bytes; /* unformatted bytes per sector */ ! 14: unsigned short sectors; /* Obsolete, "physical" sectors per track */ ! 15: unsigned short vendor0; /* vendor unique */ ! 16: unsigned short vendor1; /* vendor unique */ ! 17: unsigned short vendor2; /* Retired vendor unique */ ! 18: unsigned char serial_no[20]; /* 0 = not_specified */ ! 19: unsigned short buf_type; /* Retired */ ! 20: unsigned short buf_size; /* Retired, 512 byte increments ! 21: * 0 = not_specified ! 22: */ ! 23: unsigned short ecc_bytes; /* for r/w long cmds; 0 = not_specified */ ! 24: unsigned char fw_rev[8]; /* 0 = not_specified */ ! 25: unsigned char model[40]; /* 0 = not_specified */ ! 26: unsigned char max_multsect; /* 0=not_implemented */ ! 27: unsigned char vendor3; /* vendor unique */ ! 28: unsigned short dword_io; /* 0=not_implemented; 1=implemented */ ! 29: unsigned char vendor4; /* vendor unique */ ! 30: unsigned char capability; /* (upper byte of word 49) ! 31: * 3: IORDYsup ! 32: * 2: IORDYsw ! 33: * 1: LBA ! 34: * 0: DMA ! 35: */ ! 36: unsigned short reserved50; /* reserved (word 50) */ ! 37: unsigned char vendor5; /* Obsolete, vendor unique */ ! 38: unsigned char tPIO; /* Obsolete, 0=slow, 1=medium, 2=fast */ ! 39: unsigned char vendor6; /* Obsolete, vendor unique */ ! 40: unsigned char tDMA; /* Obsolete, 0=slow, 1=medium, 2=fast */ ! 41: unsigned short field_valid; /* (word 53) ! 42: * 2: ultra_ok word 88 ! 43: * 1: eide_ok words 64-70 ! 44: * 0: cur_ok words 54-58 ! 45: */ ! 46: unsigned short cur_cyls; /* Obsolete, logical cylinders */ ! 47: unsigned short cur_heads; /* Obsolete, l heads */ ! 48: unsigned short cur_sectors; /* Obsolete, l sectors per track */ ! 49: unsigned short cur_capacity0; /* Obsolete, l total sectors on drive */ ! 50: unsigned short cur_capacity1; /* Obsolete, (2 words, misaligned int) */ ! 51: unsigned char multsect; /* current multiple sector count */ ! 52: unsigned char multsect_valid; /* when (bit0==1) multsect is ok */ ! 53: unsigned int lba_capacity; /* Obsolete, total number of sectors */ ! 54: unsigned short dma_1word; /* Obsolete, single-word dma info */ ! 55: unsigned short dma_mword; /* multiple-word dma info */ ! 56: unsigned short eide_pio_modes; /* bits 0:mode3 1:mode4 */ ! 57: unsigned short eide_dma_min; /* min mword dma cycle time (ns) */ ! 58: unsigned short eide_dma_time; /* recommended mword dma cycle time (ns) */ ! 59: unsigned short eide_pio; /* min cycle time (ns), no IORDY */ ! 60: unsigned short eide_pio_iordy; /* min cycle time (ns), with IORDY */ ! 61: unsigned short words69_70[2]; /* reserved words 69-70 ! 62: * future command overlap and queuing ! 63: */ ! 64: /* HDIO_GET_IDENTITY currently returns only words 0 through 70 */ ! 65: unsigned short words71_74[4]; /* reserved words 71-74 ! 66: * for IDENTIFY PACKET DEVICE command ! 67: */ ! 68: unsigned short queue_depth; /* (word 75) ! 69: * 15:5 reserved ! 70: * 4:0 Maximum queue depth -1 ! 71: */ ! 72: unsigned short words76_79[4]; /* reserved words 76-79 */ ! 73: unsigned short major_rev_num; /* (word 80) */ ! 74: unsigned short minor_rev_num; /* (word 81) */ ! 75: unsigned short command_set_1; /* (word 82) supported ! 76: * 15: Obsolete ! 77: * 14: NOP command ! 78: * 13: READ_BUFFER ! 79: * 12: WRITE_BUFFER ! 80: * 11: Obsolete ! 81: * 10: Host Protected Area ! 82: * 9: DEVICE Reset ! 83: * 8: SERVICE Interrupt ! 84: * 7: Release Interrupt ! 85: * 6: look-ahead ! 86: * 5: write cache ! 87: * 4: PACKET Command ! 88: * 3: Power Management Feature Set ! 89: * 2: Removable Feature Set ! 90: * 1: Security Feature Set ! 91: * 0: SMART Feature Set ! 92: */ ! 93: unsigned short command_set_2; /* (word 83) ! 94: * 15: Shall be ZERO ! 95: * 14: Shall be ONE ! 96: * 13: FLUSH CACHE EXT ! 97: * 12: FLUSH CACHE ! 98: * 11: Device Configuration Overlay ! 99: * 10: 48-bit Address Feature Set ! 100: * 9: Automatic Acoustic Management ! 101: * 8: SET MAX security ! 102: * 7: reserved 1407DT PARTIES ! 103: * 6: SetF sub-command Power-Up ! 104: * 5: Power-Up in Standby Feature Set ! 105: * 4: Removable Media Notification ! 106: * 3: APM Feature Set ! 107: * 2: CFA Feature Set ! 108: * 1: READ/WRITE DMA QUEUED ! 109: * 0: Download MicroCode ! 110: */ ! 111: unsigned short cfsse; /* (word 84) ! 112: * cmd set-feature supported extensions ! 113: * 15: Shall be ZERO ! 114: * 14: Shall be ONE ! 115: * 13:6 reserved ! 116: * 5: General Purpose Logging ! 117: * 4: Streaming Feature Set ! 118: * 3: Media Card Pass Through ! 119: * 2: Media Serial Number Valid ! 120: * 1: SMART selt-test supported ! 121: * 0: SMART error logging ! 122: */ ! 123: unsigned short cfs_enable_1; /* (word 85) ! 124: * command set-feature enabled ! 125: * 15: Obsolete ! 126: * 14: NOP command ! 127: * 13: READ_BUFFER ! 128: * 12: WRITE_BUFFER ! 129: * 11: Obsolete ! 130: * 10: Host Protected Area ! 131: * 9: DEVICE Reset ! 132: * 8: SERVICE Interrupt ! 133: * 7: Release Interrupt ! 134: * 6: look-ahead ! 135: * 5: write cache ! 136: * 4: PACKET Command ! 137: * 3: Power Management Feature Set ! 138: * 2: Removable Feature Set ! 139: * 1: Security Feature Set ! 140: * 0: SMART Feature Set ! 141: */ ! 142: unsigned short cfs_enable_2; /* (word 86) ! 143: * command set-feature enabled ! 144: * 15: Shall be ZERO ! 145: * 14: Shall be ONE ! 146: * 13: FLUSH CACHE EXT ! 147: * 12: FLUSH CACHE ! 148: * 11: Device Configuration Overlay ! 149: * 10: 48-bit Address Feature Set ! 150: * 9: Automatic Acoustic Management ! 151: * 8: SET MAX security ! 152: * 7: reserved 1407DT PARTIES ! 153: * 6: SetF sub-command Power-Up ! 154: * 5: Power-Up in Standby Feature Set ! 155: * 4: Removable Media Notification ! 156: * 3: APM Feature Set ! 157: * 2: CFA Feature Set ! 158: * 1: READ/WRITE DMA QUEUED ! 159: * 0: Download MicroCode ! 160: */ ! 161: unsigned short csf_default; /* (word 87) ! 162: * command set-feature default ! 163: * 15: Shall be ZERO ! 164: * 14: Shall be ONE ! 165: * 13:6 reserved ! 166: * 5: General Purpose Logging enabled ! 167: * 4: Valid CONFIGURE STREAM executed ! 168: * 3: Media Card Pass Through enabled ! 169: * 2: Media Serial Number Valid ! 170: * 1: SMART selt-test supported ! 171: * 0: SMART error logging ! 172: */ ! 173: unsigned short dma_ultra; /* (word 88) */ ! 174: unsigned short trseuc; /* time required for security erase */ ! 175: unsigned short trsEuc; /* time required for enhanced erase */ ! 176: unsigned short CurAPMvalues; /* current APM values */ ! 177: unsigned short mprc; /* master password revision code */ ! 178: unsigned short hw_config; /* hardware config (word 93) ! 179: * 15: Shall be ZERO ! 180: * 14: Shall be ONE ! 181: * 13: ! 182: * 12: ! 183: * 11: ! 184: * 10: ! 185: * 9: ! 186: * 8: ! 187: * 7: ! 188: * 6: ! 189: * 5: ! 190: * 4: ! 191: * 3: ! 192: * 2: ! 193: * 1: ! 194: * 0: Shall be ONE ! 195: */ ! 196: unsigned short acoustic; /* (word 94) ! 197: * 15:8 Vendor's recommended value ! 198: * 7:0 current value ! 199: */ ! 200: unsigned short msrqs; /* min stream request size */ ! 201: unsigned short sxfert; /* stream transfer time */ ! 202: unsigned short sal; /* stream access latency */ ! 203: unsigned int spg; /* stream performance granularity */ ! 204: unsigned long long lba_capacity_2;/* 48-bit total number of sectors */ ! 205: unsigned short words104_125[22];/* reserved words 104-125 */ ! 206: unsigned short last_lun; /* (word 126) */ ! 207: unsigned short word127; /* (word 127) Feature Set ! 208: * Removable Media Notification ! 209: * 15:2 reserved ! 210: * 1:0 00 = not supported ! 211: * 01 = supported ! 212: * 10 = reserved ! 213: * 11 = reserved ! 214: */ ! 215: unsigned short dlf; /* (word 128) ! 216: * device lock function ! 217: * 15:9 reserved ! 218: * 8 security level 1:max 0:high ! 219: * 7:6 reserved ! 220: * 5 enhanced erase ! 221: * 4 expire ! 222: * 3 frozen ! 223: * 2 locked ! 224: * 1 en/disabled ! 225: * 0 capability ! 226: */ ! 227: unsigned short csfo; /* (word 129) ! 228: * current set features options ! 229: * 15:4 reserved ! 230: * 3: auto reassign ! 231: * 2: reverting ! 232: * 1: read-look-ahead ! 233: * 0: write cache ! 234: */ ! 235: unsigned short words130_155[26];/* reserved vendor words 130-155 */ ! 236: unsigned short word156; /* reserved vendor word 156 */ ! 237: unsigned short words157_159[3];/* reserved vendor words 157-159 */ ! 238: unsigned short cfa_power; /* (word 160) CFA Power Mode ! 239: * 15 word 160 supported ! 240: * 14 reserved ! 241: * 13 ! 242: * 12 ! 243: * 11:0 ! 244: */ ! 245: unsigned short words161_175[15];/* Reserved for CFA */ ! 246: unsigned short words176_205[30];/* Current Media Serial Number */ ! 247: unsigned short words206_254[49];/* reserved words 206-254 */ ! 248: unsigned short integrity_word; /* (word 255) ! 249: * 15:8 Checksum ! 250: * 7:0 Signature ! 251: */ ! 252: }; ! 253: ! 254: struct request_sense { ! 255: #if defined(CONFIG_BIG_ENDIAN) ! 256: u8 valid : 1; ! 257: u8 error_code : 7; ! 258: #elif defined(CONFIG_LITTLE_ENDIAN) ! 259: u8 error_code : 7; ! 260: u8 valid : 1; ! 261: #endif ! 262: u8 segment_number; ! 263: #if defined(CONFIG_BIG_ENDIAN) ! 264: u8 reserved1 : 2; ! 265: u8 ili : 1; ! 266: u8 reserved2 : 1; ! 267: u8 sense_key : 4; ! 268: #elif defined(CONFIG_LITTLE_ENDIAN) ! 269: u8 sense_key : 4; ! 270: u8 reserved2 : 1; ! 271: u8 ili : 1; ! 272: u8 reserved1 : 2; ! 273: #endif ! 274: u8 information[4]; ! 275: u8 add_sense_len; ! 276: u8 command_info[4]; ! 277: u8 asc; ! 278: u8 ascq; ! 279: u8 fruc; ! 280: u8 sks[3]; ! 281: u8 asb[46]; ! 282: }; ! 283: ! 284: struct atapi_capacity { ! 285: u32 lba; ! 286: u32 block_size; ! 287: }; ! 288: ! 289: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.