]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.h
Fix some inconsistencies in EFIAPI usage.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / IdeBusDxe / IdeBus.h
1 /** @file
2 Header file for IDE Bus Driver.
3
4 Copyright (c) 2006 - 2007 Intel Corporation. <BR>
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
20 #include <FrameworkDxe.h>
21
22 #include <Protocol/IdeControllerInit.h>
23 #include <Protocol/BlockIo.h>
24 #include <Protocol/PciIo.h>
25 #include <Protocol/DiskInfo.h>
26 #include <Protocol/DevicePath.h>
27
28 #include <Library/DebugLib.h>
29 #include <Library/UefiDriverEntryPoint.h>
30 #include <Library/BaseLib.h>
31 #include <Library/UefiLib.h>
32 #include <Library/BaseMemoryLib.h>
33 #include <Library/ReportStatusCodeLib.h>
34 #include <Library/MemoryAllocationLib.h>
35 #include <Library/PerformanceLib.h>
36 #include <Library/UefiBootServicesTableLib.h>
37 #include <Library/UefiRuntimeServicesTableLib.h>
38 #include <Library/DevicePathLib.h>
39
40 #include <Guid/EventGroup.h>
41
42 #include <IndustryStandard/Pci22.h>
43 #include "IdeData.h"
44
45 //
46 // Extra Definition to porting
47 //
48 #define MAX_IDE_DEVICE 4
49 #define MAX_IDE_CHANNELS 2
50 #define MAX_IDE_DRIVES 2
51
52 #define INVALID_DEVICE_TYPE 0xff
53 #define ATA_DEVICE_TYPE 0x00
54 #define ATAPI_DEVICE_TYPE 0x01
55
56 #define EFI_IOB_ATA_BUS_SMART_ENABLE (EFI_SUBCLASS_SPECIFIC | 0x00000000)
57 #define EFI_IOB_ATA_BUS_SMART_DISABLE (EFI_SUBCLASS_SPECIFIC | 0x00000001)
58 #define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000002)
59 #define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000003)
60
61 typedef struct {
62 BOOLEAN HaveScannedDevice[MAX_IDE_DEVICE];
63 BOOLEAN DeviceFound[MAX_IDE_DEVICE];
64 BOOLEAN DeviceProcessed[MAX_IDE_DEVICE];
65 } IDE_BUS_DRIVER_PRIVATE_DATA;
66
67 #define IDE_BLK_IO_DEV_SIGNATURE SIGNATURE_32 ('i', 'b', 'i', 'd')
68
69 typedef struct {
70 UINT32 Signature;
71
72 EFI_HANDLE Handle;
73 EFI_BLOCK_IO_PROTOCOL BlkIo;
74 EFI_BLOCK_IO_MEDIA BlkMedia;
75 EFI_DISK_INFO_PROTOCOL DiskInfo;
76 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
77 EFI_PCI_IO_PROTOCOL *PciIo;
78 IDE_BUS_DRIVER_PRIVATE_DATA *IdeBusDriverPrivateData;
79
80 //
81 // Local Data for IDE interface goes here
82 //
83 EFI_IDE_CHANNEL Channel;
84 EFI_IDE_DEVICE Device;
85 UINT16 Lun;
86 IDE_DEVICE_TYPE Type;
87
88 IDE_BASE_REGISTERS *IoPort;
89 UINT16 AtapiError;
90
91 ATAPI_INQUIRY_DATA *pInquiryData;
92 EFI_IDENTIFY_DATA *pIdData;
93 ATA_PIO_MODE PioMode;
94 EFI_ATA_MODE UdmaMode;
95 CHAR8 ModelName[41];
96 ATAPI_REQUEST_SENSE_DATA *SenseData;
97 UINT8 SenseDataNumber;
98 UINT8 *Cache;
99
100 //
101 // ExitBootService Event, it is used to clear pending IDE interrupt
102 //
103 EFI_EVENT ExitBootServiceEvent;
104
105 EFI_UNICODE_STRING_TABLE *ControllerNameTable;
106 } IDE_BLK_IO_DEV;
107
108 #include "ComponentName.h"
109
110 #define IDE_BLOCK_IO_DEV_FROM_THIS(a) CR (a, IDE_BLK_IO_DEV, BlkIo, IDE_BLK_IO_DEV_SIGNATURE)
111 #define IDE_BLOCK_IO_DEV_FROM_DISK_INFO_THIS(a) CR (a, IDE_BLK_IO_DEV, DiskInfo, IDE_BLK_IO_DEV_SIGNATURE)
112
113 //
114 // Global Variables
115 //
116 extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding;
117 extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics;
118 extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gIDEBusDriverDiagnostics2;
119
120 #include "Ide.h"
121
122 //
123 // Prototypes
124 // Driver model protocol interface
125 //
126 /**
127 TODO: Add function description
128
129 @param ImageHandle TODO: add argument description
130 @param SystemTable TODO: add argument description
131
132 TODO: add return values.
133
134 **/
135 EFI_STATUS
136 EFIAPI
137 IDEBusControllerDriverEntryPoint (
138 IN EFI_HANDLE ImageHandle,
139 IN EFI_SYSTEM_TABLE *SystemTable
140 );
141
142 /**
143 TODO: Add function description
144
145 @param This TODO: add argument description
146 @param Controller TODO: add argument description
147 @param RemainingDevicePath TODO: add argument description
148
149 TODO: add return values.
150
151 **/
152 EFI_STATUS
153 EFIAPI
154 IDEBusDriverBindingSupported (
155 IN EFI_DRIVER_BINDING_PROTOCOL *This,
156 IN EFI_HANDLE Controller,
157 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
158 );
159
160 /**
161 TODO: Add function description
162
163 @param This TODO: add argument description
164 @param Controller TODO: add argument description
165 @param RemainingDevicePath TODO: add argument description
166
167 TODO: add return values.
168
169 **/
170 EFI_STATUS
171 EFIAPI
172 IDEBusDriverBindingStart (
173 IN EFI_DRIVER_BINDING_PROTOCOL *This,
174 IN EFI_HANDLE Controller,
175 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
176 );
177
178 /**
179 TODO: Add function description
180
181 @param This TODO: add argument description
182 @param Controller TODO: add argument description
183 @param NumberOfChildren TODO: add argument description
184 @param ChildHandleBuffer TODO: add argument description
185
186 TODO: add return values.
187
188 **/
189 EFI_STATUS
190 EFIAPI
191 IDEBusDriverBindingStop (
192 IN EFI_DRIVER_BINDING_PROTOCOL *This,
193 IN EFI_HANDLE Controller,
194 IN UINTN NumberOfChildren,
195 IN EFI_HANDLE *ChildHandleBuffer
196 );
197
198 //
199 // EFI Driver Configuration Functions
200 //
201 /**
202 TODO: Add function description
203
204 @param This TODO: add argument description
205 @param ControllerHandle TODO: add argument description
206 @param ChildHandle TODO: add argument description
207 @param Language TODO: add argument description
208 @param ActionRequired TODO: add argument description
209
210 TODO: add return values.
211
212 **/
213 EFI_STATUS
214 EFIAPI
215 IDEBusDriverConfigurationSetOptions (
216 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,
217 IN EFI_HANDLE ControllerHandle,
218 IN EFI_HANDLE ChildHandle OPTIONAL,
219 IN CHAR8 *Language,
220 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired
221 );
222
223 /**
224 TODO: Add function description
225
226 @param This TODO: add argument description
227 @param ControllerHandle TODO: add argument description
228 @param ChildHandle TODO: add argument description
229
230 TODO: add return values.
231
232 **/
233 EFI_STATUS
234 EFIAPI
235 IDEBusDriverConfigurationOptionsValid (
236 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,
237 IN EFI_HANDLE ControllerHandle,
238 IN EFI_HANDLE ChildHandle OPTIONAL
239 );
240
241 /**
242 TODO: Add function description
243
244 @param This TODO: add argument description
245 @param ControllerHandle TODO: add argument description
246 @param ChildHandle TODO: add argument description
247 @param DefaultType TODO: add argument description
248 @param ActionRequired TODO: add argument description
249
250 TODO: add return values.
251
252 **/
253 EFI_STATUS
254 EFIAPI
255 IDEBusDriverConfigurationForceDefaults (
256 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,
257 IN EFI_HANDLE ControllerHandle,
258 IN EFI_HANDLE ChildHandle OPTIONAL,
259 IN UINT32 DefaultType,
260 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired
261 );
262
263 //
264 // EFI Driver Diagnostics Functions
265 //
266 /**
267 TODO: Add function description
268
269 @param This TODO: add argument description
270 @param ControllerHandle TODO: add argument description
271 @param ChildHandle TODO: add argument description
272 @param DiagnosticType TODO: add argument description
273 @param Language TODO: add argument description
274 @param ErrorType TODO: add argument description
275 @param BufferSize TODO: add argument description
276 @param Buffer TODO: add argument description
277
278 TODO: add return values.
279
280 **/
281 EFI_STATUS
282 EFIAPI
283 IDEBusDriverDiagnosticsRunDiagnostics (
284 IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This,
285 IN EFI_HANDLE ControllerHandle,
286 IN EFI_HANDLE ChildHandle OPTIONAL,
287 IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType,
288 IN CHAR8 *Language,
289 OUT EFI_GUID **ErrorType,
290 OUT UINTN *BufferSize,
291 OUT CHAR16 **Buffer
292 );
293
294 //
295 // Block I/O Protocol Interface
296 //
297 /**
298 TODO: Add function description
299
300 @param This TODO: add argument description
301 @param ExtendedVerification TODO: add argument description
302
303 TODO: add return values.
304
305 **/
306 EFI_STATUS
307 EFIAPI
308 IDEBlkIoReset (
309 IN EFI_BLOCK_IO_PROTOCOL *This,
310 IN BOOLEAN ExtendedVerification
311 );
312
313 /**
314 TODO: Add function description
315
316 @param This TODO: add argument description
317 @param MediaId TODO: add argument description
318 @param LBA TODO: add argument description
319 @param BufferSize TODO: add argument description
320 @param Buffer TODO: add argument description
321
322 TODO: add return values.
323
324 **/
325 EFI_STATUS
326 EFIAPI
327 IDEBlkIoReadBlocks (
328 IN EFI_BLOCK_IO_PROTOCOL *This,
329 IN UINT32 MediaId,
330 IN EFI_LBA LBA,
331 IN UINTN BufferSize,
332 OUT VOID *Buffer
333 );
334
335 /**
336 TODO: Add function description
337
338 @param This TODO: add argument description
339 @param MediaId TODO: add argument description
340 @param LBA TODO: add argument description
341 @param BufferSize TODO: add argument description
342 @param Buffer TODO: add argument description
343
344 TODO: add return values.
345
346 **/
347 EFI_STATUS
348 EFIAPI
349 IDEBlkIoWriteBlocks (
350 IN EFI_BLOCK_IO_PROTOCOL *This,
351 IN UINT32 MediaId,
352 IN EFI_LBA LBA,
353 IN UINTN BufferSize,
354 IN VOID *Buffer
355 );
356
357 /**
358 TODO: Add function description
359
360 @param This TODO: add argument description
361
362 TODO: add return values.
363
364 **/
365 EFI_STATUS
366 EFIAPI
367 IDEBlkIoFlushBlocks (
368 IN EFI_BLOCK_IO_PROTOCOL *This
369 );
370
371 /**
372 TODO: Add function description
373
374 @param PciIo TODO: add argument description
375 @param Enable TODO: add argument description
376
377 TODO: add return values.
378
379 **/
380 EFI_STATUS
381 IDERegisterDecodeEnableorDisable (
382 IN EFI_PCI_IO_PROTOCOL *PciIo,
383 IN BOOLEAN Enable
384 );
385
386 /**
387 TODO: Add function description
388
389 @param This TODO: add argument description
390 @param InquiryData TODO: add argument description
391 @param IntquiryDataSize TODO: add argument description
392
393 TODO: add return values.
394
395 **/
396 EFI_STATUS
397 EFIAPI
398 IDEDiskInfoInquiry (
399 IN EFI_DISK_INFO_PROTOCOL *This,
400 IN OUT VOID *InquiryData,
401 IN OUT UINT32 *IntquiryDataSize
402 );
403
404 /**
405 TODO: Add function description
406
407 @param This TODO: add argument description
408 @param IdentifyData TODO: add argument description
409 @param IdentifyDataSize TODO: add argument description
410
411 TODO: add return values.
412
413 **/
414 EFI_STATUS
415 EFIAPI
416 IDEDiskInfoIdentify (
417 IN EFI_DISK_INFO_PROTOCOL *This,
418 IN OUT VOID *IdentifyData,
419 IN OUT UINT32 *IdentifyDataSize
420 );
421
422 /**
423 TODO: Add function description
424
425 @param This TODO: add argument description
426 @param SenseData TODO: add argument description
427 @param SenseDataSize TODO: add argument description
428 @param SenseDataNumber TODO: add argument description
429
430 TODO: add return values.
431
432 **/
433 EFI_STATUS
434 EFIAPI
435 IDEDiskInfoSenseData (
436 IN EFI_DISK_INFO_PROTOCOL *This,
437 IN OUT VOID *SenseData,
438 IN OUT UINT32 *SenseDataSize,
439 OUT UINT8 *SenseDataNumber
440 );
441
442 /**
443 TODO: Add function description
444
445 @param This TODO: add argument description
446 @param IdeChannel TODO: add argument description
447 @param IdeDevice TODO: add argument description
448
449 TODO: add return values.
450
451 **/
452 EFI_STATUS
453 EFIAPI
454 IDEDiskInfoWhichIde (
455 IN EFI_DISK_INFO_PROTOCOL *This,
456 OUT UINT32 *IdeChannel,
457 OUT UINT32 *IdeDevice
458 );
459
460 #endif