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