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
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 ATA_UDMA_MODE UDma_Mode
;
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 // Block I/O Protocol Interface
178 TODO: Add function description
180 @param This TODO: add argument description
181 @param ExtendedVerification TODO: add argument description
183 TODO: add return values
189 IN EFI_BLOCK_IO_PROTOCOL
*This
,
190 IN BOOLEAN ExtendedVerification
195 TODO: Add function description
197 @param This TODO: add argument description
198 @param MediaId TODO: add argument description
199 @param LBA TODO: add argument description
200 @param BufferSize TODO: add argument description
201 @param Buffer TODO: add argument description
203 TODO: add return values
209 IN EFI_BLOCK_IO_PROTOCOL
*This
,
218 TODO: Add function description
220 @param This TODO: add argument description
221 @param MediaId TODO: add argument description
222 @param LBA TODO: add argument description
223 @param BufferSize TODO: add argument description
224 @param Buffer TODO: add argument description
226 TODO: add return values
231 IDEBlkIoWriteBlocks (
232 IN EFI_BLOCK_IO_PROTOCOL
*This
,
241 TODO: Add function description
243 @param This TODO: add argument description
245 TODO: add return values
250 IDEBlkIoFlushBlocks (
251 IN EFI_BLOCK_IO_PROTOCOL
*This
256 TODO: Add function description
258 @param PciIo TODO: add argument description
259 @param Enable TODO: add argument description
261 TODO: add return values
265 IDERegisterDecodeEnableorDisable (
266 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
272 TODO: Add function description
274 @param This TODO: add argument description
275 @param InquiryData TODO: add argument description
276 @param IntquiryDataSize TODO: add argument description
278 TODO: add return values
284 IN EFI_DISK_INFO_PROTOCOL
*This
,
285 IN OUT VOID
*InquiryData
,
286 IN OUT UINT32
*IntquiryDataSize
291 TODO: Add function description
293 @param This TODO: add argument description
294 @param IdentifyData TODO: add argument description
295 @param IdentifyDataSize TODO: add argument description
297 TODO: add return values
302 IDEDiskInfoIdentify (
303 IN EFI_DISK_INFO_PROTOCOL
*This
,
304 IN OUT VOID
*IdentifyData
,
305 IN OUT UINT32
*IdentifyDataSize
310 TODO: Add function description
312 @param This TODO: add argument description
313 @param SenseData TODO: add argument description
314 @param SenseDataSize TODO: add argument description
315 @param SenseDataNumber TODO: add argument description
317 TODO: add return values
322 IDEDiskInfoSenseData (
323 IN EFI_DISK_INFO_PROTOCOL
*This
,
324 IN OUT VOID
*SenseData
,
325 IN OUT UINT32
*SenseDataSize
,
326 OUT UINT8
*SenseDataNumber
331 TODO: Add function description
333 @param This TODO: add argument description
334 @param IdeChannel TODO: add argument description
335 @param IdeDevice TODO: add argument description
337 TODO: add return values
342 IDEDiskInfoWhichIde (
343 IN EFI_DISK_INFO_PROTOCOL
*This
,
344 OUT UINT32
*IdeChannel
,
345 OUT UINT32
*IdeDevice