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