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