]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/idebus.h
Replace EFI_MAX() with MAX()
[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
40#include <IndustryStandard/pci22.h>\r
41#include "idedata.h"\r
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
114extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding;\r
115\r
116#include "ide.h"\r
117\r
118//\r
119// Prototypes\r
120// Driver model protocol interface\r
121//\r
122/**\r
123 TODO: Add function description\r
124\r
125 @param ImageHandle TODO: add argument description\r
126 @param SystemTable TODO: add argument description\r
127\r
128 TODO: add return values\r
129\r
130**/\r
131EFI_STATUS\r
132EFIAPI\r
133IDEBusControllerDriverEntryPoint (\r
134 IN EFI_HANDLE ImageHandle,\r
135 IN EFI_SYSTEM_TABLE *SystemTable\r
136 )\r
137;\r
138\r
139/**\r
140 TODO: Add function description\r
141\r
142 @param This TODO: add argument description\r
143 @param Controller TODO: add argument description\r
144 @param RemainingDevicePath TODO: add argument description\r
145\r
146 TODO: add return values\r
147\r
148**/\r
149EFI_STATUS\r
150EFIAPI\r
151IDEBusDriverBindingSupported (\r
152 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
153 IN EFI_HANDLE Controller,\r
154 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
155 )\r
156;\r
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
174 )\r
175;\r
176\r
177/**\r
178 TODO: Add function description\r
179\r
180 @param This TODO: add argument description\r
181 @param Controller TODO: add argument description\r
182 @param NumberOfChildren TODO: add argument description\r
183 @param ChildHandleBuffer TODO: add argument description\r
184\r
185 TODO: add return values\r
186\r
187**/\r
188EFI_STATUS\r
189EFIAPI\r
190IDEBusDriverBindingStop (\r
191 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
192 IN EFI_HANDLE Controller,\r
193 IN UINTN NumberOfChildren,\r
194 IN EFI_HANDLE *ChildHandleBuffer\r
195 )\r
196;\r
197\r
198//\r
199// EFI Driver Configuration Functions\r
200//\r
201EFI_STATUS\r
202IDEBusDriverConfigurationSetOptions (\r
203 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
204 IN EFI_HANDLE ControllerHandle,\r
205 IN EFI_HANDLE ChildHandle OPTIONAL,\r
206 IN CHAR8 *Language,\r
207 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired\r
208 );\r
209\r
210EFI_STATUS\r
211IDEBusDriverConfigurationOptionsValid (\r
212 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
213 IN EFI_HANDLE ControllerHandle,\r
214 IN EFI_HANDLE ChildHandle OPTIONAL\r
215 );\r
216\r
217EFI_STATUS\r
218IDEBusDriverConfigurationForceDefaults (\r
219 IN EFI_DRIVER_CONFIGURATION_PROTOCOL *This,\r
220 IN EFI_HANDLE ControllerHandle,\r
221 IN EFI_HANDLE ChildHandle OPTIONAL,\r
222 IN UINT32 DefaultType,\r
223 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED *ActionRequired\r
224 );\r
225\r
226//\r
227// EFI Driver Diagnostics Functions\r
228//\r
229EFI_STATUS\r
230IDEBusDriverDiagnosticsRunDiagnostics (\r
231 IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *This,\r
232 IN EFI_HANDLE ControllerHandle,\r
233 IN EFI_HANDLE ChildHandle OPTIONAL,\r
234 IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType,\r
235 IN CHAR8 *Language,\r
236 OUT EFI_GUID **ErrorType,\r
237 OUT UINTN *BufferSize,\r
238 OUT CHAR16 **Buffer\r
239 );\r
240\r
241//\r
242// Block I/O Protocol Interface\r
243//\r
244/**\r
245 TODO: Add function description\r
246\r
247 @param This TODO: add argument description\r
248 @param ExtendedVerification TODO: add argument description\r
249\r
250 TODO: add return values\r
251\r
252**/\r
253EFI_STATUS\r
254EFIAPI\r
255IDEBlkIoReset (\r
256 IN EFI_BLOCK_IO_PROTOCOL *This,\r
257 IN BOOLEAN ExtendedVerification\r
258 )\r
259;\r
260\r
261/**\r
262 TODO: Add function description\r
263\r
264 @param This TODO: add argument description\r
265 @param MediaId TODO: add argument description\r
266 @param LBA TODO: add argument description\r
267 @param BufferSize TODO: add argument description\r
268 @param Buffer TODO: add argument description\r
269\r
270 TODO: add return values\r
271\r
272**/\r
273EFI_STATUS\r
274EFIAPI\r
275IDEBlkIoReadBlocks (\r
276 IN EFI_BLOCK_IO_PROTOCOL *This,\r
277 IN UINT32 MediaId,\r
278 IN EFI_LBA LBA,\r
279 IN UINTN BufferSize,\r
280 OUT VOID *Buffer\r
281 )\r
282;\r
283\r
284/**\r
285 TODO: Add function description\r
286\r
287 @param This TODO: add argument description\r
288 @param MediaId TODO: add argument description\r
289 @param LBA TODO: add argument description\r
290 @param BufferSize TODO: add argument description\r
291 @param Buffer TODO: add argument description\r
292\r
293 TODO: add return values\r
294\r
295**/\r
296EFI_STATUS\r
297EFIAPI\r
298IDEBlkIoWriteBlocks (\r
299 IN EFI_BLOCK_IO_PROTOCOL *This,\r
300 IN UINT32 MediaId,\r
301 IN EFI_LBA LBA,\r
302 IN UINTN BufferSize,\r
303 IN VOID *Buffer\r
304 )\r
305;\r
306\r
307/**\r
308 TODO: Add function description\r
309\r
310 @param This TODO: add argument description\r
311\r
312 TODO: add return values\r
313\r
314**/\r
315EFI_STATUS\r
316EFIAPI\r
317IDEBlkIoFlushBlocks (\r
318 IN EFI_BLOCK_IO_PROTOCOL *This\r
319 )\r
320;\r
321\r
322/**\r
323 TODO: Add function description\r
324\r
325 @param PciIo TODO: add argument description\r
326 @param Enable TODO: add argument description\r
327\r
328 TODO: add return values\r
329\r
330**/\r
331EFI_STATUS\r
332IDERegisterDecodeEnableorDisable (\r
333 IN EFI_PCI_IO_PROTOCOL *PciIo,\r
334 IN BOOLEAN Enable\r
335 )\r
336;\r
337\r
338/**\r
339 TODO: Add function description\r
340\r
341 @param This TODO: add argument description\r
342 @param InquiryData TODO: add argument description\r
343 @param IntquiryDataSize TODO: add argument description\r
344\r
345 TODO: add return values\r
346\r
347**/\r
348EFI_STATUS\r
349EFIAPI\r
350IDEDiskInfoInquiry (\r
351 IN EFI_DISK_INFO_PROTOCOL *This,\r
352 IN OUT VOID *InquiryData,\r
353 IN OUT UINT32 *IntquiryDataSize\r
354 )\r
355;\r
356\r
357/**\r
358 TODO: Add function description\r
359\r
360 @param This TODO: add argument description\r
361 @param IdentifyData TODO: add argument description\r
362 @param IdentifyDataSize TODO: add argument description\r
363\r
364 TODO: add return values\r
365\r
366**/\r
367EFI_STATUS\r
368EFIAPI\r
369IDEDiskInfoIdentify (\r
370 IN EFI_DISK_INFO_PROTOCOL *This,\r
371 IN OUT VOID *IdentifyData,\r
372 IN OUT UINT32 *IdentifyDataSize\r
373 )\r
374;\r
375\r
376/**\r
377 TODO: Add function description\r
378\r
379 @param This TODO: add argument description\r
380 @param SenseData TODO: add argument description\r
381 @param SenseDataSize TODO: add argument description\r
382 @param SenseDataNumber TODO: add argument description\r
383\r
384 TODO: add return values\r
385\r
386**/\r
387EFI_STATUS\r
388EFIAPI\r
389IDEDiskInfoSenseData (\r
390 IN EFI_DISK_INFO_PROTOCOL *This,\r
391 IN OUT VOID *SenseData,\r
392 IN OUT UINT32 *SenseDataSize,\r
393 OUT UINT8 *SenseDataNumber\r
394 )\r
395;\r
396\r
397/**\r
398 TODO: Add function description\r
399\r
400 @param This TODO: add argument description\r
401 @param IdeChannel TODO: add argument description\r
402 @param IdeDevice TODO: add argument description\r
403\r
404 TODO: add return values\r
405\r
406**/\r
407EFI_STATUS\r
408EFIAPI\r
409IDEDiskInfoWhichIde (\r
410 IN EFI_DISK_INFO_PROTOCOL *This,\r
411 OUT UINT32 *IdeChannel,\r
412 OUT UINT32 *IdeDevice\r
413 )\r
414;\r
415\r
416#endif\r