]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.h
update tools_def.template to supply all possible combination of toolchain and ASL
[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
45//\r
46// Extra Definition to porting\r
47//\r
ead42efc 48#define MAX_IDE_DEVICE 4\r
49#define MAX_IDE_CHANNELS 2\r
50#define MAX_IDE_DRIVES 2\r
51\r
52#define INVALID_DEVICE_TYPE 0xff\r
53#define ATA_DEVICE_TYPE 0x00\r
54#define ATAPI_DEVICE_TYPE 0x01\r
55\r
2697c171 56#define EFI_IOB_ATA_BUS_SMART_ENABLE (EFI_SUBCLASS_SPECIFIC | 0x00000000)\r
57#define EFI_IOB_ATA_BUS_SMART_DISABLE (EFI_SUBCLASS_SPECIFIC | 0x00000001)\r
58#define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000002)\r
59#define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000003)\r
60\r
ead42efc 61typedef struct {\r
62 BOOLEAN HaveScannedDevice[MAX_IDE_DEVICE];\r
63 BOOLEAN DeviceFound[MAX_IDE_DEVICE];\r
64 BOOLEAN DeviceProcessed[MAX_IDE_DEVICE];\r
65} IDE_BUS_DRIVER_PRIVATE_DATA;\r
66\r
f02bd376 67#define IDE_BLK_IO_DEV_SIGNATURE SIGNATURE_32 ('i', 'b', 'i', 'd')\r
ead42efc 68\r
69typedef struct {\r
70 UINT32 Signature;\r
71\r
72 EFI_HANDLE Handle;\r
73 EFI_BLOCK_IO_PROTOCOL BlkIo;\r
74 EFI_BLOCK_IO_MEDIA BlkMedia;\r
75 EFI_DISK_INFO_PROTOCOL DiskInfo;\r
76 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
77 EFI_PCI_IO_PROTOCOL *PciIo;\r
78 IDE_BUS_DRIVER_PRIVATE_DATA *IdeBusDriverPrivateData;\r
79\r
80 //\r
81 // Local Data for IDE interface goes here\r
82 //\r
83 EFI_IDE_CHANNEL Channel;\r
84 EFI_IDE_DEVICE Device;\r
85 UINT16 Lun;\r
86 IDE_DEVICE_TYPE Type;\r
87\r
88 IDE_BASE_REGISTERS *IoPort;\r
89 UINT16 AtapiError;\r
90\r
1e23bd8d 91 ATAPI_INQUIRY_DATA *pInquiryData;\r
ead42efc 92 EFI_IDENTIFY_DATA *pIdData;\r
93 ATA_PIO_MODE PioMode;\r
94 EFI_ATA_MODE UdmaMode;\r
95 CHAR8 ModelName[41];\r
1e23bd8d 96 ATAPI_REQUEST_SENSE_DATA *SenseData;\r
ead42efc 97 UINT8 SenseDataNumber;\r
98 UINT8 *Cache;\r
99\r
100 //\r
101 // ExitBootService Event, it is used to clear pending IDE interrupt\r
102 //\r
103 EFI_EVENT ExitBootServiceEvent;\r
104\r
105 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
106} IDE_BLK_IO_DEV;\r
107\r
108#include "ComponentName.h"\r
109\r
110#define IDE_BLOCK_IO_DEV_FROM_THIS(a) CR (a, IDE_BLK_IO_DEV, BlkIo, IDE_BLK_IO_DEV_SIGNATURE)\r
111#define IDE_BLOCK_IO_DEV_FROM_DISK_INFO_THIS(a) CR (a, IDE_BLK_IO_DEV, DiskInfo, IDE_BLK_IO_DEV_SIGNATURE)\r
112\r
113//\r
114// Global Variables\r
115//\r
dfc48464 116extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding;\r
117extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gIDEBusDriverDiagnostics;\r
118extern EFI_DRIVER_DIAGNOSTICS2_PROTOCOL gIDEBusDriverDiagnostics2;\r
ead42efc 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
214IDEBusDriverConfigurationSetOptions (\r
215 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
216 IN EFI_HANDLE ControllerHandle,\r
217 IN EFI_HANDLE ChildHandle OPTIONAL,\r
218 IN CHAR8 *Language,\r
219 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired\r
220 );\r
221\r
eeefcb9d 222/**\r
223 TODO: Add function description\r
224\r
225 @param This TODO: add argument description\r
226 @param ControllerHandle TODO: add argument description\r
227 @param ChildHandle TODO: add argument description\r
228\r
229 TODO: add return values.\r
230\r
231**/\r
ead42efc 232EFI_STATUS\r
233IDEBusDriverConfigurationOptionsValid (\r
234 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
235 IN EFI_HANDLE ControllerHandle,\r
236 IN EFI_HANDLE ChildHandle OPTIONAL\r
237 );\r
238\r
eeefcb9d 239/**\r
240 TODO: Add function description\r
241\r
242 @param This TODO: add argument description\r
243 @param ControllerHandle TODO: add argument description\r
244 @param ChildHandle TODO: add argument description\r
245 @param DefaultType TODO: add argument description\r
246 @param ActionRequired TODO: add argument description\r
247\r
248 TODO: add return values.\r
249\r
250**/\r
ead42efc 251EFI_STATUS\r
252IDEBusDriverConfigurationForceDefaults (\r
253 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
254 IN EFI_HANDLE ControllerHandle,\r
255 IN EFI_HANDLE ChildHandle OPTIONAL,\r
256 IN UINT32 DefaultType,\r
257 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired\r
258 );\r
259\r
260//\r
261// EFI Driver Diagnostics Functions\r
262//\r
eeefcb9d 263/**\r
264 TODO: Add function description\r
265\r
266 @param This TODO: add argument description\r
267 @param ControllerHandle TODO: add argument description\r
268 @param ChildHandle TODO: add argument description\r
269 @param DiagnosticType TODO: add argument description\r
270 @param Language TODO: add argument description\r
271 @param ErrorType TODO: add argument description\r
272 @param BufferSize TODO: add argument description\r
273 @param Buffer TODO: add argument description\r
274\r
275 TODO: add return values.\r
276\r
277**/\r
ead42efc 278EFI_STATUS\r
279IDEBusDriverDiagnosticsRunDiagnostics (\r
280 IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This,\r
281 IN EFI_HANDLE ControllerHandle,\r
282 IN EFI_HANDLE ChildHandle OPTIONAL,\r
283 IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType,\r
284 IN CHAR8 *Language,\r
285 OUT EFI_GUID **ErrorType,\r
286 OUT UINTN *BufferSize,\r
287 OUT CHAR16 **Buffer\r
288 );\r
289\r
290//\r
291// Block I/O Protocol Interface\r
292//\r
293/**\r
294 TODO: Add function description\r
295\r
296 @param This TODO: add argument description\r
297 @param ExtendedVerification TODO: add argument description\r
298\r
97404058 299 TODO: add return values.\r
ead42efc 300\r
301**/\r
302EFI_STATUS\r
303EFIAPI\r
304IDEBlkIoReset (\r
305 IN EFI_BLOCK_IO_PROTOCOL *This,\r
306 IN BOOLEAN ExtendedVerification\r
ed66e1bc 307 );\r
ead42efc 308\r
309/**\r
310 TODO: Add function description\r
311\r
312 @param This TODO: add argument description\r
313 @param MediaId TODO: add argument description\r
314 @param LBA TODO: add argument description\r
315 @param BufferSize TODO: add argument description\r
316 @param Buffer TODO: add argument description\r
317\r
eeefcb9d 318 TODO: add return values.\r
ead42efc 319\r
320**/\r
321EFI_STATUS\r
322EFIAPI\r
323IDEBlkIoReadBlocks (\r
324 IN EFI_BLOCK_IO_PROTOCOL *This,\r
325 IN UINT32 MediaId,\r
326 IN EFI_LBA LBA,\r
327 IN UINTN BufferSize,\r
328 OUT VOID *Buffer\r
ed66e1bc 329 );\r
ead42efc 330\r
331/**\r
332 TODO: Add function description\r
333\r
334 @param This TODO: add argument description\r
335 @param MediaId TODO: add argument description\r
336 @param LBA TODO: add argument description\r
337 @param BufferSize TODO: add argument description\r
338 @param Buffer TODO: add argument description\r
339\r
97404058 340 TODO: add return values.\r
ead42efc 341\r
342**/\r
343EFI_STATUS\r
344EFIAPI\r
345IDEBlkIoWriteBlocks (\r
346 IN EFI_BLOCK_IO_PROTOCOL *This,\r
347 IN UINT32 MediaId,\r
348 IN EFI_LBA LBA,\r
349 IN UINTN BufferSize,\r
350 IN VOID *Buffer\r
ed66e1bc 351 );\r
ead42efc 352\r
353/**\r
354 TODO: Add function description\r
355\r
356 @param This TODO: add argument description\r
357\r
97404058 358 TODO: add return values.\r
ead42efc 359\r
360**/\r
361EFI_STATUS\r
362EFIAPI\r
363IDEBlkIoFlushBlocks (\r
364 IN EFI_BLOCK_IO_PROTOCOL *This\r
ed66e1bc 365 );\r
ead42efc 366\r
367/**\r
368 TODO: Add function description\r
369\r
370 @param PciIo TODO: add argument description\r
371 @param Enable TODO: add argument description\r
372\r
97404058 373 TODO: add return values.\r
ead42efc 374\r
375**/\r
376EFI_STATUS\r
377IDERegisterDecodeEnableorDisable (\r
378 IN EFI_PCI_IO_PROTOCOL *PciIo,\r
379 IN BOOLEAN Enable\r
ed66e1bc 380 );\r
ead42efc 381\r
382/**\r
383 TODO: Add function description\r
384\r
385 @param This TODO: add argument description\r
386 @param InquiryData TODO: add argument description\r
387 @param IntquiryDataSize TODO: add argument description\r
388\r
97404058 389 TODO: add return values.\r
ead42efc 390\r
391**/\r
392EFI_STATUS\r
393EFIAPI\r
394IDEDiskInfoInquiry (\r
395 IN EFI_DISK_INFO_PROTOCOL *This,\r
396 IN OUT VOID *InquiryData,\r
397 IN OUT UINT32 *IntquiryDataSize\r
ed66e1bc 398 );\r
ead42efc 399\r
400/**\r
401 TODO: Add function description\r
402\r
403 @param This TODO: add argument description\r
404 @param IdentifyData TODO: add argument description\r
405 @param IdentifyDataSize TODO: add argument description\r
406\r
97404058 407 TODO: add return values.\r
ead42efc 408\r
409**/\r
410EFI_STATUS\r
411EFIAPI\r
412IDEDiskInfoIdentify (\r
413 IN EFI_DISK_INFO_PROTOCOL *This,\r
414 IN OUT VOID *IdentifyData,\r
415 IN OUT UINT32 *IdentifyDataSize\r
ed66e1bc 416 );\r
ead42efc 417\r
418/**\r
419 TODO: Add function description\r
420\r
421 @param This TODO: add argument description\r
422 @param SenseData TODO: add argument description\r
423 @param SenseDataSize TODO: add argument description\r
424 @param SenseDataNumber TODO: add argument description\r
425\r
97404058 426 TODO: add return values.\r
ead42efc 427\r
428**/\r
429EFI_STATUS\r
430EFIAPI\r
431IDEDiskInfoSenseData (\r
432 IN EFI_DISK_INFO_PROTOCOL *This,\r
433 IN OUT VOID *SenseData,\r
434 IN OUT UINT32 *SenseDataSize,\r
435 OUT UINT8 *SenseDataNumber\r
ed66e1bc 436 );\r
ead42efc 437\r
438/**\r
439 TODO: Add function description\r
440\r
441 @param This TODO: add argument description\r
442 @param IdeChannel TODO: add argument description\r
443 @param IdeDevice TODO: add argument description\r
444\r
97404058 445 TODO: add return values.\r
ead42efc 446\r
447**/\r
448EFI_STATUS\r
449EFIAPI\r
450IDEDiskInfoWhichIde (\r
451 IN EFI_DISK_INFO_PROTOCOL *This,\r
452 OUT UINT32 *IdeChannel,\r
453 OUT UINT32 *IdeDevice\r
ed66e1bc 454 );\r
ead42efc 455\r
456#endif\r