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