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