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