2 Copyright (c) 2006, Intel Corporation
3 All rights reserved. This program and the accompanying materials
4 are licensed and made available under the terms and conditions of the BSD License
5 which accompanies this distribution. The full text of the license may be found at
6 http://opensource.org/licenses/bsd-license.php
8 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
9 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 Header file for IDE Bus Driver.
22 // TODO: fix comment to end with --*/
27 #include <IndustryStandard/pci22.h>
31 // Extra Definition to porting
33 #define EFI_MIN(a, b) (((a) < (b)) ? (a) : (b))
35 #define MAX_IDE_DEVICE 4
36 #define MAX_IDE_CHANNELS 2
37 #define MAX_IDE_DRIVES 2
40 BOOLEAN HaveScannedDevice
[MAX_IDE_DEVICE
];
41 BOOLEAN DeviceFound
[MAX_IDE_DEVICE
];
42 BOOLEAN DeviceProcessed
[MAX_IDE_DEVICE
];
43 } IDE_BUS_DRIVER_PRIVATE_DATA
;
45 #define IDE_BLK_IO_DEV_SIGNATURE EFI_SIGNATURE_32 ('i', 'b', 'i', 'd')
51 EFI_BLOCK_IO_PROTOCOL BlkIo
;
52 EFI_BLOCK_IO_MEDIA BlkMedia
;
53 EFI_DISK_INFO_PROTOCOL DiskInfo
;
54 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
55 EFI_PCI_IO_PROTOCOL
*PciIo
;
56 IDE_BUS_DRIVER_PRIVATE_DATA
*IdeBusDriverPrivateData
;
59 // Local Data for IDE interface goes here
61 EFI_IDE_CHANNEL Channel
;
62 EFI_IDE_DEVICE Device
;
66 IDE_BASE_REGISTERS
*IoPort
;
69 INQUIRY_DATA
*pInquiryData
;
70 EFI_IDENTIFY_DATA
*pIdData
;
72 ATA_UDMA_MODE UDma_Mode
;
74 REQUEST_SENSE_DATA
*SenseData
;
75 UINT8 SenseDataNumber
;
78 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
81 #include "ComponentName.h"
83 #define IDE_BLOCK_IO_DEV_FROM_THIS(a) CR (a, IDE_BLK_IO_DEV, BlkIo, IDE_BLK_IO_DEV_SIGNATURE)
84 #define IDE_BLOCK_IO_DEV_FROM_DISK_INFO_THIS(a) CR (a, IDE_BLK_IO_DEV, DiskInfo, IDE_BLK_IO_DEV_SIGNATURE)
89 extern EFI_DRIVER_BINDING_PROTOCOL gIDEBusDriverBinding
;
95 // Driver model protocol interface
99 IDEBusControllerDriverEntryPoint (
100 IN EFI_HANDLE ImageHandle
,
101 IN EFI_SYSTEM_TABLE
*SystemTable
107 TODO: Add function description
111 ImageHandle - TODO: add argument description
112 SystemTable - TODO: add argument description
116 TODO: add return values
123 IDEBusDriverBindingSupported (
124 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
125 IN EFI_HANDLE Controller
,
126 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
132 TODO: Add function description
136 This - TODO: add argument description
137 Controller - TODO: add argument description
138 RemainingDevicePath - TODO: add argument description
142 TODO: add return values
149 IDEBusDriverBindingStart (
150 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
151 IN EFI_HANDLE Controller
,
152 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
158 TODO: Add function description
162 This - TODO: add argument description
163 Controller - TODO: add argument description
164 RemainingDevicePath - TODO: add argument description
168 TODO: add return values
175 IDEBusDriverBindingStop (
176 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
177 IN EFI_HANDLE Controller
,
178 IN UINTN NumberOfChildren
,
179 IN EFI_HANDLE
*ChildHandleBuffer
185 TODO: Add function description
189 This - TODO: add argument description
190 Controller - TODO: add argument description
191 NumberOfChildren - TODO: add argument description
192 ChildHandleBuffer - TODO: add argument description
196 TODO: add return values
202 // Block I/O Protocol Interface
207 IN EFI_BLOCK_IO_PROTOCOL
*This
,
208 IN BOOLEAN ExtendedVerification
214 TODO: Add function description
218 This - TODO: add argument description
219 ExtendedVerification - TODO: add argument description
223 TODO: add return values
231 IN EFI_BLOCK_IO_PROTOCOL
*This
,
241 TODO: Add function description
245 This - TODO: add argument description
246 MediaId - TODO: add argument description
247 LBA - TODO: add argument description
248 BufferSize - TODO: add argument description
249 Buffer - TODO: add argument description
253 TODO: add return values
260 IDEBlkIoWriteBlocks (
261 IN EFI_BLOCK_IO_PROTOCOL
*This
,
271 TODO: Add function description
275 This - TODO: add argument description
276 MediaId - TODO: add argument description
277 LBA - TODO: add argument description
278 BufferSize - TODO: add argument description
279 Buffer - TODO: add argument description
283 TODO: add return values
290 IDEBlkIoFlushBlocks (
291 IN EFI_BLOCK_IO_PROTOCOL
*This
297 TODO: Add function description
301 This - TODO: add argument description
305 TODO: add return values
311 IDERegisterDecodeEnableorDisable (
312 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
319 TODO: Add function description
323 PciIo - TODO: add argument description
324 Enable - TODO: add argument description
328 TODO: add return values
336 IN EFI_DISK_INFO_PROTOCOL
*This
,
337 IN OUT VOID
*InquiryData
,
338 IN OUT UINT32
*IntquiryDataSize
344 TODO: Add function description
348 This - TODO: add argument description
349 InquiryData - TODO: add argument description
350 IntquiryDataSize - TODO: add argument description
354 TODO: add return values
361 IDEDiskInfoIdentify (
362 IN EFI_DISK_INFO_PROTOCOL
*This
,
363 IN OUT VOID
*IdentifyData
,
364 IN OUT UINT32
*IdentifyDataSize
370 TODO: Add function description
374 This - TODO: add argument description
375 IdentifyData - TODO: add argument description
376 IdentifyDataSize - TODO: add argument description
380 TODO: add return values
387 IDEDiskInfoSenseData (
388 IN EFI_DISK_INFO_PROTOCOL
*This
,
389 IN OUT VOID
*SenseData
,
390 IN OUT UINT32
*SenseDataSize
,
391 OUT UINT8
*SenseDataNumber
397 TODO: Add function description
401 This - TODO: add argument description
402 SenseData - TODO: add argument description
403 SenseDataSize - TODO: add argument description
404 SenseDataNumber - TODO: add argument description
408 TODO: add return values
415 IDEDiskInfoWhichIde (
416 IN EFI_DISK_INFO_PROTOCOL
*This
,
417 OUT UINT32
*IdeChannel
,
418 OUT UINT32
*IdeDevice
424 TODO: Add function description
428 This - TODO: add argument description
429 IdeChannel - TODO: add argument description
430 IdeDevice - TODO: add argument description
434 TODO: add return values