2 Header file for IDE Bus Driver.
4 Copyright (c) 2006, Intel Corporation
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
32 BOOLEAN HaveScannedDevice
[MAX_IDE_DEVICE
];
33 BOOLEAN DeviceFound
[MAX_IDE_DEVICE
];
34 BOOLEAN DeviceProcessed
[MAX_IDE_DEVICE
];
35 } IDE_BUS_DRIVER_PRIVATE_DATA
;
37 #define IDE_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('i', 'b', 'i', 'd')
43 EFI_BLOCK_IO_PROTOCOL BlkIo
;
44 EFI_BLOCK_IO_MEDIA BlkMedia
;
45 EFI_DISK_INFO_PROTOCOL DiskInfo
;
46 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
47 EFI_PCI_IO_PROTOCOL
*PciIo
;
48 IDE_BUS_DRIVER_PRIVATE_DATA
*IdeBusDriverPrivateData
;
51 // Local Data for IDE interface goes here
53 EFI_IDE_CHANNEL Channel
;
54 EFI_IDE_DEVICE Device
;
58 IDE_BASE_REGISTERS
*IoPort
;
61 INQUIRY_DATA
*pInquiryData
;
62 EFI_IDENTIFY_DATA
*pIdData
;
64 ATA_UDMA_MODE UDma_Mode
;
66 REQUEST_SENSE_DATA
*SenseData
;
67 UINT8 SenseDataNumber
;
70 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
73 #include "ComponentName.h"
75 #define IDE_BLOCK_IO_DEV_FROM_THIS(a) CR (a, IDE_BLK_IO_DEV, BlkIo, IDE_BLK_IO_DEV_SIGNATURE)
76 #define IDE_BLOCK_IO_DEV_FROM_DISK_INFO_THIS(a) CR (a, IDE_BLK_IO_DEV, DiskInfo, IDE_BLK_IO_DEV_SIGNATURE)
81 extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding
;
87 // Driver model protocol interface
90 TODO: Add function description
92 @param ImageHandle TODO: add argument description
93 @param SystemTable TODO: add argument description
95 TODO: add return values
100 IDEBusControllerDriverEntryPoint (
101 IN EFI_HANDLE ImageHandle
,
102 IN EFI_SYSTEM_TABLE
*SystemTable
107 TODO: Add function description
109 @param This TODO: add argument description
110 @param Controller TODO: add argument description
111 @param RemainingDevicePath TODO: add argument description
113 TODO: add return values
118 IDEBusDriverBindingSupported (
119 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
120 IN EFI_HANDLE Controller
,
121 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
126 TODO: Add function description
128 @param This TODO: add argument description
129 @param Controller TODO: add argument description
130 @param RemainingDevicePath TODO: add argument description
132 TODO: add return values
137 IDEBusDriverBindingStart (
138 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
139 IN EFI_HANDLE Controller
,
140 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
145 TODO: Add function description
147 @param This TODO: add argument description
148 @param Controller TODO: add argument description
149 @param NumberOfChildren TODO: add argument description
150 @param ChildHandleBuffer TODO: add argument description
152 TODO: add return values
157 IDEBusDriverBindingStop (
158 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
159 IN EFI_HANDLE Controller
,
160 IN UINTN NumberOfChildren
,
161 IN EFI_HANDLE
*ChildHandleBuffer
166 // Block I/O Protocol Interface
169 TODO: Add function description
171 @param This TODO: add argument description
172 @param ExtendedVerification TODO: add argument description
174 TODO: add return values
180 IN EFI_BLOCK_IO_PROTOCOL
*This
,
181 IN BOOLEAN ExtendedVerification
186 TODO: Add function description
188 @param This TODO: add argument description
189 @param MediaId TODO: add argument description
190 @param LBA TODO: add argument description
191 @param BufferSize TODO: add argument description
192 @param Buffer TODO: add argument description
194 TODO: add return values
200 IN EFI_BLOCK_IO_PROTOCOL
*This
,
209 TODO: Add function description
211 @param This TODO: add argument description
212 @param MediaId TODO: add argument description
213 @param LBA TODO: add argument description
214 @param BufferSize TODO: add argument description
215 @param Buffer TODO: add argument description
217 TODO: add return values
222 IDEBlkIoWriteBlocks (
223 IN EFI_BLOCK_IO_PROTOCOL
*This
,
232 TODO: Add function description
234 @param This TODO: add argument description
236 TODO: add return values
241 IDEBlkIoFlushBlocks (
242 IN EFI_BLOCK_IO_PROTOCOL
*This
247 TODO: Add function description
249 @param PciIo TODO: add argument description
250 @param Enable TODO: add argument description
252 TODO: add return values
256 IDERegisterDecodeEnableorDisable (
257 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
263 TODO: Add function description
265 @param This TODO: add argument description
266 @param InquiryData TODO: add argument description
267 @param IntquiryDataSize TODO: add argument description
269 TODO: add return values
275 IN EFI_DISK_INFO_PROTOCOL
*This
,
276 IN OUT VOID
*InquiryData
,
277 IN OUT UINT32
*IntquiryDataSize
282 TODO: Add function description
284 @param This TODO: add argument description
285 @param IdentifyData TODO: add argument description
286 @param IdentifyDataSize TODO: add argument description
288 TODO: add return values
293 IDEDiskInfoIdentify (
294 IN EFI_DISK_INFO_PROTOCOL
*This
,
295 IN OUT VOID
*IdentifyData
,
296 IN OUT UINT32
*IdentifyDataSize
301 TODO: Add function description
303 @param This TODO: add argument description
304 @param SenseData TODO: add argument description
305 @param SenseDataSize TODO: add argument description
306 @param SenseDataNumber TODO: add argument description
308 TODO: add return values
313 IDEDiskInfoSenseData (
314 IN EFI_DISK_INFO_PROTOCOL
*This
,
315 IN OUT VOID
*SenseData
,
316 IN OUT UINT32
*SenseDataSize
,
317 OUT UINT8
*SenseDataNumber
322 TODO: Add function description
324 @param This TODO: add argument description
325 @param IdeChannel TODO: add argument description
326 @param IdeDevice TODO: add argument description
328 TODO: add return values
333 IDEDiskInfoWhichIde (
334 IN EFI_DISK_INFO_PROTOCOL
*This
,
335 OUT UINT32
*IdeChannel
,
336 OUT UINT32
*IdeDevice