|
|
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: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
24: *
25: * IOATAHDDriveNub.cpp
26: *
27: * This subclass implements a relay to a protocol and device-specific
28: * provider.
29: *
30: * HISTORY
31: * Aug 27, 1999 jliu - Created.
32: */
33:
34: #include <IOKit/IOLib.h>
35: #include <IOKit/storage/ata/IOATAHDDriveNub.h>
36: #include <IOKit/storage/ata/IOATAHDDrive.h>
37:
38: #define super IOHDDriveNub
39: OSDefineMetaClassAndStructors( IOATAHDDriveNub, IOHDDriveNub )
40:
41: // --------------------------------------------------------------------------
42: // attach to provider.
43:
44: bool IOATAHDDriveNub::attach(IOService * provider)
45: {
46: if (!super::attach(provider))
47: return false;
48:
49: _provider = OSDynamicCast(IOATAHDDrive, provider);
50: if (_provider == 0) {
51: IOLog("IOATAHDDriveNub: attach; wrong provider type!\n");
52: return false;
53: }
54:
55: return true;
56: }
57:
58: // --------------------------------------------------------------------------
59: // detach from provider.
60:
61: void IOATAHDDriveNub::detach(IOService * provider)
62: {
63: if (_provider == provider)
64: _provider = 0;
65:
66: super::detach(provider);
67: }
68:
69: // --------------------------------------------------------------------------
70: //
71:
72: IOReturn IOATAHDDriveNub::doAsyncReadWrite(IOMemoryDescriptor * buffer,
73: UInt32 block,
74: UInt32 nblks,
75: gdCompletionFunction action,
76: IOService * target,
77: void * param)
78: {
79: return (_provider->doAsyncReadWrite(buffer,
80: block,
81: nblks,
82: action,
83: target,
84: param));
85: }
86:
87: IOReturn IOATAHDDriveNub::doSyncReadWrite(IOMemoryDescriptor *buffer,
88: UInt32 block,UInt32 nblks)
89: {
90: return(kIOReturnUnsupported); //xxx must be implemented!
91: }
92:
93: // --------------------------------------------------------------------------
94: //
95:
96: IOReturn IOATAHDDriveNub::doEjectMedia()
97: {
98: return (_provider->doEjectMedia());
99: }
100:
101: // --------------------------------------------------------------------------
102: //
103:
104: IOReturn IOATAHDDriveNub::doFormatMedia(UInt64 byteCapacity)
105: {
106: return (_provider->doFormatMedia(byteCapacity));
107: }
108:
109: // --------------------------------------------------------------------------
110: //
111:
112: UInt32
113: IOATAHDDriveNub::doGetFormatCapacities(UInt64 * capacities,
114: UInt32 capacitiesMaxCount) const
115: {
116: return (_provider->doGetFormatCapacities(capacities, capacitiesMaxCount));
117: }
118:
119: // --------------------------------------------------------------------------
120: //
121:
122: IOReturn IOATAHDDriveNub::doLockUnlockMedia(bool doLock)
123: {
124: return (_provider->doLockUnlockMedia(doLock));
125: }
126:
127: // --------------------------------------------------------------------------
128: //
129:
130: // --------------------------------------------------------------------------
131: //
132:
133: IOReturn IOATAHDDriveNub::doSynchronizeCache()
134: {
135: return (_provider->doSynchronizeCache());
136: }
137:
138: IOReturn IOATAHDDriveNub::executeCdb(struct cdbParams *params)
139: {
140: return(kIOReturnUnsupported); // n/a for ATA; no cdb concept
141: }
142:
143: // --------------------------------------------------------------------------
144: //
145:
146: char * IOATAHDDriveNub::getVendorString()
147: {
148: return (_provider->getVendorString());
149: }
150:
151: // --------------------------------------------------------------------------
152: //
153:
154: char * IOATAHDDriveNub::getProductString()
155: {
156: return (_provider->getProductString());
157: }
158:
159: // --------------------------------------------------------------------------
160: //
161:
162: char * IOATAHDDriveNub::getRevisionString()
163: {
164: return (_provider->getRevisionString());
165: }
166:
167: // --------------------------------------------------------------------------
168: //
169:
170: char * IOATAHDDriveNub::getAdditionalDeviceInfoString()
171: {
172: return (_provider->getAdditionalDeviceInfoString());
173: }
174:
175: // --------------------------------------------------------------------------
176: //
177:
178: IOReturn IOATAHDDriveNub::reportBlockSize(UInt64 * blockSize)
179: {
180: return (_provider->reportBlockSize(blockSize));
181: }
182:
183: // --------------------------------------------------------------------------
184: //
185:
186: IOReturn IOATAHDDriveNub::reportEjectability(bool * isEjectable)
187: {
188: return (_provider->reportEjectability(isEjectable));
189: }
190:
191: // --------------------------------------------------------------------------
192: //
193:
194: IOReturn IOATAHDDriveNub::reportLockability(bool * isLockable)
195: {
196: return (_provider->reportLockability(isLockable));
197: }
198:
199: // --------------------------------------------------------------------------
200: //
201:
202: IOReturn IOATAHDDriveNub::reportPollRequirements(bool * pollIsRequired,
203: bool * pollIsExpensive)
204: {
205: return (_provider->reportPollRequirements(pollIsRequired,
206: pollIsExpensive));
207: }
208:
209: // --------------------------------------------------------------------------
210: //
211:
212: IOReturn IOATAHDDriveNub::reportMaxReadTransfer(UInt64 blockSize,
213: UInt64 * max)
214: {
215: return (_provider->reportMaxReadTransfer(blockSize, max));
216: }
217:
218: // --------------------------------------------------------------------------
219: //
220:
221: IOReturn IOATAHDDriveNub::reportMaxValidBlock(UInt64 * maxBlock)
222: {
223: return (_provider->reportMaxValidBlock(maxBlock));
224: }
225:
226: // --------------------------------------------------------------------------
227: //
228:
229: IOReturn IOATAHDDriveNub::reportMaxWriteTransfer(UInt64 blockSize,
230: UInt64 * max)
231: {
232: return (_provider->reportMaxWriteTransfer(blockSize, max));
233: }
234:
235: // --------------------------------------------------------------------------
236: //
237:
238: IOReturn IOATAHDDriveNub::reportMediaState(bool * mediaPresent,
239: bool * changed)
240: {
241: return (_provider->reportMediaState(mediaPresent,changed));
242: }
243:
244: // --------------------------------------------------------------------------
245: //
246:
247: IOReturn IOATAHDDriveNub::reportRemovability(bool * isRemovable)
248: {
249: return (_provider->reportRemovability(isRemovable));
250: }
251:
252: // --------------------------------------------------------------------------
253: //
254:
255: IOReturn IOATAHDDriveNub::reportWriteProtection(bool * isWriteProtected)
256: {
257: return (_provider->reportWriteProtection(isWriteProtected));
258: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.