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