]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Bus/Pci/IdeBus/Dxe/idebus.h
e49e7623e506dc579bf711338500eff9c6bba367
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / IdeBus / Dxe / idebus.h
1 /** @file
2 Header file for IDE Bus Driver.
3
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _IDE_BUS_H
16 #define _IDE_BUS_H
17
18
19 #include <IndustryStandard/pci22.h>
20 #include "idedata.h"
21
22 //
23 // Extra Definition to porting
24 //
25 #define EFI_MIN(a, b) (((a) < (b)) ? (a) : (b))
26
27 #define MAX_IDE_DEVICE 4
28 #define MAX_IDE_CHANNELS 2
29 #define MAX_IDE_DRIVES 2
30
31 #define INVALID_DEVICE_TYPE 0xff
32 #define ATA_DEVICE_TYPE 0x00
33 #define ATAPI_DEVICE_TYPE 0x01
34
35 typedef struct {
36 BOOLEAN HaveScannedDevice[MAX_IDE_DEVICE];
37 BOOLEAN DeviceFound[MAX_IDE_DEVICE];
38 BOOLEAN DeviceProcessed[MAX_IDE_DEVICE];
39 } IDE_BUS_DRIVER_PRIVATE_DATA;
40
41 #define IDE_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('i', 'b', 'i', 'd')
42
43 typedef struct {
44 UINT32 Signature;
45
46 EFI_HANDLE Handle;
47 EFI_BLOCK_IO_PROTOCOL BlkIo;
48 EFI_BLOCK_IO_MEDIA BlkMedia;
49 EFI_DISK_INFO_PROTOCOL DiskInfo;
50 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
51 EFI_PCI_IO_PROTOCOL *PciIo;
52 IDE_BUS_DRIVER_PRIVATE_DATA *IdeBusDriverPrivateData;
53
54 //
55 // Local Data for IDE interface goes here
56 //
57 EFI_IDE_CHANNEL Channel;
58 EFI_IDE_DEVICE Device;
59 UINT16 Lun;
60 IDE_DEVICE_TYPE Type;
61
62 IDE_BASE_REGISTERS *IoPort;
63 UINT16 AtapiError;
64
65 INQUIRY_DATA *pInquiryData;
66 EFI_IDENTIFY_DATA *pIdData;
67 ATA_PIO_MODE PioMode;
68 ATA_UDMA_MODE UDma_Mode;
69 CHAR8 ModelName[41];
70 REQUEST_SENSE_DATA *SenseData;
71 UINT8 SenseDataNumber;
72 UINT8 *Cache;
73
74 //
75 // ExitBootService Event, it is used to clear pending IDE interrupt
76 //
77 EFI_EVENT ExitBootServiceEvent;
78
79 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
80 } IDE_BLK_IO_DEV;
81
82 #include "ComponentName.h"
83
84 #define IDE_BLOCK_IO_DEV_FROM_THIS(a) CR (a, IDE_BLK_IO_DEV, BlkIo, IDE_BLK_IO_DEV_SIGNATURE)
85 #define IDE_BLOCK_IO_DEV_FROM_DISK_INFO_THIS(a) CR (a, IDE_BLK_IO_DEV, DiskInfo, IDE_BLK_IO_DEV_SIGNATURE)
86
87 //
88 // Global Variables
89 //
90 extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding;
91
92 #include "ide.h"
93
94 //
95 // Prototypes
96 // Driver model protocol interface
97 //
98 /**
99 TODO: Add function description
100
101 @param ImageHandle TODO: add argument description
102 @param SystemTable TODO: add argument description
103
104 TODO: add return values
105
106 **/
107 EFI_STATUS
108 EFIAPI
109 IDEBusControllerDriverEntryPoint (
110 IN EFI_HANDLE ImageHandle,
111 IN EFI_SYSTEM_TABLE *SystemTable
112 )
113 ;
114
115 /**
116 TODO: Add function description
117
118 @param This TODO: add argument description
119 @param Controller TODO: add argument description
120 @param RemainingDevicePath TODO: add argument description
121
122 TODO: add return values
123
124 **/
125 EFI_STATUS
126 EFIAPI
127 IDEBusDriverBindingSupported (
128 IN EFI_DRIVER_BINDING_PROTOCOL *This,
129 IN EFI_HANDLE Controller,
130 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
131 )
132 ;
133
134 /**
135 TODO: Add function description
136
137 @param This TODO: add argument description
138 @param Controller TODO: add argument description
139 @param RemainingDevicePath TODO: add argument description
140
141 TODO: add return values
142
143 **/
144 EFI_STATUS
145 EFIAPI
146 IDEBusDriverBindingStart (
147 IN EFI_DRIVER_BINDING_PROTOCOL *This,
148 IN EFI_HANDLE Controller,
149 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
150 )
151 ;
152
153 /**
154 TODO: Add function description
155
156 @param This TODO: add argument description
157 @param Controller TODO: add argument description
158 @param NumberOfChildren TODO: add argument description
159 @param ChildHandleBuffer TODO: add argument description
160
161 TODO: add return values
162
163 **/
164 EFI_STATUS
165 EFIAPI
166 IDEBusDriverBindingStop (
167 IN EFI_DRIVER_BINDING_PROTOCOL *This,
168 IN EFI_HANDLE Controller,
169 IN UINTN NumberOfChildren,
170 IN EFI_HANDLE *ChildHandleBuffer
171 )
172 ;
173
174 //
175 // Block I/O Protocol Interface
176 //
177 /**
178 TODO: Add function description
179
180 @param This TODO: add argument description
181 @param ExtendedVerification TODO: add argument description
182
183 TODO: add return values
184
185 **/
186 EFI_STATUS
187 EFIAPI
188 IDEBlkIoReset (
189 IN EFI_BLOCK_IO_PROTOCOL *This,
190 IN BOOLEAN ExtendedVerification
191 )
192 ;
193
194 /**
195 TODO: Add function description
196
197 @param This TODO: add argument description
198 @param MediaId TODO: add argument description
199 @param LBA TODO: add argument description
200 @param BufferSize TODO: add argument description
201 @param Buffer TODO: add argument description
202
203 TODO: add return values
204
205 **/
206 EFI_STATUS
207 EFIAPI
208 IDEBlkIoReadBlocks (
209 IN EFI_BLOCK_IO_PROTOCOL *This,
210 IN UINT32 MediaId,
211 IN EFI_LBA LBA,
212 IN UINTN BufferSize,
213 OUT VOID *Buffer
214 )
215 ;
216
217 /**
218 TODO: Add function description
219
220 @param This TODO: add argument description
221 @param MediaId TODO: add argument description
222 @param LBA TODO: add argument description
223 @param BufferSize TODO: add argument description
224 @param Buffer TODO: add argument description
225
226 TODO: add return values
227
228 **/
229 EFI_STATUS
230 EFIAPI
231 IDEBlkIoWriteBlocks (
232 IN EFI_BLOCK_IO_PROTOCOL *This,
233 IN UINT32 MediaId,
234 IN EFI_LBA LBA,
235 IN UINTN BufferSize,
236 IN VOID *Buffer
237 )
238 ;
239
240 /**
241 TODO: Add function description
242
243 @param This TODO: add argument description
244
245 TODO: add return values
246
247 **/
248 EFI_STATUS
249 EFIAPI
250 IDEBlkIoFlushBlocks (
251 IN EFI_BLOCK_IO_PROTOCOL *This
252 )
253 ;
254
255 /**
256 TODO: Add function description
257
258 @param PciIo TODO: add argument description
259 @param Enable TODO: add argument description
260
261 TODO: add return values
262
263 **/
264 EFI_STATUS
265 IDERegisterDecodeEnableorDisable (
266 IN EFI_PCI_IO_PROTOCOL *PciIo,
267 IN BOOLEAN Enable
268 )
269 ;
270
271 /**
272 TODO: Add function description
273
274 @param This TODO: add argument description
275 @param InquiryData TODO: add argument description
276 @param IntquiryDataSize TODO: add argument description
277
278 TODO: add return values
279
280 **/
281 EFI_STATUS
282 EFIAPI
283 IDEDiskInfoInquiry (
284 IN EFI_DISK_INFO_PROTOCOL *This,
285 IN OUT VOID *InquiryData,
286 IN OUT UINT32 *IntquiryDataSize
287 )
288 ;
289
290 /**
291 TODO: Add function description
292
293 @param This TODO: add argument description
294 @param IdentifyData TODO: add argument description
295 @param IdentifyDataSize TODO: add argument description
296
297 TODO: add return values
298
299 **/
300 EFI_STATUS
301 EFIAPI
302 IDEDiskInfoIdentify (
303 IN EFI_DISK_INFO_PROTOCOL *This,
304 IN OUT VOID *IdentifyData,
305 IN OUT UINT32 *IdentifyDataSize
306 )
307 ;
308
309 /**
310 TODO: Add function description
311
312 @param This TODO: add argument description
313 @param SenseData TODO: add argument description
314 @param SenseDataSize TODO: add argument description
315 @param SenseDataNumber TODO: add argument description
316
317 TODO: add return values
318
319 **/
320 EFI_STATUS
321 EFIAPI
322 IDEDiskInfoSenseData (
323 IN EFI_DISK_INFO_PROTOCOL *This,
324 IN OUT VOID *SenseData,
325 IN OUT UINT32 *SenseDataSize,
326 OUT UINT8 *SenseDataNumber
327 )
328 ;
329
330 /**
331 TODO: Add function description
332
333 @param This TODO: add argument description
334 @param IdeChannel TODO: add argument description
335 @param IdeDevice TODO: add argument description
336
337 TODO: add return values
338
339 **/
340 EFI_STATUS
341 EFIAPI
342 IDEDiskInfoWhichIde (
343 IN EFI_DISK_INFO_PROTOCOL *This,
344 OUT UINT32 *IdeChannel,
345 OUT UINT32 *IdeDevice
346 )
347 ;
348
349 #endif