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, containing the helper functions'
22 2002-6: Add Atapi6 enhancement, support >120GB hard disk, including
23 Add - IDEBlkIoReadBlocksExt() func definition
24 Add - IDEBlkIoWriteBlocksExt() func definition
28 // TODO: fix comment to end with --*/
33 // Helper functions Prototype
37 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
38 IN EFI_HANDLE Controller
,
45 TODO: Add function description
49 This - TODO: add argument description
50 Controller - TODO: add argument description
51 Handle - TODO: add argument description
55 TODO: add return values
62 IN EFI_HANDLE Controller
,
63 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
64 IN EFI_DEVICE_PATH_PROTOCOL
*ParentDevicePath
,
65 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
71 TODO: Add function description
75 Controller - TODO: add argument description
76 PciIo - TODO: add argument description
77 ParentDevicePath - TODO: add argument description
78 RemainingDevicePath - TODO: add argument description
82 TODO: add return values
89 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
96 TODO: Add function description
100 PciIo - TODO: add argument description
101 Port - TODO: add argument description
105 TODO: add return values
111 IDEReadPortWMultiple (
112 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
121 TODO: Add function description
125 PciIo - TODO: add argument description
126 Port - TODO: add argument description
127 Count - TODO: add argument description
128 Buffer - TODO: add argument description
132 TODO: add return values
139 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
147 TODO: Add function description
151 PciIo - TODO: add argument description
152 Port - TODO: add argument description
153 Data - TODO: add argument description
157 TODO: add return values
164 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
172 TODO: Add function description
176 PciIo - TODO: add argument description
177 Port - TODO: add argument description
178 Data - TODO: add argument description
182 TODO: add return values
188 IDEWritePortWMultiple (
189 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
198 TODO: Add function description
202 PciIo - TODO: add argument description
203 Port - TODO: add argument description
204 Count - TODO: add argument description
205 Buffer - TODO: add argument description
209 TODO: add return values
215 GetIdeRegistersBaseAddr (
216 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
217 OUT IDE_REGISTERS_BASE_ADDR
*IdeRegsBaseAddr
223 TODO: Add function description
227 PciIo - TODO: add argument description
228 IdeRegsBaseAddr - TODO: add argument description
232 TODO: add return values
238 ReassignIdeResources (
239 IN IDE_BLK_IO_DEV
*IdeDev
245 TODO: Add function description
249 IdeDev - TODO: add argument description
253 TODO: add return values
260 IN IDE_BLK_IO_DEV
*IdeDev
266 TODO: Add function description
270 IdeDev - TODO: add argument description
274 TODO: add return values
280 DetectIDEController (
281 IN IDE_BLK_IO_DEV
*IdeDev
287 TODO: Add function description
291 IdeDev - TODO: add argument description
295 TODO: add return values
302 IN IDE_BLK_IO_DEV
*IdeDev
,
303 IN UINTN TimeoutInMilliSeconds
309 TODO: Add function description
313 IdeDev - TODO: add argument description
314 TimeoutInMilliSeconds - TODO: add argument description
318 TODO: add return values
325 IN IDE_BLK_IO_DEV
*IdeDev
,
326 IN UINTN TimeoutInMilliSeconds
332 TODO: Add function description
336 IdeDev - TODO: add argument description
337 TimeoutInMilliSeconds - TODO: add argument description
341 TODO: add return values
348 IN IDE_BLK_IO_DEV
*IdeDev
,
349 IN UINTN TimeoutInMilliSeconds
355 TODO: Add function description
359 IdeDev - TODO: add argument description
360 TimeoutInMilliSeconds - TODO: add argument description
364 TODO: add return values
371 IN IDE_BLK_IO_DEV
*IdeDev
,
372 IN UINTN TimeoutInMilliSeconds
378 TODO: Add function description
382 IdeDev - TODO: add argument description
383 TimeoutInMilliSeconds - TODO: add argument description
387 TODO: add return values
394 IN IDE_BLK_IO_DEV
*IdeDev
,
395 IN UINTN TimeoutInMilliSeconds
401 TODO: Add function description
405 IdeDev - TODO: add argument description
406 TimeoutInMilliSeconds - TODO: add argument description
410 TODO: add return values
417 IN IDE_BLK_IO_DEV
*IdeDev
,
418 IN UINTN TimeoutInMilliSeconds
424 TODO: Add function description
428 IdeDev - TODO: add argument description
429 TimeoutInMilliSeconds - TODO: add argument description
433 TODO: add return values
440 IN IDE_BLK_IO_DEV
*IdeDev
,
441 IN UINTN DelayInMilliSeconds
447 TODO: Add function description
451 IdeDev - TODO: add argument description
452 DelayInMilliSeconds - TODO: add argument description
456 TODO: add return values
463 IN IDE_BLK_IO_DEV
*IdeDev
,
464 IN UINTN DelayInMilliSeconds
470 TODO: Add function description
474 IdeDev - TODO: add argument description
475 DelayInMilliSeconds - TODO: add argument description
479 TODO: add return values
486 IN CHAR8
*Destination
,
494 TODO: Add function description
498 Destination - TODO: add argument description
499 Source - TODO: add argument description
500 Size - TODO: add argument description
504 TODO: add return values
510 // ATA device functions' prototype
514 IN IDE_BLK_IO_DEV
*IdeDev
520 TODO: Add function description
524 IdeDev - TODO: add argument description
528 TODO: add return values
535 IN IDE_BLK_IO_DEV
*IdeDev
541 TODO: Add function description
545 IdeDev - TODO: add argument description
549 TODO: add return values
556 IN IDE_BLK_IO_DEV
*IdeDev
,
561 IN UINT8 SectorCount
,
562 IN UINT8 SectorNumber
,
563 IN UINT8 CylinderLsb
,
570 TODO: Add function description
574 IdeDev - TODO: add argument description
575 Buffer - TODO: add argument description
576 ByteCount - TODO: add argument description
577 AtaCommand - TODO: add argument description
578 Head - TODO: add argument description
579 SectorCount - TODO: add argument description
580 SectorNumber - TODO: add argument description
581 CylinderLsb - TODO: add argument description
582 CylinderMsb - TODO: add argument description
586 TODO: add return values
593 IN IDE_BLK_IO_DEV
*IdeDev
,
598 IN UINT8 SectorCount
,
599 IN UINT8 SectorNumber
,
600 IN UINT8 CylinderLsb
,
607 TODO: Add function description
611 IdeDev - TODO: add argument description
612 Buffer - TODO: add argument description
613 ByteCount - TODO: add argument description
614 AtaCommand - TODO: add argument description
615 Head - TODO: add argument description
616 SectorCount - TODO: add argument description
617 SectorNumber - TODO: add argument description
618 CylinderLsb - TODO: add argument description
619 CylinderMsb - TODO: add argument description
623 TODO: add return values
630 IN IDE_BLK_IO_DEV
*IdeDev
636 TODO: Add function description
640 IdeDev - TODO: add argument description
644 TODO: add return values
651 IN IDE_BLK_IO_DEV
*IdeDev
,
654 IN UINTN NumberOfBlocks
660 TODO: Add function description
664 IdeDev - TODO: add argument description
665 DataBuffer - TODO: add argument description
666 Lba - TODO: add argument description
667 NumberOfBlocks - TODO: add argument description
671 TODO: add return values
678 IN IDE_BLK_IO_DEV
*IdeDev
,
681 IN UINTN NumberOfBlocks
687 TODO: Add function description
691 IdeDev - TODO: add argument description
692 BufferData - TODO: add argument description
693 Lba - TODO: add argument description
694 NumberOfBlocks - TODO: add argument description
698 TODO: add return values
705 IN IDE_BLK_IO_DEV
*IdeDev
711 TODO: Add function description
715 IdeDev - TODO: add argument description
719 TODO: add return values
726 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
736 TODO: Add function description
740 IdeBlkIoDevice - TODO: add argument description
741 MediaId - TODO: add argument description
742 LBA - TODO: add argument description
743 BufferSize - TODO: add argument description
744 Buffer - TODO: add argument description
748 TODO: add return values
754 AtaBlkIoWriteBlocks (
755 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
765 TODO: Add function description
769 IdeBlkIoDevice - TODO: add argument description
770 MediaId - TODO: add argument description
771 LBA - TODO: add argument description
772 BufferSize - TODO: add argument description
773 Buffer - TODO: add argument description
777 TODO: add return values
783 // ATAPI device functions' prototype
787 IN IDE_BLK_IO_DEV
*IdeDev
793 TODO: Add function description
797 IdeDev - TODO: add argument description
801 TODO: add return values
808 IN IDE_BLK_IO_DEV
*IdeDev
814 TODO: Add function description
818 IdeDev - TODO: add argument description
822 TODO: add return values
828 AtapiPacketCommandIn (
829 IN IDE_BLK_IO_DEV
*IdeDev
,
830 IN ATAPI_PACKET_COMMAND
*Packet
,
839 TODO: Add function description
843 IdeDev - TODO: add argument description
844 Packet - TODO: add argument description
845 Buffer - TODO: add argument description
846 ByteCount - TODO: add argument description
847 TimeOut - TODO: add argument description
851 TODO: add return values
857 AtapiPacketCommandOut (
858 IN IDE_BLK_IO_DEV
*IdeDev
,
859 IN ATAPI_PACKET_COMMAND
*Packet
,
868 TODO: Add function description
872 IdeDev - TODO: add argument description
873 Packet - TODO: add argument description
874 Buffer - TODO: add argument description
875 ByteCount - TODO: add argument description
876 TimeOut - TODO: add argument description
880 TODO: add return values
887 IN IDE_BLK_IO_DEV
*IdeDev
,
897 TODO: Add function description
901 IdeDev - TODO: add argument description
902 Buffer - TODO: add argument description
903 ByteCount - TODO: add argument description
904 Read - TODO: add argument description
905 TimeOut - TODO: add argument description
909 TODO: add return values
916 IN IDE_BLK_IO_DEV
*IdeDev
922 TODO: Add function description
926 IdeDev - TODO: add argument description
930 TODO: add return values
937 IN IDE_BLK_IO_DEV
*IdeDev
,
938 OUT UINTN
*SenseCounts
944 TODO: Add function description
948 IdeDev - TODO: add argument description
949 SenseCounts - TODO: add argument description
953 TODO: add return values
960 IN IDE_BLK_IO_DEV
*IdeDev
966 TODO: Add function description
970 IdeDev - TODO: add argument description
974 TODO: add return values
981 IN IDE_BLK_IO_DEV
*IdeDev
,
982 OUT BOOLEAN
*MediaChange
988 TODO: Add function description
992 IdeDev - TODO: add argument description
993 MediaChange - TODO: add argument description
997 TODO: add return values
1004 IN IDE_BLK_IO_DEV
*IdeDev
,
1007 IN UINTN NumberOfBlocks
1011 Routine Description:
1013 TODO: Add function description
1017 IdeDev - TODO: add argument description
1018 Buffer - TODO: add argument description
1019 Lba - TODO: add argument description
1020 NumberOfBlocks - TODO: add argument description
1024 TODO: add return values
1031 IN IDE_BLK_IO_DEV
*IdeDev
,
1034 IN UINTN NumberOfBlocks
1038 Routine Description:
1040 TODO: Add function description
1044 IdeDev - TODO: add argument description
1045 Buffer - TODO: add argument description
1046 Lba - TODO: add argument description
1047 NumberOfBlocks - TODO: add argument description
1051 TODO: add return values
1058 IN IDE_BLK_IO_DEV
*IdeDev
1062 Routine Description:
1064 TODO: Add function description
1068 IdeDev - TODO: add argument description
1072 TODO: add return values
1078 AtapiBlkIoReadBlocks (
1079 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
1082 IN UINTN BufferSize
,
1087 Routine Description:
1089 TODO: Add function description
1093 IdeBlkIoDevice - TODO: add argument description
1094 MediaId - TODO: add argument description
1095 LBA - TODO: add argument description
1096 BufferSize - TODO: add argument description
1097 Buffer - TODO: add argument description
1101 TODO: add return values
1107 AtapiBlkIoWriteBlocks (
1108 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
1111 IN UINTN BufferSize
,
1116 Routine Description:
1118 TODO: Add function description
1122 IdeBlkIoDevice - TODO: add argument description
1123 MediaId - TODO: add argument description
1124 LBA - TODO: add argument description
1125 BufferSize - TODO: add argument description
1126 Buffer - TODO: add argument description
1130 TODO: add return values
1137 IN REQUEST_SENSE_DATA
*SenseData
,
1138 IN UINTN SenseCounts
1142 Routine Description:
1144 TODO: Add function description
1148 SenseData - TODO: add argument description
1149 SenseCounts - TODO: add argument description
1153 TODO: add return values
1160 IN REQUEST_SENSE_DATA
*SenseData
,
1161 IN UINTN SenseCounts
1165 Routine Description:
1167 TODO: Add function description
1171 SenseData - TODO: add argument description
1172 SenseCounts - TODO: add argument description
1176 TODO: add return values
1183 IN REQUEST_SENSE_DATA
*SenseData
,
1184 IN UINTN SenseCounts
1188 Routine Description:
1190 TODO: Add function description
1194 SenseData - TODO: add argument description
1195 SenseCounts - TODO: add argument description
1199 TODO: add return values
1206 IN REQUEST_SENSE_DATA
*SenseData
,
1207 IN UINTN SenseCounts
,
1208 OUT BOOLEAN
*NeedRetry
1212 Routine Description:
1214 TODO: Add function description
1218 SenseData - TODO: add argument description
1219 SenseCounts - TODO: add argument description
1220 NeedRetry - TODO: add argument description
1224 TODO: add return values
1231 IN REQUEST_SENSE_DATA
*SenseData
,
1232 IN UINTN SenseCounts
1236 Routine Description:
1238 TODO: Add function description
1242 SenseData - TODO: add argument description
1243 SenseCounts - TODO: add argument description
1247 TODO: add return values
1253 IsLS120orZipWriteProtected (
1254 IN IDE_BLK_IO_DEV
*IdeDev
,
1255 OUT BOOLEAN
*WriteProtected
1259 Routine Description:
1261 TODO: Add function description
1265 IdeDev - TODO: add argument description
1266 WriteProtected - TODO: add argument description
1270 TODO: add return values
1276 ReleaseIdeResources (
1277 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
1281 Routine Description:
1283 TODO: Add function description
1287 IdeBlkIoDevice - TODO: add argument description
1291 TODO: add return values
1297 SetDeviceTransferMode (
1298 IN IDE_BLK_IO_DEV
*IdeDev
,
1299 IN ATA_TRANSFER_MODE
*TransferMode
1303 Routine Description:
1305 TODO: Add function description
1309 IdeDev - TODO: add argument description
1310 TransferMode - TODO: add argument description
1314 TODO: add return values
1320 ReadNativeMaxAddress (
1321 IN IDE_BLK_IO_DEV
*IdeDev
,
1322 OUT EFI_LBA
*NativeMaxAddress
1326 Routine Description:
1328 TODO: Add function description
1332 IdeDev - TODO: add argument description
1333 NativeMaxAddress - TODO: add argument description
1337 TODO: add return values
1344 IN IDE_BLK_IO_DEV
*IdeDev
,
1345 IN EFI_LBA MaxAddress
,
1346 IN BOOLEAN bVolatile
1350 Routine Description:
1352 TODO: Add function description
1356 IdeDev - TODO: add argument description
1357 MaxAddress - TODO: add argument description
1358 bVolatile - TODO: add argument description
1362 TODO: add return values
1368 AtaNonDataCommandIn (
1369 IN IDE_BLK_IO_DEV
*IdeDev
,
1370 IN UINT8 AtaCommand
,
1373 IN UINT8 SectorCount
,
1380 Routine Description:
1382 TODO: Add function description
1386 IdeDev - TODO: add argument description
1387 AtaCommand - TODO: add argument description
1388 Device - TODO: add argument description
1389 Feature - TODO: add argument description
1390 SectorCount - TODO: add argument description
1391 LbaLow - TODO: add argument description
1392 LbaMiddle - TODO: add argument description
1393 LbaHigh - TODO: add argument description
1397 TODO: add return values
1403 AtaNonDataCommandInExt (
1404 IN IDE_BLK_IO_DEV
*IdeDev
,
1405 IN UINT8 AtaCommand
,
1408 IN UINT16 SectorCount
,
1409 IN EFI_LBA LbaAddress
1413 Routine Description:
1415 TODO: Add function description
1419 IdeDev - TODO: add argument description
1420 AtaCommand - TODO: add argument description
1421 Device - TODO: add argument description
1422 Feature - TODO: add argument description
1423 SectorCount - TODO: add argument description
1424 LbaAddress - TODO: add argument description
1428 TODO: add return values
1435 IN IDE_BLK_IO_DEV
*IdeDev
,
1436 IN VOID
*DataBuffer
,
1437 IN EFI_LBA StartLba
,
1438 IN UINTN NumberOfBlocks
1442 Routine Description:
1444 TODO: Add function description
1448 IdeDev - TODO: add argument description
1449 DataBuffer - TODO: add argument description
1450 StartLba - TODO: add argument description
1451 NumberOfBlocks - TODO: add argument description
1455 TODO: add return values
1461 AtaWriteSectorsExt (
1462 IN IDE_BLK_IO_DEV
*IdeDev
,
1463 IN VOID
*DataBuffer
,
1464 IN EFI_LBA StartLba
,
1465 IN UINTN NumberOfBlocks
1469 Routine Description:
1471 TODO: Add function description
1475 IdeDev - TODO: add argument description
1476 DataBuffer - TODO: add argument description
1477 StartLba - TODO: add argument description
1478 NumberOfBlocks - TODO: add argument description
1482 TODO: add return values
1489 IN IDE_BLK_IO_DEV
*IdeDev
,
1490 IN VOID
*DataBuffer
,
1491 IN EFI_LBA StartLba
,
1492 IN UINTN NumberOfBlocks
1496 Routine Description:
1498 TODO: Add function description
1502 IdeDev - TODO: add argument description
1503 DataBuffer - TODO: add argument description
1504 StartLba - TODO: add argument description
1505 NumberOfBlocks - TODO: add argument description
1509 TODO: add return values
1516 IN IDE_BLK_IO_DEV
*IdeDev
,
1517 IN VOID
*DataBuffer
,
1518 IN EFI_LBA StartLba
,
1519 IN UINTN NumberOfBlocks
1523 Routine Description:
1525 TODO: Add function description
1529 IdeDev - TODO: add argument description
1530 DataBuffer - TODO: add argument description
1531 StartLba - TODO: add argument description
1532 NumberOfBlocks - TODO: add argument description
1536 TODO: add return values
1543 IN IDE_BLK_IO_DEV
*IdeDev
,
1544 IN VOID
*DataBuffer
,
1545 IN EFI_LBA StartLba
,
1546 IN UINTN NumberOfBlocks
1550 Routine Description:
1552 TODO: Add function description
1556 IdeDev - TODO: add argument description
1557 DataBuffer - TODO: add argument description
1558 StartLba - TODO: add argument description
1559 NumberOfBlocks - TODO: add argument description
1563 TODO: add return values
1570 IN IDE_BLK_IO_DEV
*IdeDev
,
1571 IN VOID
*DataBuffer
,
1572 IN EFI_LBA StartLba
,
1573 IN UINTN NumberOfBlocks
1577 Routine Description:
1579 TODO: Add function description
1583 IdeDev - TODO: add argument description
1584 DataBuffer - TODO: add argument description
1585 StartLba - TODO: add argument description
1586 NumberOfBlocks - TODO: add argument description
1590 TODO: add return values
1596 AtaCommandIssueExt (
1597 IN IDE_BLK_IO_DEV
*IdeDev
,
1598 IN UINT8 AtaCommand
,
1601 IN UINT16 SectorCount
,
1602 IN EFI_LBA LbaAddress
1606 Routine Description:
1608 TODO: Add function description
1612 IdeDev - TODO: add argument description
1613 AtaCommand - TODO: add argument description
1614 Device - TODO: add argument description
1615 Feature - TODO: add argument description
1616 SectorCount - TODO: add argument description
1617 LbaAddress - TODO: add argument description
1621 TODO: add return values
1628 IN IDE_BLK_IO_DEV
*IdeDev
,
1629 IN UINT8 AtaCommand
,
1632 IN UINT16 SectorCount
,
1633 IN EFI_LBA LbaAddress
1637 Routine Description:
1639 TODO: Add function description
1643 IdeDev - TODO: add argument description
1644 AtaCommand - TODO: add argument description
1645 Device - TODO: add argument description
1646 Feature - TODO: add argument description
1647 SectorCount - TODO: add argument description
1648 LbaAddress - TODO: add argument description
1652 TODO: add return values
1659 IN IDE_BLK_IO_DEV
*IdeDev
1663 Routine Description:
1665 TODO: Add function description
1669 IdeDev - TODO: add argument description
1673 TODO: add return values
1681 IN IDE_BLK_IO_DEV
*IdeDev
1685 Routine Description:
1687 TODO: Add function description
1691 IdeDev - TODO: add argument description
1695 TODO: add return values
1702 IN IDE_BLK_IO_DEV
*IdeDev
,
1703 IN OUT VOID
*Buffer
,
1704 IN UINT32 ByteCount
,
1705 IN UINT8 AtaCommand
,
1706 IN EFI_LBA StartLba
,
1707 IN UINT16 SectorCount
1711 Routine Description:
1713 TODO: Add function description
1717 IdeDev - TODO: add argument description
1718 Buffer - TODO: add argument description
1719 ByteCount - TODO: add argument description
1720 AtaCommand - TODO: add argument description
1721 StartLba - TODO: add argument description
1722 SectorCount - TODO: add argument description
1726 TODO: add return values
1733 IN IDE_BLK_IO_DEV
*IdeDev
,
1735 IN UINT32 ByteCount
,
1736 IN UINT8 AtaCommand
,
1737 IN EFI_LBA StartLba
,
1738 IN UINT16 SectorCount
1742 Routine Description:
1744 TODO: Add function description
1748 IdeDev - TODO: add argument description
1749 Buffer - TODO: add argument description
1750 ByteCount - TODO: add argument description
1751 AtaCommand - TODO: add argument description
1752 StartLba - TODO: add argument description
1753 SectorCount - TODO: add argument description
1757 TODO: add return values
1763 SetDriveParameters (
1764 IN IDE_BLK_IO_DEV
*IdeDev
,
1765 IN ATA_DRIVE_PARMS
*DriveParameters
1769 Routine Description:
1771 TODO: Add function description
1775 IdeDev - TODO: add argument description
1776 DriveParameters - TODO: add argument description
1780 TODO: add return values
1787 IN IDE_BLK_IO_DEV
*IdeDev
1791 Routine Description:
1793 TODO: Add function description
1797 IdeDev - TODO: add argument description
1801 TODO: add return values