]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/IdeBus.h
clean up the un-suitable ';' location when declaring the functions.
[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
15#ifndef _IDE_BUS_H\r
16#define _IDE_BUS_H\r
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
65#define IDE_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('i', 'b', 'i', 'd')\r
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
130 TODO: add return values\r
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
147 TODO: add return values\r
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
165 TODO: add return values\r
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
184 TODO: add return values\r
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
199EFI_STATUS\r
200IDEBusDriverConfigurationSetOptions (\r
201 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
202 IN EFI_HANDLE ControllerHandle,\r
203 IN EFI_HANDLE ChildHandle OPTIONAL,\r
204 IN CHAR8 *Language,\r
205 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired\r
206 );\r
207\r
208EFI_STATUS\r
209IDEBusDriverConfigurationOptionsValid (\r
210 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
211 IN EFI_HANDLE ControllerHandle,\r
212 IN EFI_HANDLE ChildHandle OPTIONAL\r
213 );\r
214\r
215EFI_STATUS\r
216IDEBusDriverConfigurationForceDefaults (\r
217 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
218 IN EFI_HANDLE ControllerHandle,\r
219 IN EFI_HANDLE ChildHandle OPTIONAL,\r
220 IN UINT32 DefaultType,\r
221 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired\r
222 );\r
223\r
224//\r
225// EFI Driver Diagnostics Functions\r
226//\r
227EFI_STATUS\r
228IDEBusDriverDiagnosticsRunDiagnostics (\r
229 IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This,\r
230 IN EFI_HANDLE ControllerHandle,\r
231 IN EFI_HANDLE ChildHandle OPTIONAL,\r
232 IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType,\r
233 IN CHAR8 *Language,\r
234 OUT EFI_GUID **ErrorType,\r
235 OUT UINTN *BufferSize,\r
236 OUT CHAR16 **Buffer\r
237 );\r
238\r
239//\r
240// Block I/O Protocol Interface\r
241//\r
242/**\r
243 TODO: Add function description\r
244\r
245 @param This TODO: add argument description\r
246 @param ExtendedVerification TODO: add argument description\r
247\r
248 TODO: add return values\r
249\r
250**/\r
251EFI_STATUS\r
252EFIAPI\r
253IDEBlkIoReset (\r
254 IN EFI_BLOCK_IO_PROTOCOL *This,\r
255 IN BOOLEAN ExtendedVerification\r
ed66e1bc 256 );\r
ead42efc 257\r
258/**\r
259 TODO: Add function description\r
260\r
261 @param This TODO: add argument description\r
262 @param MediaId TODO: add argument description\r
263 @param LBA TODO: add argument description\r
264 @param BufferSize TODO: add argument description\r
265 @param Buffer TODO: add argument description\r
266\r
267 TODO: add return values\r
268\r
269**/\r
270EFI_STATUS\r
271EFIAPI\r
272IDEBlkIoReadBlocks (\r
273 IN EFI_BLOCK_IO_PROTOCOL *This,\r
274 IN UINT32 MediaId,\r
275 IN EFI_LBA LBA,\r
276 IN UINTN BufferSize,\r
277 OUT VOID *Buffer\r
ed66e1bc 278 );\r
ead42efc 279\r
280/**\r
281 TODO: Add function description\r
282\r
283 @param This TODO: add argument description\r
284 @param MediaId TODO: add argument description\r
285 @param LBA TODO: add argument description\r
286 @param BufferSize TODO: add argument description\r
287 @param Buffer TODO: add argument description\r
288\r
289 TODO: add return values\r
290\r
291**/\r
292EFI_STATUS\r
293EFIAPI\r
294IDEBlkIoWriteBlocks (\r
295 IN EFI_BLOCK_IO_PROTOCOL *This,\r
296 IN UINT32 MediaId,\r
297 IN EFI_LBA LBA,\r
298 IN UINTN BufferSize,\r
299 IN VOID *Buffer\r
ed66e1bc 300 );\r
ead42efc 301\r
302/**\r
303 TODO: Add function description\r
304\r
305 @param This TODO: add argument description\r
306\r
307 TODO: add return values\r
308\r
309**/\r
310EFI_STATUS\r
311EFIAPI\r
312IDEBlkIoFlushBlocks (\r
313 IN EFI_BLOCK_IO_PROTOCOL *This\r
ed66e1bc 314 );\r
ead42efc 315\r
316/**\r
317 TODO: Add function description\r
318\r
319 @param PciIo TODO: add argument description\r
320 @param Enable TODO: add argument description\r
321\r
322 TODO: add return values\r
323\r
324**/\r
325EFI_STATUS\r
326IDERegisterDecodeEnableorDisable (\r
327 IN EFI_PCI_IO_PROTOCOL *PciIo,\r
328 IN BOOLEAN Enable\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 InquiryData TODO: add argument description\r
336 @param IntquiryDataSize TODO: add argument description\r
337\r
338 TODO: add return values\r
339\r
340**/\r
341EFI_STATUS\r
342EFIAPI\r
343IDEDiskInfoInquiry (\r
344 IN EFI_DISK_INFO_PROTOCOL *This,\r
345 IN OUT VOID *InquiryData,\r
346 IN OUT UINT32 *IntquiryDataSize\r
ed66e1bc 347 );\r
ead42efc 348\r
349/**\r
350 TODO: Add function description\r
351\r
352 @param This TODO: add argument description\r
353 @param IdentifyData TODO: add argument description\r
354 @param IdentifyDataSize TODO: add argument description\r
355\r
356 TODO: add return values\r
357\r
358**/\r
359EFI_STATUS\r
360EFIAPI\r
361IDEDiskInfoIdentify (\r
362 IN EFI_DISK_INFO_PROTOCOL *This,\r
363 IN OUT VOID *IdentifyData,\r
364 IN OUT UINT32 *IdentifyDataSize\r
ed66e1bc 365 );\r
ead42efc 366\r
367/**\r
368 TODO: Add function description\r
369\r
370 @param This TODO: add argument description\r
371 @param SenseData TODO: add argument description\r
372 @param SenseDataSize TODO: add argument description\r
373 @param SenseDataNumber TODO: add argument description\r
374\r
375 TODO: add return values\r
376\r
377**/\r
378EFI_STATUS\r
379EFIAPI\r
380IDEDiskInfoSenseData (\r
381 IN EFI_DISK_INFO_PROTOCOL *This,\r
382 IN OUT VOID *SenseData,\r
383 IN OUT UINT32 *SenseDataSize,\r
384 OUT UINT8 *SenseDataNumber\r
ed66e1bc 385 );\r
ead42efc 386\r
387/**\r
388 TODO: Add function description\r
389\r
390 @param This TODO: add argument description\r
391 @param IdeChannel TODO: add argument description\r
392 @param IdeDevice TODO: add argument description\r
393\r
394 TODO: add return values\r
395\r
396**/\r
397EFI_STATUS\r
398EFIAPI\r
399IDEDiskInfoWhichIde (\r
400 IN EFI_DISK_INFO_PROTOCOL *This,\r
401 OUT UINT32 *IdeChannel,\r
402 OUT UINT32 *IdeDevice\r
ed66e1bc 403 );\r
ead42efc 404\r
405#endif\r