2 Header file for IDE Bus Driver.
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
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.
19 #include <IndustryStandard/pci22.h>
23 // Extra Definition to porting
25 #define EFI_MIN(a, b) (((a) < (b)) ? (a) : (b))
27 #define MAX_IDE_DEVICE 4
28 #define MAX_IDE_CHANNELS 2
29 #define MAX_IDE_DRIVES 2
31 #define INVALID_DEVICE_TYPE 0xff
32 #define ATA_DEVICE_TYPE 0x00
33 #define ATAPI_DEVICE_TYPE 0x01
36 BOOLEAN HaveScannedDevice
[MAX_IDE_DEVICE
];
37 BOOLEAN DeviceFound
[MAX_IDE_DEVICE
];
38 BOOLEAN DeviceProcessed
[MAX_IDE_DEVICE
];
39 } IDE_BUS_DRIVER_PRIVATE_DATA
;
41 #define IDE_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('i', 'b', 'i', 'd')
47 EFI_BLOCK_IO_PROTOCOL BlkIo
;
48 EFI_BLOCK_IO_MEDIA BlkMedia
;
49 EFI_DISK_INFO_PROTOCOL DiskInfo
;
50 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
51 EFI_PCI_IO_PROTOCOL
*PciIo
;
52 IDE_BUS_DRIVER_PRIVATE_DATA
*IdeBusDriverPrivateData
;
55 // Local Data for IDE interface goes here
57 EFI_IDE_CHANNEL Channel
;
58 EFI_IDE_DEVICE Device
;
62 IDE_BASE_REGISTERS
*IoPort
;
65 INQUIRY_DATA
*pInquiryData
;
66 EFI_IDENTIFY_DATA
*pIdData
;
68 EFI_ATA_MODE UdmaMode
;
70 REQUEST_SENSE_DATA
*SenseData
;
71 UINT8 SenseDataNumber
;
75 // ExitBootService Event, it is used to clear pending IDE interrupt
77 EFI_EVENT ExitBootServiceEvent
;
79 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
82 #include "ComponentName.h"
84 #define IDE_BLOCK_IO_DEV_FROM_THIS(a) CR (a, IDE_BLK_IO_DEV, BlkIo, IDE_BLK_IO_DEV_SIGNATURE)
85 #define IDE_BLOCK_IO_DEV_FROM_DISK_INFO_THIS(a) CR (a, IDE_BLK_IO_DEV, DiskInfo, IDE_BLK_IO_DEV_SIGNATURE)
90 extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding
;
96 // Driver model protocol interface
99 TODO: Add function description
101 @param ImageHandle TODO: add argument description
102 @param SystemTable TODO: add argument description
104 TODO: add return values
109 IDEBusControllerDriverEntryPoint (
110 IN EFI_HANDLE ImageHandle
,
111 IN EFI_SYSTEM_TABLE
*SystemTable
116 TODO: Add function description
118 @param This TODO: add argument description
119 @param Controller TODO: add argument description
120 @param RemainingDevicePath TODO: add argument description
122 TODO: add return values
127 IDEBusDriverBindingSupported (
128 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
129 IN EFI_HANDLE Controller
,
130 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
135 TODO: Add function description
137 @param This TODO: add argument description
138 @param Controller TODO: add argument description
139 @param RemainingDevicePath TODO: add argument description
141 TODO: add return values
146 IDEBusDriverBindingStart (
147 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
148 IN EFI_HANDLE Controller
,
149 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
154 TODO: Add function description
156 @param This TODO: add argument description
157 @param Controller TODO: add argument description
158 @param NumberOfChildren TODO: add argument description
159 @param ChildHandleBuffer TODO: add argument description
161 TODO: add return values
166 IDEBusDriverBindingStop (
167 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
168 IN EFI_HANDLE Controller
,
169 IN UINTN NumberOfChildren
,
170 IN EFI_HANDLE
*ChildHandleBuffer
175 // EFI Driver Configuration Functions
178 IDEBusDriverConfigurationSetOptions (
179 IN EFI_DRIVER_CONFIGURATION_PROTOCOL
*This
,
180 IN EFI_HANDLE ControllerHandle
,
181 IN EFI_HANDLE ChildHandle OPTIONAL
,
183 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED
*ActionRequired
187 IDEBusDriverConfigurationOptionsValid (
188 IN EFI_DRIVER_CONFIGURATION_PROTOCOL
*This
,
189 IN EFI_HANDLE ControllerHandle
,
190 IN EFI_HANDLE ChildHandle OPTIONAL
194 IDEBusDriverConfigurationForceDefaults (
195 IN EFI_DRIVER_CONFIGURATION_PROTOCOL
*This
,
196 IN EFI_HANDLE ControllerHandle
,
197 IN EFI_HANDLE ChildHandle OPTIONAL
,
198 IN UINT32 DefaultType
,
199 OUT EFI_DRIVER_CONFIGURATION_ACTION_REQUIRED
*ActionRequired
203 // EFI Driver Diagnostics Functions
206 IDEBusDriverDiagnosticsRunDiagnostics (
207 IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL
*This
,
208 IN EFI_HANDLE ControllerHandle
,
209 IN EFI_HANDLE ChildHandle OPTIONAL
,
210 IN EFI_DRIVER_DIAGNOSTIC_TYPE DiagnosticType
,
212 OUT EFI_GUID
**ErrorType
,
213 OUT UINTN
*BufferSize
,
218 // Block I/O Protocol Interface
221 TODO: Add function description
223 @param This TODO: add argument description
224 @param ExtendedVerification TODO: add argument description
226 TODO: add return values
232 IN EFI_BLOCK_IO_PROTOCOL
*This
,
233 IN BOOLEAN ExtendedVerification
238 TODO: Add function description
240 @param This TODO: add argument description
241 @param MediaId TODO: add argument description
242 @param LBA TODO: add argument description
243 @param BufferSize TODO: add argument description
244 @param Buffer TODO: add argument description
246 TODO: add return values
252 IN EFI_BLOCK_IO_PROTOCOL
*This
,
261 TODO: Add function description
263 @param This TODO: add argument description
264 @param MediaId TODO: add argument description
265 @param LBA TODO: add argument description
266 @param BufferSize TODO: add argument description
267 @param Buffer TODO: add argument description
269 TODO: add return values
274 IDEBlkIoWriteBlocks (
275 IN EFI_BLOCK_IO_PROTOCOL
*This
,
284 TODO: Add function description
286 @param This TODO: add argument description
288 TODO: add return values
293 IDEBlkIoFlushBlocks (
294 IN EFI_BLOCK_IO_PROTOCOL
*This
299 TODO: Add function description
301 @param PciIo TODO: add argument description
302 @param Enable TODO: add argument description
304 TODO: add return values
308 IDERegisterDecodeEnableorDisable (
309 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
315 TODO: Add function description
317 @param This TODO: add argument description
318 @param InquiryData TODO: add argument description
319 @param IntquiryDataSize TODO: add argument description
321 TODO: add return values
327 IN EFI_DISK_INFO_PROTOCOL
*This
,
328 IN OUT VOID
*InquiryData
,
329 IN OUT UINT32
*IntquiryDataSize
334 TODO: Add function description
336 @param This TODO: add argument description
337 @param IdentifyData TODO: add argument description
338 @param IdentifyDataSize TODO: add argument description
340 TODO: add return values
345 IDEDiskInfoIdentify (
346 IN EFI_DISK_INFO_PROTOCOL
*This
,
347 IN OUT VOID
*IdentifyData
,
348 IN OUT UINT32
*IdentifyDataSize
353 TODO: Add function description
355 @param This TODO: add argument description
356 @param SenseData TODO: add argument description
357 @param SenseDataSize TODO: add argument description
358 @param SenseDataNumber TODO: add argument description
360 TODO: add return values
365 IDEDiskInfoSenseData (
366 IN EFI_DISK_INFO_PROTOCOL
*This
,
367 IN OUT VOID
*SenseData
,
368 IN OUT UINT32
*SenseDataSize
,
369 OUT UINT8
*SenseDataNumber
374 TODO: Add function description
376 @param This TODO: add argument description
377 @param IdeChannel TODO: add argument description
378 @param IdeDevice TODO: add argument description
380 TODO: add return values
385 IDEDiskInfoWhichIde (
386 IN EFI_DISK_INFO_PROTOCOL
*This
,
387 OUT UINT32
*IdeChannel
,
388 OUT UINT32
*IdeDevice