aos/devices/ata_identify.dev
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

178 lines
7.9 KiB
Plaintext

/*
* Copyright (c) 2009, ETH Zurich. All rights reserved.
*
* This file is distributed under the terms in the attached LICENSE file.
* If you do not find this file, copies can be found by writing to:
* ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
*/
/*
* ata_identify.dev
*
* DESCRIPTION: ATA IDENTIFY command's result.
*
*/
device ata_identify msbfirst (addr b) "ATA IDENTIFY results" {
register gcbsi ro addr(b, 0x00) "General configuration bit-significant information" {
ad 1 "0 = ATA device";
_ 7 "Retired";
_ 2 "Obsolete";
_ 3 "Retired";
ri 1 "Response incomplete";
_ 1 "Retired";
_ 1 "Reserved";
};
//register word1 ro addr(b, 0x02) "Obsolete" type(uint16);
register sc ro addr(b, 0x04) "Specific configuration" type(uint16);
//register word3 ro addr(b, 0x06) "Obsolete" type(uint16);
//register word4 ro addr(b, 0x08) "Retired" type(uint16);
//register word5 ro addr(b, 0x0A) "Retired" type(uint16);
//register word6 ro addr(b, 0x0C) "Obsolete" type(uint16);
register cfrsvd0 ro addr(b, 0x0E) "Reserved for assignment by the CompactFlash(TM) Association" type(uint16);
register cfrsvd1 ro addr(b, 0x10) "Reserved for assignment by the CompactFlash(TM) Association" type(uint16);
//register word9 ro addr(b, 0x12) "Retired" type(uint16);
regarray sn ro addr(b, 0x14) [20] "Serial number" type(uint8);
//register word20 ro addr(b, 0x28) "Retired" type(uint16);
//register word21 ro addr(b, 0x2A) "Retired" type(uint16);
//register word22 ro addr(b, 0x2C) "Obsolete" type(uint16);
regarray fwrev ro addr(b, 0x2E) [8] "Firmware revision" type(uint8);
regarray mn ro addr(b, 0x36) [40] "Model number" type(uint8);
register word47 ro addr(b, 0x5E) "Stuff" {
unk 8 "Must be 80h";
maxls 8 "00h = Reserved, 01h-FFh = Maximum number of logical sectors that shall be transferred per DRQ data block on READ/WRITE MULTIPLE commands";
};
register tcfso ro addr(b, 0x60) "Trusted Computing feature set options" {
_ 1 "Must be 0";
_ 1 "Must be 0";
rsvd 13 "Reserved for the Trusted Computing Group";
tc 1 "Trusted Computing feature set is supported";
};
register caps0 ro addr(b, 0x62) "Capabilities part 1" {
_ 2 "Reserved for the IDENTIFY PACKET DEVICE command";
sby 1 "Standby tiemr values (0 = managed by device, 1 = as in standard)";
_ 1 "Reserved for the IDENTIFY PACKET DEVICE command";
iors 1 "IORDY supported";
iord 1 "IORDY may be disabled";
lbas 1 "LBA supported";
dmas 1 "DMA supported";
_ 8 "Retired";
};
register caps1 ro addr(b, 0x64) "Capabilities part 2" {
_ 1 "Shall be cleared to zero";
_ 1 "Shall be set to one";
_ 12 "Reserved";
_ 1 "Obsolete";
dstm 1 "Shall be set to one to indicate a device specific Standby timer value minimum.";
};
//register word51 ro addr(b, 0x66) "Obsolete" type(uint16);
//register word52 ro addr(b, 0x68) "Obsolete" type(uint16);
register tnuas ro addr(b, 0x78) "Total number of user addressable sectors" type(uint32);
register mwdma ro addr(b, 0x7E) "Supported DMA Modes" {
_ 5 "Reserved";
m2sel 1 "Multiword DMA mode 2 selected";
m1sel 1 "Multiword DMA mode 1 selected";
m0sel 1 "Multiword DMA mode 0 selected";
_ 5 "Reserved";
m2sup 1 "Multiword DMA mode 2 and below are supported";
m1sup 1 "Multiword DMA mode 1 and below are supported";
m0sup 1 "Multiword DMA mode 0 is supported";
};
register pio ro addr(b, 0x80) "Supported PIO modes" {
_ 8 "Reserved";
msup 8 "PIO modes supported";
};
register majrn ro addr(b, 0xA0) "Major revision number" {
_ 7 "Reserved";
a8 1 "Supports ATA8-ACS";
a7 1 "Supports ATA/ATAPI-7";
a6 1 "Supports ATA/ATAPI-6";
a5 1 "Supports ATA/ATAPI-5";
a4 1 "Supports ATA/ATAPI-4";
_ 3 "Obsolete";
_ 1 "Reserved";
};
register minrn ro addr(b, 0xA2) "Minor revision number" type(uint16);
register css0 ro addr(b, 0xA4) "Command set supported part 1" {
_ 1 "Obsolete";
nop 1 "NOP command supported";
reab 1 "READ BUFFER command supported";
wrtb 1 "WRITE BUFFER command supported";
_ 1 "Obsolete";
hpa 1 "Host Protected Area feature set supported";
drst 1 "DEVICE RESET command supported";
svci 1 "SERVICE interrupt supported";
reli 1 "Release interrupt supported";
loka 1 "Look-ahead supported";
wrtc 1 "Write cache supported";
pack 1 "Cleared to indicate PACKET feature set not supported";
pwrm 1 "Mandatory Power Management feature set supported";
_ 1 "Obsolete";
secm 1 "Security Mode feature set supported";
smrt 1 "SMART feature set supported";
};
register css1 ro addr(b, 0xA6) "Command sets supported part 2" {
_ 1 "Shall be cleared to zero";
_ 1 "Shall be set to one";
flcx 1 "FLUSH CACHE EXT command supported";
flc 1 "Mandatory FLUSH CACHE command supported";
dco 1 "Mandatory Device Configuration Overlay feature set supported";
lba48 1 "48-bit Address feature set supported";
aam 1 "Automatic Acoustic Management feature set supported";
smsec 1 "SET MAX security extension supported";
orab 1 "See Address Offset Reserved Area Boot, INCITS TR27:2001";
sfspn 1 "SET FEATUREs subcommand required to spin-up after power-up";
puis 1 "Power-Up In Standby feature set supported";
_ 1 "Obsolete";
apm 1 "Advanced Power Management feature set supported";
cfa 1 "CFA feature set supported";
dmaq 1 "READ/WRITE DMA QUEUED supported";
dlmc 1 "DOWNLOAD MICROCODE command supported";
};
register css2 ro addr(b, 0xA8) "Command set/feature supported part 3" {
_ 1 "Shall be cleared to zero";
_ 1 "Shall be set to one";
iiwuf 1 "IDLE IMMEDIATE with UNLOAD FEATURE supported";
_ 2 "Reserved for technical report INCITS TR-37-2004 (TLC)";
_ 2 "Obsolete";
wwn64 1 "64-bit World wide name supported";
wdmaqfuax 1 "WRITE DMA QUEUED FUA EXT command supported";
wdmafuax 1 "WRITE DMA FUA EXT and WRITE MULTIPLE FUA EXT commands supported";
gpl 1 "General Purpose Logging feature set supported";
strm 1 "Streaming feature set supported";
mcptc 1 "Media Card Pass Through Command feature set supported";
msn 1 "Media serial number supported";
smtst 1 "SMART self-test supported";
smtel 1 "SMART error logging supported";
};
register tnuas48 ro addr(b, 0xC8) "Total Number of User Addressable Sectors for the 48-bit Address feature set" type(uint64);
register plss ro addr(b, 0xD4) "Physical Sector Size / Logical Sector Size" {
_ 1 "Shall be cleared to zero";
_ 1 "Shall be set to one";
mlpp 1 "Device has multiple logical sectors per phyiscal sector";
lls 1 "Device Logical Sector Longer than 256 Words";
_ 8 "Reserved";
lpp 4 "2^X logical sectors per physical sector";
};
register wpls ro addr(b, 0xEA) "Words per Logical Sector" type(uint32);
register tmajrn ro addr(b, 0x1BC) "Transport Major revision number" {
tt 4 "Transport Type - 0 = Parallel, 1 = Serial, 2-15 = Reserved";
_ 8 "Reserved";
v3 1 "Type Serial: SATA Rev 2.5";
v2 1 "Type Serial: SATA II: Extensions";
v1 1 "Type Serial: SATA 1.0a";
v0 1 "Type Parallel: ATA8-APT. Type Serial: ATA8-AST";
};
register tminrn ro addr(b, 0x1BE) "Transport Minor revision number" type(uint16);
};