1/* 2 * Copyright (c) 2009, ETH Zurich. All rights reserved. 3 * 4 * This file is distributed under the terms in the attached LICENSE file. 5 * If you do not find this file, copies can be found by writing to: 6 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group. 7 */ 8 9/* 10 * ata_identify.dev 11 * 12 * DESCRIPTION: ATA IDENTIFY command's result. 13 * 14 */ 15 16device ata_identify msbfirst (addr b) "ATA IDENTIFY results" { 17 18 register gcbsi ro addr(b, 0x00) "General configuration bit-significant information" { 19 ad 1 "0 = ATA device"; 20 _ 7 "Retired"; 21 _ 2 "Obsolete"; 22 _ 3 "Retired"; 23 ri 1 "Response incomplete"; 24 _ 1 "Retired"; 25 _ 1 "Reserved"; 26 }; 27 //register word1 ro addr(b, 0x02) "Obsolete" type(uint16); 28 register sc ro addr(b, 0x04) "Specific configuration" type(uint16); 29 //register word3 ro addr(b, 0x06) "Obsolete" type(uint16); 30 //register word4 ro addr(b, 0x08) "Retired" type(uint16); 31 //register word5 ro addr(b, 0x0A) "Retired" type(uint16); 32 //register word6 ro addr(b, 0x0C) "Obsolete" type(uint16); 33 register cfrsvd0 ro addr(b, 0x0E) "Reserved for assignment by the CompactFlash(TM) Association" type(uint16); 34 register cfrsvd1 ro addr(b, 0x10) "Reserved for assignment by the CompactFlash(TM) Association" type(uint16); 35 //register word9 ro addr(b, 0x12) "Retired" type(uint16); 36 regarray sn ro addr(b, 0x14) [20] "Serial number" type(uint8); 37 //register word20 ro addr(b, 0x28) "Retired" type(uint16); 38 //register word21 ro addr(b, 0x2A) "Retired" type(uint16); 39 //register word22 ro addr(b, 0x2C) "Obsolete" type(uint16); 40 regarray fwrev ro addr(b, 0x2E) [8] "Firmware revision" type(uint8); 41 regarray mn ro addr(b, 0x36) [40] "Model number" type(uint8); 42 register word47 ro addr(b, 0x5E) "Stuff" { 43 unk 8 "Must be 80h"; 44 maxls 8 "00h = Reserved, 01h-FFh = Maximum number of logical sectors that shall be transferred per DRQ data block on READ/WRITE MULTIPLE commands"; 45 }; 46 register tcfso ro addr(b, 0x60) "Trusted Computing feature set options" { 47 _ 1 "Must be 0"; 48 _ 1 "Must be 0"; 49 rsvd 13 "Reserved for the Trusted Computing Group"; 50 tc 1 "Trusted Computing feature set is supported"; 51 }; 52 register caps0 ro addr(b, 0x62) "Capabilities part 1" { 53 _ 2 "Reserved for the IDENTIFY PACKET DEVICE command"; 54 sby 1 "Standby tiemr values (0 = managed by device, 1 = as in standard)"; 55 _ 1 "Reserved for the IDENTIFY PACKET DEVICE command"; 56 iors 1 "IORDY supported"; 57 iord 1 "IORDY may be disabled"; 58 lbas 1 "LBA supported"; 59 dmas 1 "DMA supported"; 60 _ 8 "Retired"; 61 }; 62 register caps1 ro addr(b, 0x64) "Capabilities part 2" { 63 _ 1 "Shall be cleared to zero"; 64 _ 1 "Shall be set to one"; 65 _ 12 "Reserved"; 66 _ 1 "Obsolete"; 67 dstm 1 "Shall be set to one to indicate a device specific Standby timer value minimum."; 68 }; 69 //register word51 ro addr(b, 0x66) "Obsolete" type(uint16); 70 //register word52 ro addr(b, 0x68) "Obsolete" type(uint16); 71 72 register tnuas ro addr(b, 0x78) "Total number of user addressable sectors" type(uint32); 73 74 register mwdma ro addr(b, 0x7E) "Supported DMA Modes" { 75 _ 5 "Reserved"; 76 m2sel 1 "Multiword DMA mode 2 selected"; 77 m1sel 1 "Multiword DMA mode 1 selected"; 78 m0sel 1 "Multiword DMA mode 0 selected"; 79 _ 5 "Reserved"; 80 m2sup 1 "Multiword DMA mode 2 and below are supported"; 81 m1sup 1 "Multiword DMA mode 1 and below are supported"; 82 m0sup 1 "Multiword DMA mode 0 is supported"; 83 }; 84 85 register pio ro addr(b, 0x80) "Supported PIO modes" { 86 _ 8 "Reserved"; 87 msup 8 "PIO modes supported"; 88 }; 89 90 register majrn ro addr(b, 0xA0) "Major revision number" { 91 _ 7 "Reserved"; 92 a8 1 "Supports ATA8-ACS"; 93 a7 1 "Supports ATA/ATAPI-7"; 94 a6 1 "Supports ATA/ATAPI-6"; 95 a5 1 "Supports ATA/ATAPI-5"; 96 a4 1 "Supports ATA/ATAPI-4"; 97 _ 3 "Obsolete"; 98 _ 1 "Reserved"; 99 }; 100 register minrn ro addr(b, 0xA2) "Minor revision number" type(uint16); 101 register css0 ro addr(b, 0xA4) "Command set supported part 1" { 102 _ 1 "Obsolete"; 103 nop 1 "NOP command supported"; 104 reab 1 "READ BUFFER command supported"; 105 wrtb 1 "WRITE BUFFER command supported"; 106 _ 1 "Obsolete"; 107 hpa 1 "Host Protected Area feature set supported"; 108 drst 1 "DEVICE RESET command supported"; 109 svci 1 "SERVICE interrupt supported"; 110 reli 1 "Release interrupt supported"; 111 loka 1 "Look-ahead supported"; 112 wrtc 1 "Write cache supported"; 113 pack 1 "Cleared to indicate PACKET feature set not supported"; 114 pwrm 1 "Mandatory Power Management feature set supported"; 115 _ 1 "Obsolete"; 116 secm 1 "Security Mode feature set supported"; 117 smrt 1 "SMART feature set supported"; 118 }; 119 register css1 ro addr(b, 0xA6) "Command sets supported part 2" { 120 _ 1 "Shall be cleared to zero"; 121 _ 1 "Shall be set to one"; 122 flcx 1 "FLUSH CACHE EXT command supported"; 123 flc 1 "Mandatory FLUSH CACHE command supported"; 124 dco 1 "Mandatory Device Configuration Overlay feature set supported"; 125 lba48 1 "48-bit Address feature set supported"; 126 aam 1 "Automatic Acoustic Management feature set supported"; 127 smsec 1 "SET MAX security extension supported"; 128 orab 1 "See Address Offset Reserved Area Boot, INCITS TR27:2001"; 129 sfspn 1 "SET FEATUREs subcommand required to spin-up after power-up"; 130 puis 1 "Power-Up In Standby feature set supported"; 131 _ 1 "Obsolete"; 132 apm 1 "Advanced Power Management feature set supported"; 133 cfa 1 "CFA feature set supported"; 134 dmaq 1 "READ/WRITE DMA QUEUED supported"; 135 dlmc 1 "DOWNLOAD MICROCODE command supported"; 136 }; 137 register css2 ro addr(b, 0xA8) "Command set/feature supported part 3" { 138 _ 1 "Shall be cleared to zero"; 139 _ 1 "Shall be set to one"; 140 iiwuf 1 "IDLE IMMEDIATE with UNLOAD FEATURE supported"; 141 _ 2 "Reserved for technical report INCITS TR-37-2004 (TLC)"; 142 _ 2 "Obsolete"; 143 wwn64 1 "64-bit World wide name supported"; 144 wdmaqfuax 1 "WRITE DMA QUEUED FUA EXT command supported"; 145 wdmafuax 1 "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT commands supported"; 146 gpl 1 "General Purpose Logging feature set supported"; 147 strm 1 "Streaming feature set supported"; 148 mcptc 1 "Media Card Pass Through Command feature set supported"; 149 msn 1 "Media serial number supported"; 150 smtst 1 "SMART self-test supported"; 151 smtel 1 "SMART error logging supported"; 152 }; 153 154 register tnuas48 ro addr(b, 0xC8) "Total Number of User Addressable Sectors for the 48-bit Address feature set" type(uint64); 155 156 register plss ro addr(b, 0xD4) "Physical Sector Size / Logical Sector Size" { 157 _ 1 "Shall be cleared to zero"; 158 _ 1 "Shall be set to one"; 159 mlpp 1 "Device has multiple logical sectors per phyiscal sector"; 160 lls 1 "Device Logical Sector Longer than 256 Words"; 161 _ 8 "Reserved"; 162 lpp 4 "2^X logical sectors per physical sector"; 163 }; 164 165 register wpls ro addr(b, 0xEA) "Words per Logical Sector" type(uint32); 166 167 register tmajrn ro addr(b, 0x1BC) "Transport Major revision number" { 168 tt 4 "Transport Type - 0 = Parallel, 1 = Serial, 2-15 = Reserved"; 169 _ 8 "Reserved"; 170 v3 1 "Type Serial: SATA Rev 2.5"; 171 v2 1 "Type Serial: SATA II: Extensions"; 172 v1 1 "Type Serial: SATA 1.0a"; 173 v0 1 "Type Parallel: ATA8-APT. Type Serial: ATA8-AST"; 174 }; 175 register tminrn ro addr(b, 0x1BE) "Transport Minor revision number" type(uint16); 176 177}; 178