]> git.proxmox.com Git - mirror_edk2.git/blame - 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
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
19//\r
20// The package level header files this module uses\r
21//\r
694b922c 22#include <FrameworkDxe.h>\r
ead42efc 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
1e23bd8d 92 ATAPI_INQUIRY_DATA *pInquiryData;\r
ead42efc 93 EFI_IDENTIFY_DATA *pIdData;\r
94 ATA_PIO_MODE PioMode;\r
95 EFI_ATA_MODE UdmaMode;\r
96 CHAR8 ModelName[41];\r
1e23bd8d 97 ATAPI_REQUEST_SENSE_DATA *SenseData;\r
ead42efc 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