|
|
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: * ATACommand.h
25: *
26: */
27:
28: enum ATADeviceType
29: {
30: ataDeviceNone,
31: ataDeviceATA,
32: ataDeviceATAPI,
33: };
34:
35:
36: enum ATATimingProtocol
37: {
38: ataTimingPIO = (1 << 0),
39: ataTimingDMA = (1 << 1),
40: ataTimingUltraDMA33 = (1 << 2),
ataTimingUltraDMA66 = (1 << 3),
41: ataMaxTimings = 4,
42: };
43:
44: enum ATAProtocol
45: {
46: ataProtocolSetRegs = (1 << 0),
47: ataProtocolPIO = (1 << 1),
48: ataProtocolPIOMultiple = (1 << 2),
49: ataProtocolDMA = (1 << 3),
50: ataProtocolDMAQueued = (1 << 4),
51: ataProtocolDMAQueuedRelease = (1 << 5),
52:
53: atapiProtocolPIO = (1 << 16),
54: atapiProtocolDMA = (1 << 17),
55: };
56:
57: typedef struct ATATiming
58: {
59: ATATimingProtocol timingProtocol;
60:
61: UInt32 featureSetting;
62:
63: UInt32 mode;
UInt32 minDataAccess;
UInt32 minDataCycle;
UInt32 minCmdAccess;
UInt32 minCmdCycle;
64: UInt32 reserved_3[9];
} ATATiming;
65:
66:
67: enum ATAReturnCode
68: {
69: ataReturnNoError,
70: ataReturnNotSupported,
71: ataReturnNoResource,
72: ataReturnErrorRetryPIO,
73: ataReturnErrorBusy,
74: ataReturnErrorInterruptTimeout,
75: ataReturnErrorStatus,
76: ataReturnErrorProtocol,
77: ataReturnErrorDMA,
78: ataReturnBusReset,
79: };
80:
81: #define ATARegtoMask(reg) (1<<(reg))
82:
83: typedef struct ATATaskfile
{
84: ATAProtocol protocol;
85:
86: UInt32 resultmask;
87:
UInt32 regmask;
88: UInt32 ataRegs[MAX_ATA_REGS];
89:
} ATATaskfile;
90:
91: typedef struct ATAResults
92: {
93: ATAReturnCode returnCode;
94:
95: UInt32 bytesTransferred;
96: UInt32 ataRegs[MAX_ATA_REGS];
97:
98: UInt32 senseLength;
99: } ATAResults;
100:
101:
102: typedef struct ATAPICmd
103: {
104: UInt32 cdbLength;
105: UInt8 cdb[16];
106: } ATAPICmd;
107:
108: enum ATAMessages
109: {
110: ataMessageInitDevice = 1,
111: ataMessageResetStarted = 2,
112: ataMessageResetComplete = 3,
113: };
114:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.