Root/
Source at commit 1319 created 12 years 11 months ago. By meklort, Makefile update | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 2000-2008 Apple 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 | #ifndef _IOATABUSINFO_H␊ |
25 | #define _IOATABUSINFO_H␊ |
26 | ␊ |
27 | #include <libkern/c++/OSObject.h>␊ |
28 | #include <IOKit/IOTypes.h>␊ |
29 | #include "IOATATypes.h"␊ |
30 | ␊ |
31 | /*!␊ |
32 | @class IOATABusInfo␊ |
33 | @discussion used to indicate the capabilities of the bus the device is connected to, PIO and DMA modes supported, etc.␊ |
34 | */␊ |
35 | ␊ |
36 | class IOATABusInfo : public OSObject␊ |
37 | {␊ |
38 | ␉OSDeclareDefaultStructors( IOATABusInfo );␊ |
39 | ␉␊ |
40 | ␉public:␊ |
41 | ␉␊ |
42 | ␉/*!@function atabusinfo␊ |
43 | ␉@abstract factory method␊ |
44 | ␉*/␊ |
45 | ␉static IOATABusInfo* atabusinfo(void);␊ |
46 | ␉␊ |
47 | ␉/*!@function zeroData␊ |
48 | ␉@abstract set this object to a blank state.␊ |
49 | ␉*/␊ |
50 | ␉virtual void zeroData(void);␊ |
51 | ␊ |
52 | ␉// Used by clients of ATAControllers to find out about the bus␊ |
53 | ␉// capability.␊ |
54 | ␊ |
55 | ␉/*!@function getSocketType␊ |
56 | ␉@abstract returns the socket type, internal fixed, media-bay, PC-Card␊ |
57 | ␉Used by clients of ATAControllers to find out about the bus␊ |
58 | ␉*/␊ |
59 | ␉ataSocketType getSocketType( void ); ␊ |
60 | ␊ |
61 | ␉/*!@function getPIOModes␊ |
62 | ␉@abstract returns the bit-significant map of PIO mode(s) supported on the bus. ␊ |
63 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
64 | ␉*/␊ |
65 | ␉UInt8 getPIOModes( void );␊ |
66 | ␉␊ |
67 | ␉/*!@function getDMAModes␊ |
68 | ␉@abstract bit-significant map of DMA mode(s) supported on the bus. ␊ |
69 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
70 | ␉*/␊ |
71 | ␉UInt8 getDMAModes( void );␊ |
72 | ␉␊ |
73 | ␉/*!@function getUltraModes␊ |
74 | ␉@abstract bit-significant map of Ultra mode(s) supported on the bus. ␊ |
75 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
76 | ␉*/␊ |
77 | ␉UInt8 getUltraModes( void );␊ |
78 | ␉␊ |
79 | ␉/*!@function getUnits␊ |
80 | ␉@abstract How many devices are present on bus. ␊ |
81 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
82 | ␉*/␊ |
83 | ␉UInt8 getUnits( void );␉ ␊ |
84 | ␊ |
85 | ␉/*!@function supportsDMA␊ |
86 | ␉@abstract True = DMA supported on bus - inferred by looking at the DMA mode bits.␊ |
87 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
88 | ␉*/␊ |
89 | ␉bool supportsDMA( void ); ␉␉␊ |
90 | ␉␊ |
91 | ␉/*!@function supportsExtendedLBA␊ |
92 | ␉@abstract Supports 48-bit LBA if true.␊ |
93 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
94 | ␉*/␊ |
95 | ␉bool supportsExtendedLBA( void );␊ |
96 | ␉␊ |
97 | ␉/*!@function maxBlocksExtended␊ |
98 | ␉@abstract The maximum number of 512-byte blocks this controller supports␊ |
99 | ␉in a single Extended LBA transfer. Some controllers may be limited to less than ␊ |
100 | ␉the maximum sector count allowed under extended LBA protocol. ␊ |
101 | ␉*/␊ |
102 | ␉UInt16 maxBlocksExtended(void);␊ |
103 | ␉␊ |
104 | ␉/*!@function supportsOverlapped␊ |
105 | ␉@abstract Supports overlapped packet feature set if true. ␊ |
106 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
107 | ␉*/␊ |
108 | ␉bool supportsOverlapped( void ); ␊ |
109 | ␉␊ |
110 | ␉/*!@function supportsDMAQueued␊ |
111 | ␉@abstract Supports DMA Queued Feature set if true. ␊ |
112 | ␉Used by clients of ATAControllers to find out about the bus.␊ |
113 | ␉*/␊ |
114 | ␉bool supportsDMAQueued( void ); ␊ |
115 | ␉␊ |
116 | ␉␊ |
117 | ␉// Used by ATAControllers to generate an information object.␊ |
118 | ␉// Would not be used by disk device drivers normally.␊ |
119 | ␉// Bus controllers should set these items everytime.␊ |
120 | ␉␊ |
121 | ␉/*!@function setSocketType␊ |
122 | ␉@abstract internal fixed, media-bay, PC-Card. Set by ATAControllers.␊ |
123 | ␉*/␊ |
124 | ␉void setSocketType( ataSocketType inSocketType ); ␊ |
125 | ␉␊ |
126 | ␉/*!@function setPIOModes␊ |
127 | ␉@abstract Bit significant map of supported transfer modes. Set by ATAControllers.␊ |
128 | ␉*/␊ |
129 | ␉void setPIOModes( UInt8 inModeBitMap);␉␉␊ |
130 | ␉␊ |
131 | ␉/*!@function setDMAModes␊ |
132 | ␉@abstract Bit significant map of supported transfer modes. Set by ATAControllers.␊ |
133 | ␉*/␊ |
134 | ␉void setDMAModes( UInt8 inModeBitMap );␉␊ |
135 | ␉␊ |
136 | ␉/*!@function setUltraModes␊ |
137 | ␉@abstract Bit significant map of supported transfer modes. Set by ATAControllers.␊ |
138 | ␉*/␊ |
139 | ␉void setUltraModes( UInt8 inModeBitMap );␉␊ |
140 | ␉␊ |
141 | ␉/*!@function setUnits␊ |
142 | ␉@abstract set to indicate how many devices are on this bus. Set by ATAControllers.␊ |
143 | ␉*/␊ |
144 | ␉void setUnits( UInt8 inNumUnits );␊ |
145 | ␊ |
146 | ␉// Optional bus protocols some busses may support␊ |
147 | ␉/*!@function setExtendedLBA␊ |
148 | ␉@abstract Set true for supports 48-bit LBA. Set by ATAControllers.␊ |
149 | ␉*/␊ |
150 | ␉void setExtendedLBA( bool␉inState ); ␉␊ |
151 | ␉␊ |
152 | ␉/*!function setMaxBlocksExtended ␊ |
153 | ␉ @abstract value set by controllers to indicate the maximum number of blocks ␊ |
154 | ␉ allowed in a single transfer of data. Some dma engines may not be capable of supporting the full ␊ |
155 | ␉ 16-bit worth of sector count allowed under 48 bit extended LBA. Default is 256 blocks, same as ␊ |
156 | ␉ standard ATA. ␊ |
157 | ␉ */␊ |
158 | ␉void setMaxBlocksExtended( UInt16 inMaxBlocks);␊ |
159 | ␉␊ |
160 | ␉/*!@function setOverlapped␊ |
161 | ␉@abstract Set true for supports overlapped packet feature set. Set by ATAControllers.␊ |
162 | ␉*/␊ |
163 | ␉void setOverlapped( bool inState); ␉ ␊ |
164 | ␉␊ |
165 | ␉/*!@function setDMAQueued␊ |
166 | ␉@abstract Set true if supports DMA Queued Feature. Set by ATAControllers.␊ |
167 | ␉*/␊ |
168 | ␉void setDMAQueued( bool inState); ␉// ␊ |
169 | ␊ |
170 | ␉protected:␊ |
171 | ␊ |
172 | ␉UInt8 ␉␉␉␉␉␉␉_PIOModes;␉␉␉␉/* PIO modes supported (bit-significant) */␊ |
173 | ␉UInt8 ␉␉␉␉␉␉␉_MultiDMAModes;␉␉␉/* <--: Multiword DMA modes supported (b-sig) */␊ |
174 | ␉UInt8 ␉␉␉␉␉␉␉_UltraDMAModes;␉␉␉/* <--: Ultra DMA modes supported (b-sig) */␊ |
175 | ␉bool␉␉␉␉␉␉␉_ExtendedLBA; /* <--: Suppports 48-bit LBA protocol */␊ |
176 | ␉bool␉␉␉␉␉␉␉_Overlapped;␉␉␉/* <--: Supports overlapped packet feature set */␊ |
177 | ␉bool␉␉␉␉␉␉␉_DMAQueued;␉␉␉␉/* <--: Supports DMA Queued Feature set */␊ |
178 | ␉ataSocketType␉␉␉␉␉_SocketType;␉␉␉/* <--: Indicates bus is fixed internal, removable media-bay, removable PC-Card or unknown type */␊ |
179 | ␉UInt8␉␉␉␉␉␉␉_numUnits;␉␉␉␉/* <--: How many devices on this bus */␊ |
180 | ␉UInt16␉␉␉␉␉␉␉_maxBlocksExtended;␊ |
181 | ␉␊ |
182 | ␉protected:␊ |
183 | /*! @struct ExpansionData␊ |
184 | @discussion This structure will be used to expand the capablilties of the IOWorkLoop in the future.␊ |
185 | */␊ |
186 | struct ExpansionData { };␊ |
187 | ␊ |
188 | /*! @var reserved␊ |
189 | Reserved for future use. (Internal use only) */␊ |
190 | ExpansionData *reserved;␊ |
191 | ␊ |
192 | ␉virtual bool init(); ␊ |
193 | ␊ |
194 | private:␊ |
195 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 0);␊ |
196 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 1);␊ |
197 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 2);␊ |
198 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 3);␊ |
199 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 4);␊ |
200 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 5);␊ |
201 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 6);␊ |
202 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 7);␊ |
203 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 8);␊ |
204 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 9);␊ |
205 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 10);␊ |
206 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 11);␊ |
207 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 12);␊ |
208 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 13);␊ |
209 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 14);␊ |
210 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 15);␊ |
211 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 16);␊ |
212 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 17);␊ |
213 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 18);␊ |
214 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 19);␊ |
215 | OSMetaClassDeclareReservedUnused(IOATABusInfo, 20);␊ |
216 | };␊ |
217 | ␊ |
218 | ␊ |
219 | #endif /* !_IOATABUSINFO_H */␊ |
220 |