source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Inc/ATA_ID.inc @ 233

Last change on this file since 233 was 233, checked in by gregli@…, 12 years ago

Serial Port: split single byte port and baud into two bytes, taking advantage of the two bytes in DPT_SERIAL, which supports more serial baud rates and in particular fixed a bug where a 4x client machine couldn't talk to a 115.2K server machine. This is a wide change, touching lots of files, but most are shallow changes. DetectPrint.asm took the most significant changes, now it calculates the baud rate to display instead of using characters provided by the Configurator. The Configurator now has a new menu flag, FLG_MENUITEM_CHOICESTRINGS, for specifying that values are not linear and they should be lookedup rather than indexed. Finally, another important bug fixed here is that in some error cases, the serial port code could get into an infinite loop waiting ont the hardware; now it has a timeout.

File size: 21.3 KB
Line 
1; File name     :   ATA_ID.inc
2; Project name  :   IDE BIOS
3; Created date  :   30.10.2009
4; Last update   :   12.3.2010
5; Author        :   Tomi Tilli
6; Description   :   ATA Identify Drive information.
7%ifndef ATA_ID_INC
8%define ATA_ID_INC
9
10; ATA-1 Drive Information struct
11; F = Fixed value
12; V = Variable value
13; R = Reserved word
14; X = Vendor specific word
15struc ATA1
16    .wGenCfg    resw 1  ; 0F, General configuration bit-significant information
17    .wCylCnt    resw 1  ; 1F, Number of cylinders
18                resw 1  ; 2R
19    .wHeadCnt   resw 1  ; 3F, Number of heads
20    .wBpTrck    resw 1  ; 4F, Number of unformatted bytes per track
21    .wBpSect    resw 1  ; 5F, Number of unformatted bytes per sector
22    .wSPT       resw 1  ; 6F, Number of sectors per track
23                resw 3  ; 7...9X
24    .strSerial  resb 20 ; 10...19F, Serial number (20 ASCII characters, 0000h=not specified)
25    .wBuffType  resw 1  ; 20F, Buffer type
26    .wBuffSize  resw 1  ; 21F, Buffer size in 512 byte increments (0000h=not specified)
27    .wEccCnt    resw 1  ; 22F, # of ECC bytes avail on read/write long cmds (0000h=not spec'd)
28    .strFirmW   resb 8  ; 23...26F, Firmware revision (8 ASCII characters, 0000h=not specified)
29    .strModel   resb 40 ; 27...46F, Model number (40 ASCII characters, 0000h=not specified)
30    .bBlckSize  resb 1  ; 47[0-7]F, Maximum number of sectors that can be transferred
31                        ;          per interrupt on read and write multiple commands
32                        ;          (00h=Read/write multiple commands not implemented)
33                resb 1  ; 47[8-15]X
34    .wDWIO      resw 1  ; 48F, Can perform doubleword I/O (boolean)
35    .wCaps      resw 1  ; 49FRX, Capabilities
36                resw 1  ; 50R
37                resb 1  ; 51[0-7]X
38    .bPIOTiming resb 1  ; 51[8-15]F, PIO data transfer cycle timing mode
39                resb 1  ; 52[0-7]X
40    .bDMATiming resb 1  ; 52[8-15]F, DMA data transfer cycle timing mode
41    .wFields    resw 1  ; 53FVR, Field (next words) validity bits
42
43    ; Words 54-58 are valid only if bit0 is set in .wFields
44    .wCurCyls   resw 1  ; 54V, Number of current cylinders
45    .wCurHeads  resw 1  ; 55V, Number of current heads
46    .wCurSPT    resw 1  ; 56V, Number of current sectors per track
47    .dwCurSCnt  resd 1  ; 57...58V, Current capacity in sectors
48
49    ; Words 59-63 are always valid
50    .bBlockSel  resb 1  ; 59[0-7]V, Current setting for number of sectors that
51                        ;           can be transferred per interrupt on R/W multiple command
52    .bBlockFlgs resb 1  ; 59[8-15]VR, bit 0 set if Multiple sector setting is valid
53    .dwLBACnt   resd 1  ; 60...61F, Total number of user addressable sectors (LBA mode only)
54    .bSDMASupp  resb 1  ; 62[0-7]F, Single word DMA transfer modes supported
55    .bSDMAAct   resb 1  ; 62[8-15]V, Single word DMA transfer mode active
56    .bMDMASupp  resb 1  ; 63[0-7]F, Multiword DMA transfer modes supported
57    .bMDMAAct   resb 1  ; 63[8-15]V, Multiword DMA transfer mode active
58endstruc
59
60; ATA-1 Word 0, General configuration
61A1_wGenCfg_NONMAG       EQU (1<<15) ; Reserved for non-magnetic drives
62A1_wGenCfg_FGAPREQ      EQU (1<<14) ; Format speed tolerance gap required
63A1_wGenCfg_TRCKOFF      EQU (1<<13) ; Track offset option available
64A1_wGenCfg_DATAOFF      EQU (1<<12) ; Data strobe offset option available
65A1_wGenCfg_ROTTOL       EQU (1<<11) ; Rotational speed tolerance is > 0,5%
66A1_wGenCfg_XFERFAST     EQU (1<<10) ; Disk transfer rate > 10 Mbs
67A1_wGenCfg_XFERMED      EQU (1<<9)  ; Disk transfer rate > 5Mbs but <= 10Mbs
68A1_wGenCfg_XFERSLOW     EQU (1<<8)  ; Disk transfer rate <= 5Mbs
69A1_wGenCfg_REMOVABLE    EQU (1<<7)  ; Removable cartridge drive
70A1_wGenCfg_FIXED        EQU (1<<6)  ; Fixed drive
71A1_wGenCfg_MOTCTRL      EQU (1<<5)  ; Spindle motor control option implemented
72A1_wGenCfg_HEADSLOW     EQU (1<<4)  ; Head switch time > 15 usec
73A1_wGenCfg_NOTMFM       EQU (1<<3)  ; Not MFM encoded
74A1_wGenCfg_SOFTSECT     EQU (1<<2)  ; Soft sectored
75A1_wGenCfg_HARDSECT     EQU (1<<1)  ; Hard sectored
76
77; ATA-1 Word 49, Capabilities
78A1_wCaps_LBA            EQU (1<<9)  ; LBA supported
79A1_wCaps_DMA            EQU (1<<8)  ; DMA supported
80
81; ATA-1 Word 53, Fields
82A1_wFields_54to58       EQU (1<<0)  ; The fields reported in words 54-58 are valid
83
84; ATA-1 Word 59 high byte, Block mode flags
85A1_bBlockFlgs_VALID     EQU (1<<0)  ; Multiple sector setting (bBlockSel) is valid
86
87
88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
89
90; ATA-2 Drive Information struct
91; F = Fixed value
92; V = Variable value
93; R = Reserved word
94; X = Vendor specific word
95struc ATA2
96    .wGenCfg    resw 1  ; 0F, General configuration bit-significant information
97    .wCylCnt    resw 1  ; 1F, Number of logical cylinders
98                resw 1  ; 2R
99    .wHeadCnt   resw 1  ; 3F, Number of logical heads
100                resw 1  ; 4X
101                resw 1  ; 5X
102    .wSPT       resw 1  ; 6F, Number of logical sectors per track
103                resw 3  ; 7...9X
104    .strSerial  resb 20 ; 10...19F, Serial number (20 ASCII characters, 0000h=not specified)
105                resw 1  ; 20X
106                resw 1  ; 21X
107    .wEccCnt    resw 1  ; 22F, # of ECC bytes avail on read/write long cmds (0000h=not spec'd)
108    .strFirmW   resb 8  ; 23...26F, Firmware revision (8 ASCII characters, 0000h=not specified)
109    .strModel   resb 40 ; 27...46F, Model number (40 ASCII characters, 0000h=not specified)
110    .bBlckSize  resb 1  ; 47[0-7]F, Maximum number of sectors that can be transferred
111                        ;          per interrupt on read and write multiple commands
112                        ;          (00h=Read/write multiple commands not implemented)
113                resb 1  ; 47[8-15]X
114                resw 1  ; 48R
115    .wCaps      resw 1  ; 49FRX, Capabilities
116                resw 1  ; 50R
117                resb 1  ; 51[0-7]X
118    .bPIOTiming resb 1  ; 51[8-15]F, PIO data transfer cycle timing mode
119                resb 1  ; 52[0-7]X
120    .bDMATiming resb 1  ; 52[8-15]F, DMA data transfer cycle timing mode
121    .wFields    resw 1  ; 53FVR, Field (next words) validity bits
122
123    ; Words 54-58 are valid only if bit0 is set in .wFields
124    .wCurCyls   resw 1  ; 54V, Number of current logical cylinders
125    .wCurHeads  resw 1  ; 55V, Number of current logical heads
126    .wCurSPT    resw 1  ; 56V, Number of current logical sectors per track
127    .dwCurSCnt  resd 1  ; 57...58V, Current capacity in sectors
128
129    ; Words 59-63 are always valid
130    .bBlockSel  resb 1  ; 59[0-7]V, Current setting for number of sectors that
131                        ;           can be transferred per interrupt on R/W multiple command
132    .bBlockFlgs resb 1  ; 59[8-15]VR, bit 0 set if Multiple sector setting is valid
133    .dwLBACnt   resd 1  ; 60...61F, Total number of user addressable sectors (LBA mode only)
134    .bSDMASupp  resb 1  ; 62[0-7]F, Single word DMA transfer modes supported
135    .bSDMAAct   resb 1  ; 62[8-15]V, Single word DMA transfer mode active
136    .bMDMASupp  resb 1  ; 63[0-7]F, Multiword DMA transfer modes supported
137    .bMDMAAct   resb 1  ; 63[8-15]V, Multiword DMA transfer mode active
138   
139    ; Words 64-70 are valid only if bit1 is set in .wFields (ATA2+)
140    .bPIOSupp   resb 1  ; 64[0-7]F, Advanced PIO Transfer Modes Supported
141                resb 1  ; 64[8-15]R
142    .wMDMAMinCy resw 1  ; 65F, Minimum Multiword DMA Transfer Cycle Time Per Word
143    .wMDMARecCy resw 1  ; 66F, Manufacturer’s Recommended Multiword DMA Transfer Cycle Time
144    .wPIOMinCy  resw 1  ; 67F, Minimum PIO Transfer Cycle Time Without Flow Control
145    .wPIOMinCyF resw 1  ; 68F, Minimum PIO Transfer Cycle Time With IORDY Flow Control
146endstruc
147
148; ATA-2 Word 0, General configuration
149A2_wGenCfg_NONMAG       EQU (1<<15) ; Reserved for non-magnetic drives
150A2_wGenCfg_REMOVABLE    EQU (1<<7)  ; Removable media device
151A2_wGenCfg_FIXED        EQU (1<<6)  ; Not removable controller and/or device
152
153; ATA-1 Word 49, Capabilities
154A2_wCaps_TIMER          EQU (1<<13) ; Standby timer values as specified in this standard are supported
155A2_wCaps_IORDY          EQU (1<<11) ; IORDY supported
156A2_wCaps_CANDISIORDY    EQU (1<<10) ; IORDY can be disabled
157A2_wCaps_LBA            EQU (1<<9)  ; LBA supported
158A2_wCaps_DMA            EQU (1<<8)  ; DMA supported
159
160; ATA-2 Word 53, Fields
161A2_wFields_54to58       EQU (1<<0)  ; The fields reported in words 54-58 are valid
162A2_wFields_64to70       EQU (1<<1)  ; The fields reported in words 64-70 are valid
163
164; ATA-2 Word 59 high byte, Block mode flags
165A2_bBlockFlgs_VALID     EQU (1<<0)  ; Multiple sector setting (bBlockSel) is valid
166
167
168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
169
170; ATA-6 Drive Information struct
171; F = Fixed value
172; V = Variable value
173; R = Reserved word
174; X = Vendor specific word
175struc ATA6
176    .wGenCfg    resw 1  ; 0F, General configuration bit-significant information
177                resw 1  ; 1X, Obsolete (Number of logical cylinders)
178                resw 1  ; 2V, Specific configuration
179                resw 1  ; 3X, Obsolete (Number of logical heads)
180                resw 1  ; 4X
181                resw 1  ; 5X
182                resw 1  ; 6X, Obsolete (Number of logical sectors per track)
183                resw 2  ; 7...8V, Reserved for assignment by the CompactFlash Association
184                resw 1  ; 9X
185    .strSerial  resb 20 ; 10...19F, Serial number (20 ASCII characters, 0000h=not specified)
186                resw 1  ; 20X
187                resw 1  ; 21X
188                resw 1  ; 22X, Obsolete (# of ECC bytes avail on read/write long cmds (0000h=not spec'd))
189    .strFirmW   resb 8  ; 23...26F, Firmware revision (8 ASCII characters, 0000h=not specified)
190    .strModel   resb 40 ; 27...46F, Model number (40 ASCII characters, 0000h=not specified)
191    .bBlckSize  resb 1  ; 47[0-7]F, Maximum number of sectors that can be transferred
192                        ;           per interrupt on read and write multiple commands
193                        ;           (00h=Read/write multiple commands not implemented)
194                resb 1  ; 47[8-15]F, 80h
195                resw 1  ; 48R
196    .wCaps      resw 1  ; 49FX, Capabilities
197    .wCapsHigh  resw 1  ; 50FX, Capabilities 2
198                resw 1  ; 51X, Obsolete (PIO data transfer cycle timing mode)
199                resw 1  ; 52X, Obsolete (DMA data transfer cycle timing mode)
200    .wFields    resw 1  ; 53FX, Field (next words) validity bits
201
202    ; Words 54-58 are valid only if bit0 is set in .wFields
203                resw 1  ; 54X, Obsolete (Number of current logical cylinders)
204                resw 1  ; 55X, Obsolete (Number of current logical heads)
205                resw 1  ; 56X, Obsolete (Number of current logical sectors per track)
206                resd 1  ; 57...58X, Obsolete (Current capacity in sectors)
207
208    ; Words 59-63 are always valid
209    .bBlockSel  resb 1  ; 59[0-7]V, Current setting for number of sectors that
210                        ;           can be transferred per interrupt on R/W multiple command
211    .bBlockFlgs resb 1  ; 59[8-15]VR, bit 0 set if Multiple sector setting is valid
212    .dwLBACnt   resd 1  ; 60...61F, Total number of user addressable sectors (LBA-28)
213                resb 1  ; 62[0-7]X, Obsolete (Single word DMA transfer modes supported)
214                resb 1  ; 62[8-15]X, Obsolete (Single word DMA transfer mode active)
215    .wMDMA      resw 1  ; 63FV, Multiword DMA transfer modes supported and active
216
217    ; Words 64-70 are valid only if bit1 is set in .wFields (ATA2+)
218    .bPIOSupp   resb 1  ; 64[0-7]F, Advanced PIO Transfer Modes Supported
219                resb 1  ; 64[8-15]R
220    .wMDMAMinCy resw 1  ; 65F, Minimum Multiword DMA Transfer Cycle Time Per Word
221    .wMDMARecCy resw 1  ; 66F, Manufacturer’s Recommended Multiword DMA Transfer Cycle Time
222    .wPIOMinCy  resw 1  ; 67F, Minimum PIO Transfer Cycle Time Without Flow Control
223    .wPIOMinCyF resw 1  ; 68F, Minimum PIO Transfer Cycle Time With IORDY Flow Control
224                resw 71-69  ; 69...70R
225
226    ; Words 71...74 are reserved for IDENTIFY PACKET DEVICE command
227                resw 75-71  ; 71...74R
228
229    .wQueue     resw 1  ; 75[0-4]F, Maximum queue depth - 1
230                resw 80-76  ; 76...79R
231
232    .wMajorVer  resw 1  ; 80F, Major Version Number
233    .wMinorVer  resw 1  ; 81F, Minor Version Number
234    .wSetSup82  resw 1  ; 82F, Command set supported
235    .wSetSup83  resw 1  ; 83F, Command sets supported
236    .wSetSup84  resw 1  ; 84F, Command set / Feature supported extension
237    .wEnFor82   resw 1  ; 85FV, Command set / feature enabled (for word 82)
238    .wEnFor83   resw 1  ; 86FV, Command set / feature enabled (for word 83)
239    .wEnFor84   resw 1  ; 87FV, Command set / feature enabled (for word 84)
240
241    ; Word 88 is valid only if bit2 is set in .wFields (word 53)
242    .wUDMA      resw 1  ; 88FV, Ultra DMA Mode support
243
244    .wEraseTime resw 1  ; 89F, Time required for security erase unit completion
245    .wEnhErTime resw 1  ; 90F, Time required for Enhanced security erase completion
246    .wCurPower  resw 1  ; 91V, Current advanced power management value
247    .wPWRev     resw 1  ; 92V, Master Password Revision Code
248    .wReset     resw 1  ; 93FV, Hardware reset result
249    .bCurAcous  resb 1  ; 94[0-7]V, Current automatic acoustic management value
250    .bRecAcous  resb 1  ; 94[8-15]V, Vendor’s recommended acoustic management value
251                resw 100-95     ; 95...99R
252    .qwLBACnt   resb 8  ; 100...103V, Total number of user addressable sectors (LBA48)
253                resw 127-104    ; 104...126R
254    .wRMSN      resw 1  ; 127F, Removable Media Status Notification feature set support
255    .wSecurity  resw 1  ; 128FV, Security Status
256                resw 159-129    ; 129...158X, Vendor Specific
257    .wVendor    resw 1  ; 159X, Vendor Specific - picking one word for use by the Serial Port code
258    .wCFAPower  resw 1  ; 160FV, CFA Power Mode 1
259                resw 176-161    ; 161...175R, Reserved for assignment by the CompactFlash Association
260    .strMediaSr resw 206-176    ; 176...205V, Current media serial number
261                resw 255-206    ; 206...254R
262    .bSignature resb 1  ; 255[0-7]X, Signature
263    .bChecksum  resb 1  ; 255[8-15]X, Checksum
264endstruc
265
266; ATA-6 Word 0, General configuration
267A6_wGenCfg_REMOVABLE    EQU (1<<7)  ; Removable media device
268A6_wGenCfg_INCOMPLETE   EQU (1<<2)  ; Response incomplete
269
270; ATA-6 Word 49, Capabilities
271A6_wCaps_TIMER          EQU (1<<13) ; Standby timer values as specified in this standard are supported
272A6_wCaps_IORDY          EQU (1<<11) ; IORDY supported
273A6_wCaps_CANDISIORDY    EQU (1<<10) ; IORDY can be disabled
274A6_wCaps_LBA            EQU (1<<9)  ; LBA supported
275A6_wCaps_DMA            EQU (1<<8)  ; DMA supported
276
277; ATA-6 Word 53, Fields
278A6_wFields_88           EQU (1<<2)  ; The fields reported in word 88 are valid
279A6_wFields_64to70       EQU (1<<1)  ; The fields reported in words 64-70 are valid
280
281; ATA-6 Word 59 high byte, Block mode flags
282A6_bBlockFlgs_VALID     EQU (1<<0)  ; Multiple sector setting (bBlockSel) is valid
283
284; ATA-6 Word 63, Multiword DMA Mode
285A6_wMDMA_MODE2_SELECTED EQU (1<<10) ; Multiword DMA mode 2 is selected
286A6_wMDMA_MODE1_SELECTED EQU (1<<9)  ; Multiword DMA mode 1 is selected
287A6_wMDMA_MODE0_SELECTED EQU (1<<8)  ; Multiword DMA mode 0 is selected
288A6_wMDMA_MODE2_SUPRTD   EQU (1<<2)  ; Multiword DMA mode 2 and below are supported
289A6_wMDMA_MODE1_SUPRTD   EQU (1<<1)  ; Multiword DMA mode 1 and below are supported
290A6_wMDMA_MODE0_SUPRTD   EQU (1<<0)  ; Multiword DMA mode 0 is supported
291
292; ATA-6 Word 80, Major version number
293A6_wMajorVer_ATA6       EQU (1<<6)
294A6_wMajorVer_ATA5       EQU (1<<5)
295A6_wMajorVer_ATA4       EQU (1<<4)
296A6_wMajorVer_ATA3       EQU (1<<3)
297
298; ATA-6 Word 82, Command set supported
299A6_wSetSup82_NOP        EQU (1<<14) ; NOP command supported
300A6_wSetSup82_RDBUFF     EQU (1<<13) ; READ BUFFER command supported
301A6_wSetSup82_WRBUFF     EQU (1<<12) ; WRITE BUFFER command supported
302A6_wSetSup82_PROT_AREA  EQU (1<<10) ; Host Protected Area feature set supported
303A6_wSetSup82_DEV_RESET  EQU (1<<9)  ; DEVICE RESET command supported
304A6_wSetSup82_SERVICE    EQU (1<<8)  ; SERVICE interrupt supported
305A6_wSetSup82_RELEASE    EQU (1<<7)  ; Release interrupt supported
306A6_wSetSup82_LOOKAHEAD  EQU (1<<6)  ; Look-ahead supported
307A6_wSetSup82_WRCACHE    EQU (1<<5)  ; Write cache supported
308A6_wSetSup82_POWERMAN   EQU (1<<3)  ; Power Management feature set supported
309A6_wSetSup82_REM_MEDIA  EQU (1<<2)  ; Removable Media feature set supported
310A6_wSetSup82_SECURITY   EQU (1<<1)  ; Security Mode feature set supported
311A6_wSetSup82_SMART      EQU (1<<0)  ; SMART feature set supported
312
313; ATA-6 Word 83, Command sets supported
314A6_wSetSup83_FLUSH_EXT  EQU (1<<13) ; FLUSH CACHE EXT command supported
315A6_wSetSup83_FLUSH      EQU (1<<12) ; FLUSH CACHE command supported
316A6_wSetSup83_CFG        EQU (1<<11) ; Device Configuration Overlay feature set supported
317A6_wSetSup83_LBA48      EQU (1<<10) ; 48-bit LBA feature set supported
318A6_wSetSup83_ACOUSTIC   EQU (1<<9)  ; Automatic Acoustic Management feature set supported
319A6_wSetSup83_SET_MAX    EQU (1<<8)  ; SET MAX security extension supported
320A6_wSetSup83_FEATURES   EQU (1<<6)  ; SET FEATURES subcommand required to spinup after power-up
321A6_wSetSup83_POWERUP    EQU (1<<5)  ; Power-Up In Standby feature set supported
322A6_wSetSup83_RMSN       EQU (1<<4)  ; Removable Media Status Notification feature set supported
323A6_wSetSup83_APM        EQU (1<<3)  ; Advanced Power Management feature set supported
324A6_wSetSup83_CFA        EQU (1<<2)  ; CFA feature set supported
325A6_wSetSup83_DMAQUEUED  EQU (1<<1)  ; READ/WRITE DMA QUEUED supported
326A6_wSetSup83_MICROCODE  EQU (1<<0)  ; DOWNLOAD MICROCODE command supported
327
328; ATA-6 Word 84, Command set/feature supported extension
329A6_wSetSup84_GENLOG     EQU (1<<5)  ; General Purpose Logging feature set supported
330A6_wSetSup84_MEDIAPASS  EQU (1<<3)  ; Media Card Pass Through Command feature set supported
331A6_wSetSup84_MEDIASER   EQU (1<<2)  ; Media serial number supported
332A6_wSetSup84_SMARTTEST  EQU (1<<1)  ; SMART self-test supported
333A6_wSetSup84_SMARTLOG   EQU (1<<0)  ; SMART error logging supported
334
335; ATA-6 Word 85, Command set/feature enabled (supported by word 82)
336A6_wEnFor82_NOP         EQU (1<<14) ; NOP command enabled
337A6_wEnFor82_RDBUFF      EQU (1<<13) ; READ BUFFER command enabled
338A6_wEnFor82_WRBUFF      EQU (1<<12) ; WRITE BUFFER command enabled
339A6_wEnFor82_PROT_AREA   EQU (1<<10) ; Host Protected Area feature set enabled
340A6_wEnFor82_DEV_RESET   EQU (1<<9)  ; DEVICE RESET command enabled
341A6_wEnFor82_SERVICE     EQU (1<<8)  ; SERVICE interrupt enabled
342A6_wEnFor82_RELEASE     EQU (1<<7)  ; Release interrupt enabled
343A6_wEnFor82_LOOKAHEAD   EQU (1<<6)  ; Look-ahead enabled
344A6_wEnFor82_WRCACHE     EQU (1<<5)  ; Write cache enabled
345A6_wEnFor82_POWERMAN    EQU (1<<3)  ; Power Management feature set enabled
346A6_wEnFor82_REM_MEDIA   EQU (1<<2)  ; Removable Media feature set enabled
347A6_wEnFor82_SECURITY    EQU (1<<1)  ; Security Mode feature set enabled
348A6_wEnFor82_SMART       EQU (1<<0)  ; SMART feature set enabled
349
350; ATA-6 Word 86, Command set/feature enabled (supported by word 83)
351A6_wEnFor83_FLUSH_EXT   EQU (1<<13) ; FLUSH CACHE EXT command supported
352A6_wEnFor83_FLUSH       EQU (1<<12) ; FLUSH CACHE command supported
353A6_wEnFor83_CFG         EQU (1<<11) ; Device Configuration Overlay supported
354A6_wEnFor83_LBA48       EQU (1<<10) ; 48-bit LBA feature set supported
355A6_wEnFor83_ACOUSTIC    EQU (1<<9)  ; Automatic Acoustic Management feature set enabled
356A6_wEnFor83_SET_MAX     EQU (1<<8)  ; SET MAX security extension enabled by SET MAX SET PASSWORD
357A6_wEnFor83_FEATURES    EQU (1<<6)  ; SET FEATURES subcommand required to spinup after power-up
358A6_wEnFor83_POWERUP     EQU (1<<5)  ; Power-Up In Standby feature set enabled
359A6_wEnFor83_RMSN        EQU (1<<4)  ; Removable Media Status Notification feature set enabled
360A6_wEnFor83_APM         EQU (1<<3)  ; Advanced Power Management feature set enabled
361A6_wEnFor83_CFA         EQU (1<<2)  ; CFA feature set enabled
362A6_wEnFor83_DMAQUEUED   EQU (1<<1)  ; READ/WRITE DMA QUEUED supported
363A6_wEnFor83_MICROCODE   EQU (1<<0)  ; DOWNLOAD MICROCODE command supported
364
365; ATA-6 Word 87, Command set/feature default
366A6_wEnFor84_GENLOG      EQU (1<<5)  ; General Purpose Logging feature set supported
367A6_wEnFor84_MEDIAPASS   EQU (1<<3)  ; Media Card Pass Through Command feature set enabled
368A6_wEnFor84_MEDIASER    EQU (1<<2)  ; Media serial number is valid
369A6_wEnFor84_SMARTTEST   EQU (1<<1)  ; SMART self-test supported
370A6_wEnFor84_SMARTLOG    EQU (1<<0)  ; SMART error logging supported
371
372; ATA-6 Word 88, Ultra DMA Mode
373A6_wUDMA_MODE5_SELECTED EQU (1<<13) ; Ultra DMA mode 5 is selected
374A6_wUDMA_MODE4_SELECTED EQU (1<<12) ; Ultra DMA mode 4 is selected
375A6_wUDMA_MODE3_SELECTED EQU (1<<11) ; Ultra DMA mode 3 is selected
376A6_wUDMA_MODE2_SELECTED EQU (1<<10) ; Ultra DMA mode 2 is selected
377A6_wUDMA_MODE1_SELECTED EQU (1<<9)  ; Ultra DMA mode 1 is selected
378A6_wUDMA_MODE0_SELECTED EQU (1<<8)  ; Ultra DMA mode 0 is selected
379A6_wUDMA_MODE5_SUPRTD   EQU (1<<5)  ; Ultra DMA mode 5 and below are supported
380A6_wUDMA_MODE4_SUPRTD   EQU (1<<4)  ; Ultra DMA mode 4 and below are supported
381A6_wUDMA_MODE3_SUPRTD   EQU (1<<3)  ; Ultra DMA mode 3 and below are supported
382A6_wUDMA_MODE2_SUPRTD   EQU (1<<2)  ; Ultra DMA mode 2 and below are supported
383A6_wUDMA_MODE1_SUPRTD   EQU (1<<1)  ; Ultra DMA mode 1 and below are supported
384A6_wUDMA_MODE0_SUPRTD   EQU (1<<0)  ; Ultra DMA mode 0 is supported
385
386; ATA-6 Word 93, Hardware reset result
387A6_wReset_CBLID_BELOW   EQU (1<<13) ; Device detected CBLID- above ViH
388A6_wReset_DEV1_PDIAG    EQU (1<<11) ; Device 1 asserted PDIAG-
389A6_wReset_DEV0_RESP_D1  EQU (1<<6)  ; Device 0 responds when Device 1 is selected
390A6_wReset_DEV0_DASP     EQU (1<<5)  ; Device 0 detected the assertion of DASP-
391A6_wReset_DEV0_PDIAG    EQU (1<<4)  ; Device 0 detected the assertion of PDIAG
392A6_wReset_DEV0_PASSED   EQU (1<<3)  ; Device 0 passed diagnostics
393A6_wReset_MASK_DEV1_DETERMINE   EQU ((1<<10)|(1<<9))    ; These bits indicate how Device 1 determined the device number
394A6_wReset_MASK_DEV0_DETERMINE   EQU ((1<<2)|(1<<1))     ; These bits indicate how Device 0 determined the device number:
395A6_wReset_RESERVED      EQU 00b
396A6_wReset_JUMPER        EQU 01b     ; a jumper was used
397A6_wReset_CSEL          EQU 10b     ; the CSEL signal was used
398A6_wReset_UNKNOWN       EQU 11b     ; some other method was used or the method is unknown
399
400; ATA-6 Word 127, Removable Media Status Notification feature set support
401A6_wRMSN_SUPPORTED      EQU (1<<0)  ; Removable Media Status Notification feature supported
402
403; ATA-6 Word 128, Security status
404A6_wSecurity_MAX        EQU (1<<8)  ; Security level 0 = High, 1 = Maximum
405A6_wSecurity_ENH_ERASE  EQU (1<<5)  ; Enhanced security erase supported
406A6_wSecurity_EXPIRED    EQU (1<<4)  ; Security count expired
407A6_wSecurity_FROZEN     EQU (1<<3)  ; Security frozen
408A6_wSecurity_LOCKED     EQU (1<<2)  ; Security locked
409A6_wSecurity_ENABLED    EQU (1<<1)  ; Security enabled
410A6_wSecurity_SUPPORTED  EQU (1<<0)  ; Security supported
411
412; ATA-6 Word 160, CFA Power Mode 1
413A6_wCFAPower_WORDSUPP   EQU (1<<15) ; Word 160 supported
414A6_wCFAPower_REQUIRED   EQU (1<<13) ; CFA power mode 1 is required for one or more commands implemented by the device
415A6_wCFAPower_DISABLED   EQU (1<<12) ; CFA power mode 1 disabled
416A6_wCFAPower_MASK_mA    EQU 0FFFh   ; Maximum current in mA
417
418
419%endif ; ATA_ID_INC
Note: See TracBrowser for help on using the repository browser.