Annotation of XNU/iokit/IOKit/ata/ATAPublic.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * The contents of this file constitute Original Code as defined in and
                      7:  * are subject to the Apple Public Source License Version 1.1 (the
                      8:  * "License").  You may not use this file except in compliance with the
                      9:  * License.  Please obtain a copy of the License at
                     10:  * http://www.apple.com/publicsource and read it before using this file.
                     11:  * 
                     12:  * This Original Code and all software distributed under the License are
                     13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     17:  * License for the specific language governing rights and limitations
                     18:  * under the License.
                     19:  * 
                     20:  * @APPLE_LICENSE_HEADER_END@
                     21:  */
                     22: /*
                     23:  *
                     24:  * ATADevice.h
                     25:  *
                     26:  */
                     27: 
                     28: typedef struct ATAIdentify
                     29: {
                     30:     UInt16     generalConfiguration;
                     31:     UInt16     logicalCylinders;
                     32:     UInt16     reserved_1[1];
                     33:     UInt16     logicalHeads;
                     34:     UInt16     reserved_2[2];
                     35:     UInt16     logicalSectorsPerTrack;    
                     36:     UInt16     reserved_3[3];
                     37:     char       serialNumber[20];
                     38:     UInt16     reserved_4[3];
                     39:     char        firmwareRevision[8];
                     40:     char       modelNumber[40];
                     41:     UInt16     multipleModeSectors;
                     42:     UInt16     reserved_5[1];
                     43:     UInt16     capabilities1;
                     44:     UInt16     capabilities2;
                     45:     UInt16     pioMode;
                     46:     UInt16     reserved_6[1];
                     47:     UInt16     validFields;
                     48:     UInt16     currentLogicalCylinders;
                     49:     UInt16     currentLogicalHeads;
                     50:     UInt16     currentLogicalSectorsPerTrack;
                     51:     UInt16     currentAddressableSectors[2];
                     52:     UInt16     currentMultipleModeSectors;
                     53:     UInt16     userAddressableSectors[2];
                     54:     UInt16     reserved_7[1];
                     55:     UInt16     dmaModes;
                     56:     UInt16     advancedPIOModes;
                     57:     UInt16     minDMACycleTime;
                     58:     UInt16     recDMACycleTime;
                     59:     UInt16     minPIOCycleTimeNoIORDY;
                     60:     UInt16     minPIOCyclcTimeIORDY;
                     61:     UInt16     reserved_8[2];
                     62:     UInt16     busReleaseLatency;
                     63:     UInt16     serviceLatency;
                     64:     UInt16     reserved_9[2];
                     65:     UInt16     queueDepth;
                     66:     UInt16     reserved_10[4];
                     67:     UInt16     versionMajor;
                     68:     UInt16     versionMinor;
                     69:     UInt16     commandSetsSupported1;
                     70:     UInt16     commandSetsSupported2;
                     71:     UInt16     commandSetsSupported3;
                     72:     UInt16     commandSetsEnabled1;
                     73:     UInt16     commandSetsEnabled2;
                     74:     UInt16     commandSetsDefault;
                     75:     UInt16     ultraDMAModes;
                     76:     UInt16     securityEraseTime;
                     77:     UInt16     securityEnhancedEraseTime;
                     78:     UInt16     currentAdvPowerMgtValue;
                     79:     UInt16     reserved_11[35];
                     80:     UInt16     removableMediaSupported;
                     81:     UInt16     securityStatus;
                     82:     UInt16      reserved_12[127];
                     83: };
                     84: 
                     85: 
                     86: typedef struct ATAPIInquiry
                     87: {
                     88:     char        reserved[8];
                     89:     char       vendorName[8];
                     90:     char       productName[16];
                     91:     char       productRevision[4];
                     92: };
                     93: 
                     94: typedef struct ATAPISenseData
                     95: {
                     96:     char       reserved[32];
                     97: };
                     98: 
                     99: #define MAX_ATA_REGS           9
                    100: 
                    101: enum ATARegs
                    102: {
                    103:     /*
                    104:      * ATA Register ordinals
                    105:      */
                    106:     ataRegData                 = 0x00,         
                    107:     ataRegFeatures             = 0x01,         
                    108:     ataRegSectorCount          = 0x02,         
                    109:     ataRegSectorNumber         = 0x03,         
                    110:     ataRegCylinderLow          = 0x04,         
                    111:     ataRegCylinderHigh         = 0x05,
                    112:     ataRegDriveHead            = 0x06,
                    113:     ataRegCommand              = 0x07,
                    114: 
                    115:     ataRegError                        = 0x01,
                    116:     ataRegStatus               = 0x07,
                    117: 
                    118:     ataRegDeviceControl                = 0x08,
                    119: 
                    120:     ataRegAltStatus            = 0x08,
                    121: 
                    122:     /*
                    123:      * ATAPI Register ordinals
                    124:      */
                    125:     atapiRegData               = 0x00,
                    126:     atapiRegFeatures           = 0x01,
                    127:     atapiRegIntReason          = 0x02,
                    128:     atapiRegByteCountLow       = 0x04,
                    129:     atapiRegByteCountHigh      = 0x05,
                    130:     atapiRegDeviceSelect       = 0x06,
                    131:     atapiRegCommand            = 0x07,
                    132: 
                    133:     atapiRegError              = 0x01,
                    134:     atapiRegStatus             = 0x07,
                    135: 
                    136:     atapiRegDeviceControl      = 0x08,
                    137: 
                    138:     atapiRegAlternateStatus    = 0x08,
                    139: };
                    140: 
                    141: enum ATAPIIntReason
                    142: {
                    143:     atapiIntReasonCD           = 0x01,
                    144:     atapiIntReasonIO           = 0x02,
                    145:     atapiIntReasonREL          = 0x04,
                    146:     atapiIntReasonTagBit       = 0x08,
                    147:     atapiIntReasonTagMask      = 0xf8,
                    148: };
                    149: 
                    150: enum ATACommand
                    151: {
                    152:     ataModeCHS                 = 0xa0, 
                    153:     ataModeLBA                 = 0xe0,
                    154:  
                    155:     ataCommandSetFeatures      = 0xef,
                    156: 
                    157:     ataCommandIdentify         = 0xec,
                    158: 
                    159:     ataCommandReadSector       = 0x20,
                    160: 
                    161:     atapiCommandReset          = 0x08,
                    162:     atapiCommandPacket         = 0xa0,
                    163:     atapiCommandIdentify       = 0xa1,
                    164: };
                    165: 
                    166: enum ATAFeatures
                    167: {
                    168:     ataFeatureTransferMode             = 0x03, 
                    169:         ataTransferModePIODefault      = 0x00,         // SectorCount settings (or'd w/Mode)   
                    170:         ataTransferModePIOwFC          = 0x08,         
                    171:         ataTransferModeDMA             = 0x20,
                    172:         ataTransferModeUltraDMA33      = 0x40,
                    173:         ataTransferModeMask            = 0x07,
                    174: };
                    175: 
                    176: 
                    177: enum ATAStatus
                    178: {
                    179:     ataStatusERR               = 0x01,
                    180:     ataStatusIDX               = 0x02,
                    181:     ataStatusECC               = 0x04,
                    182:     ataStatusDRQ               = 0x08,
                    183:     ataStatusSC                        = 0x10,
                    184:     ataStatusDF                        = 0x20,
                    185:     ataStatusDRDY              = 0x40,
                    186:     ataStatusBSY               = 0x80,
                    187: 
                    188:     atapiStatusCHK             = 0x01,
                    189:     atapiStatusDRQ             = 0x08,
                    190:     atapiStatusSERV            = 0x10,
                    191:     atapiStatusDMRD            = 0x20,
                    192:     atapiStatusDRDY            = 0x40,
                    193:     atapiStatusBSY             = 0x80,
                    194: };
                    195: 
                    196: enum ATAError
                    197: {
                    198:    ataErrorNM                  = 0x02,
                    199:    ataErrorABRT                        = 0x04,
                    200:    ataErrorMCR                 = 0x08,
                    201:    ataErrorIDNF                        = 0x10,
                    202:    ataErrorMC                  = 0x20,
                    203:    ataErrorWP                  = 0x40,
                    204: 
                    205:    atapiErrorILI               = 0x01,
                    206:    atapiErrorEOM               = 0x02,
                    207:    atapiErrorABRT              = 0x04,
                    208:    atapiSenseKeyBit            = 0x10,
                    209:    atapiSenseKeyMask           = 0xf0,
                    210: };
                    211: 
                    212: enum ATADeviceControl
                    213: {
                    214:     ataDevControlnIEN          = 0x02,
                    215:     ataDevControlSRST          = 0x04,
                    216: };
                    217: 
                    218: enum ATASignatures
                    219: {
                    220:     ataSignatureSectorCount    = 0x01,
                    221:     ataSignatureSectorNumber   = 0x01,
                    222:     ataSignatureCylinderLow    = 0x00,
                    223:     ataSignatureCylinderHigh   = 0x00,
                    224: 
                    225:     atapiSignatureCylinderLow  = 0x14,
                    226:     atapiSignatureCylinderHigh  = 0xeb,
                    227: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.