2 Header file for IDE Bus Driver, containing the helper functions'
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 @par Revision Reference:
15 2002-6: Add Atapi6 enhancement, support >120GB hard disk, including
16 Add - IDEBlkIoReadBlocksExt() func definition
17 Add - IDEBlkIoWriteBlocksExt() func definition
25 // Helper functions Prototype
28 TODO: Add function description
30 @param This TODO: add argument description
31 @param Controller TODO: add argument description
32 @param Handle TODO: add argument description
34 TODO: add return values
39 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
40 IN EFI_HANDLE Controller
,
46 TODO: Add function description
48 @param Controller TODO: add argument description
49 @param PciIo TODO: add argument description
50 @param ParentDevicePath TODO: add argument description
51 @param RemainingDevicePath TODO: add argument description
53 TODO: add return values
58 IN EFI_HANDLE Controller
,
59 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
60 IN EFI_DEVICE_PATH_PROTOCOL
*ParentDevicePath
,
61 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
66 TODO: Add function description
68 @param PciIo TODO: add argument description
69 @param Port TODO: add argument description
71 TODO: add return values
76 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
82 TODO: Add function description
84 @param PciIo TODO: add argument description
85 @param Port TODO: add argument description
86 @param Count TODO: add argument description
87 @param Buffer TODO: add argument description
89 TODO: add return values
93 IDEReadPortWMultiple (
94 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
102 TODO: Add function description
104 @param PciIo TODO: add argument description
105 @param Port TODO: add argument description
106 @param Data TODO: add argument description
108 TODO: add return values
113 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
120 TODO: Add function description
122 @param PciIo TODO: add argument description
123 @param Port TODO: add argument description
124 @param Data TODO: add argument description
126 TODO: add return values
131 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
138 TODO: Add function description
140 @param PciIo TODO: add argument description
141 @param Port TODO: add argument description
142 @param Count TODO: add argument description
143 @param Buffer TODO: add argument description
145 TODO: add return values
149 IDEWritePortWMultiple (
150 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
158 TODO: Add function description
160 @param PciIo TODO: add argument description
161 @param IdeRegsBaseAddr TODO: add argument description
163 TODO: add return values
167 GetIdeRegistersBaseAddr (
168 IN EFI_PCI_IO_PROTOCOL
*PciIo
,
169 OUT IDE_REGISTERS_BASE_ADDR
*IdeRegsBaseAddr
174 TODO: Add function description
176 @param IdeDev TODO: add argument description
178 TODO: add return values
182 ReassignIdeResources (
183 IN IDE_BLK_IO_DEV
*IdeDev
188 TODO: Add function description
190 @param IdeDev TODO: add argument description
192 TODO: add return values
197 IN IDE_BLK_IO_DEV
*IdeDev
202 TODO: Add function description
204 @param IdeDev TODO: add argument description
206 TODO: add return values
210 DetectIDEController (
211 IN IDE_BLK_IO_DEV
*IdeDev
216 TODO: Add function description
218 @param IdeDev TODO: add argument description
219 @param TimeoutInMilliSeconds TODO: add argument description
221 TODO: add return values
226 IN IDE_BLK_IO_DEV
*IdeDev
,
227 IN UINTN TimeoutInMilliSeconds
232 TODO: Add function description
234 @param IdeDev TODO: add argument description
235 @param TimeoutInMilliSeconds TODO: add argument description
237 TODO: add return values
242 IN IDE_BLK_IO_DEV
*IdeDev
,
243 IN UINTN TimeoutInMilliSeconds
248 TODO: Add function description
250 @param IdeDev TODO: add argument description
251 @param TimeoutInMilliSeconds TODO: add argument description
253 TODO: add return values
258 IN IDE_BLK_IO_DEV
*IdeDev
,
259 IN UINTN TimeoutInMilliSeconds
264 TODO: Add function description
266 @param IdeDev TODO: add argument description
267 @param TimeoutInMilliSeconds TODO: add argument description
269 TODO: add return values
274 IN IDE_BLK_IO_DEV
*IdeDev
,
275 IN UINTN TimeoutInMilliSeconds
280 TODO: Add function description
282 @param IdeDev TODO: add argument description
283 @param TimeoutInMilliSeconds TODO: add argument description
285 TODO: add return values
290 IN IDE_BLK_IO_DEV
*IdeDev
,
291 IN UINTN TimeoutInMilliSeconds
296 TODO: Add function description
298 @param IdeDev TODO: add argument description
299 @param TimeoutInMilliSeconds TODO: add argument description
301 TODO: add return values
306 IN IDE_BLK_IO_DEV
*IdeDev
,
307 IN UINTN TimeoutInMilliSeconds
312 TODO: Add function description
314 @param IdeDev TODO: add argument description
315 @param DelayInMilliSeconds TODO: add argument description
317 TODO: add return values
322 IN IDE_BLK_IO_DEV
*IdeDev
,
323 IN UINTN DelayInMilliSeconds
328 TODO: Add function description
330 @param IdeDev TODO: add argument description
331 @param DelayInMilliSeconds TODO: add argument description
333 TODO: add return values
338 IN IDE_BLK_IO_DEV
*IdeDev
,
339 IN UINTN DelayInMilliSeconds
344 TODO: Add function description
346 @param Destination TODO: add argument description
347 @param Source TODO: add argument description
348 @param Size TODO: add argument description
350 TODO: add return values
355 IN CHAR8
*Destination
,
362 // ATA device functions' prototype
365 TODO: Add function description
367 @param IdeDev TODO: add argument description
369 TODO: add return values
374 IN IDE_BLK_IO_DEV
*IdeDev
379 TODO: Add function description
381 @param IdeDev TODO: add argument description
383 TODO: add return values
388 IN IDE_BLK_IO_DEV
*IdeDev
393 TODO: Add function description
395 @param IdeDev TODO: add argument description
396 @param Buffer TODO: add argument description
397 @param ByteCount TODO: add argument description
398 @param AtaCommand TODO: add argument description
399 @param Head TODO: add argument description
400 @param SectorCount TODO: add argument description
401 @param SectorNumber TODO: add argument description
402 @param CylinderLsb TODO: add argument description
403 @param CylinderMsb TODO: add argument description
405 TODO: add return values
410 IN IDE_BLK_IO_DEV
*IdeDev
,
415 IN UINT8 SectorCount
,
416 IN UINT8 SectorNumber
,
417 IN UINT8 CylinderLsb
,
423 TODO: Add function description
425 @param IdeDev TODO: add argument description
426 @param Buffer TODO: add argument description
427 @param ByteCount TODO: add argument description
428 @param AtaCommand TODO: add argument description
429 @param Head TODO: add argument description
430 @param SectorCount TODO: add argument description
431 @param SectorNumber TODO: add argument description
432 @param CylinderLsb TODO: add argument description
433 @param CylinderMsb TODO: add argument description
435 TODO: add return values
440 IN IDE_BLK_IO_DEV
*IdeDev
,
445 IN UINT8 SectorCount
,
446 IN UINT8 SectorNumber
,
447 IN UINT8 CylinderLsb
,
453 TODO: Add function description
455 @param IdeDev TODO: add argument description
457 TODO: add return values
462 IN IDE_BLK_IO_DEV
*IdeDev
467 TODO: Add function description
469 @param IdeDev TODO: add argument description
470 @param DataBuffer TODO: add argument description
471 @param Lba TODO: add argument description
472 @param NumberOfBlocks TODO: add argument description
474 TODO: add return values
479 IN IDE_BLK_IO_DEV
*IdeDev
,
482 IN UINTN NumberOfBlocks
487 TODO: Add function description
489 @param IdeDev TODO: add argument description
490 @param BufferData TODO: add argument description
491 @param Lba TODO: add argument description
492 @param NumberOfBlocks TODO: add argument description
494 TODO: add return values
499 IN IDE_BLK_IO_DEV
*IdeDev
,
502 IN UINTN NumberOfBlocks
507 TODO: Add function description
509 @param IdeDev TODO: add argument description
511 TODO: add return values
516 IN IDE_BLK_IO_DEV
*IdeDev
521 TODO: Add function description
523 @param IdeBlkIoDevice TODO: add argument description
524 @param MediaId TODO: add argument description
525 @param LBA TODO: add argument description
526 @param BufferSize TODO: add argument description
527 @param Buffer TODO: add argument description
529 TODO: add return values
534 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
543 TODO: Add function description
545 @param IdeBlkIoDevice TODO: add argument description
546 @param MediaId TODO: add argument description
547 @param LBA TODO: add argument description
548 @param BufferSize TODO: add argument description
549 @param Buffer TODO: add argument description
551 TODO: add return values
555 AtaBlkIoWriteBlocks (
556 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
565 // ATAPI device functions' prototype
568 TODO: Add function description
570 @param IdeDev TODO: add argument description
572 TODO: add return values
577 IN IDE_BLK_IO_DEV
*IdeDev
582 TODO: Add function description
584 @param IdeDev TODO: add argument description
586 TODO: add return values
591 IN IDE_BLK_IO_DEV
*IdeDev
596 TODO: Add function description
598 @param IdeDev TODO: add argument description
599 @param Packet TODO: add argument description
600 @param Buffer TODO: add argument description
601 @param ByteCount TODO: add argument description
602 @param TimeOut TODO: add argument description
604 TODO: add return values
608 AtapiPacketCommandIn (
609 IN IDE_BLK_IO_DEV
*IdeDev
,
610 IN ATAPI_PACKET_COMMAND
*Packet
,
618 TODO: Add function description
620 @param IdeDev TODO: add argument description
621 @param Packet TODO: add argument description
622 @param Buffer TODO: add argument description
623 @param ByteCount TODO: add argument description
624 @param TimeOut TODO: add argument description
626 TODO: add return values
630 AtapiPacketCommandOut (
631 IN IDE_BLK_IO_DEV
*IdeDev
,
632 IN ATAPI_PACKET_COMMAND
*Packet
,
640 TODO: Add function description
642 @param IdeDev TODO: add argument description
643 @param Buffer TODO: add argument description
644 @param ByteCount TODO: add argument description
645 @param Read TODO: add argument description
646 @param TimeOut TODO: add argument description
648 TODO: add return values
653 IN IDE_BLK_IO_DEV
*IdeDev
,
662 TODO: Add function description
664 @param IdeDev TODO: add argument description
666 TODO: add return values
671 IN IDE_BLK_IO_DEV
*IdeDev
676 TODO: Add function description
678 @param IdeDev TODO: add argument description
679 @param SenseCounts TODO: add argument description
681 TODO: add return values
686 IN IDE_BLK_IO_DEV
*IdeDev
,
687 OUT UINTN
*SenseCounts
692 TODO: Add function description
694 @param IdeDev TODO: add argument description
696 TODO: add return values
701 IN IDE_BLK_IO_DEV
*IdeDev
706 TODO: Add function description
708 @param IdeDev TODO: add argument description
709 @param MediaChange TODO: add argument description
711 TODO: add return values
716 IN IDE_BLK_IO_DEV
*IdeDev
,
717 OUT BOOLEAN
*MediaChange
722 TODO: Add function description
724 @param IdeDev TODO: add argument description
725 @param Buffer TODO: add argument description
726 @param Lba TODO: add argument description
727 @param NumberOfBlocks TODO: add argument description
729 TODO: add return values
734 IN IDE_BLK_IO_DEV
*IdeDev
,
737 IN UINTN NumberOfBlocks
742 TODO: Add function description
744 @param IdeDev TODO: add argument description
745 @param Buffer TODO: add argument description
746 @param Lba TODO: add argument description
747 @param NumberOfBlocks TODO: add argument description
749 TODO: add return values
754 IN IDE_BLK_IO_DEV
*IdeDev
,
757 IN UINTN NumberOfBlocks
762 TODO: Add function description
764 @param IdeDev TODO: add argument description
766 TODO: add return values
771 IN IDE_BLK_IO_DEV
*IdeDev
776 TODO: Add function description
778 @param IdeBlkIoDevice TODO: add argument description
779 @param MediaId TODO: add argument description
780 @param LBA TODO: add argument description
781 @param BufferSize TODO: add argument description
782 @param Buffer TODO: add argument description
784 TODO: add return values
788 AtapiBlkIoReadBlocks (
789 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
798 TODO: Add function description
800 @param IdeBlkIoDevice TODO: add argument description
801 @param MediaId TODO: add argument description
802 @param LBA TODO: add argument description
803 @param BufferSize TODO: add argument description
804 @param Buffer TODO: add argument description
806 TODO: add return values
810 AtapiBlkIoWriteBlocks (
811 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
,
820 TODO: Add function description
822 @param SenseData TODO: add argument description
823 @param SenseCounts TODO: add argument description
825 TODO: add return values
830 IN REQUEST_SENSE_DATA
*SenseData
,
836 TODO: Add function description
838 @param SenseData TODO: add argument description
839 @param SenseCounts TODO: add argument description
841 TODO: add return values
846 IN REQUEST_SENSE_DATA
*SenseData
,
852 TODO: Add function description
854 @param SenseData TODO: add argument description
855 @param SenseCounts TODO: add argument description
857 TODO: add return values
862 IN REQUEST_SENSE_DATA
*SenseData
,
868 TODO: Add function description
870 @param SenseData TODO: add argument description
871 @param SenseCounts TODO: add argument description
872 @param NeedRetry TODO: add argument description
874 TODO: add return values
879 IN REQUEST_SENSE_DATA
*SenseData
,
880 IN UINTN SenseCounts
,
881 OUT BOOLEAN
*NeedRetry
886 TODO: Add function description
888 @param SenseData TODO: add argument description
889 @param SenseCounts TODO: add argument description
891 TODO: add return values
896 IN REQUEST_SENSE_DATA
*SenseData
,
902 TODO: Add function description
904 @param IdeDev TODO: add argument description
905 @param WriteProtected TODO: add argument description
907 TODO: add return values
911 IsLS120orZipWriteProtected (
912 IN IDE_BLK_IO_DEV
*IdeDev
,
913 OUT BOOLEAN
*WriteProtected
918 TODO: Add function description
920 @param IdeBlkIoDevice TODO: add argument description
922 TODO: add return values
926 ReleaseIdeResources (
927 IN IDE_BLK_IO_DEV
*IdeBlkIoDevice
932 TODO: Add function description
934 @param IdeDev TODO: add argument description
935 @param TransferMode TODO: add argument description
937 TODO: add return values
941 SetDeviceTransferMode (
942 IN IDE_BLK_IO_DEV
*IdeDev
,
943 IN ATA_TRANSFER_MODE
*TransferMode
948 TODO: Add function description
950 @param IdeDev TODO: add argument description
951 @param NativeMaxAddress TODO: add argument description
953 TODO: add return values
957 ReadNativeMaxAddress (
958 IN IDE_BLK_IO_DEV
*IdeDev
,
959 OUT EFI_LBA
*NativeMaxAddress
964 TODO: Add function description
966 @param IdeDev TODO: add argument description
967 @param MaxAddress TODO: add argument description
968 @param bVolatile TODO: add argument description
970 TODO: add return values
975 IN IDE_BLK_IO_DEV
*IdeDev
,
976 IN EFI_LBA MaxAddress
,
982 TODO: Add function description
984 @param IdeDev TODO: add argument description
985 @param AtaCommand TODO: add argument description
986 @param Device TODO: add argument description
987 @param Feature TODO: add argument description
988 @param SectorCount TODO: add argument description
989 @param LbaLow TODO: add argument description
990 @param LbaMiddle TODO: add argument description
991 @param LbaHigh TODO: add argument description
993 TODO: add return values
997 AtaNonDataCommandIn (
998 IN IDE_BLK_IO_DEV
*IdeDev
,
1002 IN UINT8 SectorCount
,
1010 TODO: Add function description
1012 @param IdeDev TODO: add argument description
1013 @param AtaCommand TODO: add argument description
1014 @param Device TODO: add argument description
1015 @param Feature TODO: add argument description
1016 @param SectorCount TODO: add argument description
1017 @param LbaAddress TODO: add argument description
1019 TODO: add return values
1023 AtaNonDataCommandInExt (
1024 IN IDE_BLK_IO_DEV
*IdeDev
,
1025 IN UINT8 AtaCommand
,
1028 IN UINT16 SectorCount
,
1029 IN EFI_LBA LbaAddress
1034 TODO: Add function description
1036 @param IdeDev TODO: add argument description
1037 @param DataBuffer TODO: add argument description
1038 @param StartLba TODO: add argument description
1039 @param NumberOfBlocks TODO: add argument description
1041 TODO: add return values
1046 IN IDE_BLK_IO_DEV
*IdeDev
,
1047 IN VOID
*DataBuffer
,
1048 IN EFI_LBA StartLba
,
1049 IN UINTN NumberOfBlocks
1054 TODO: Add function description
1056 @param IdeDev TODO: add argument description
1057 @param DataBuffer TODO: add argument description
1058 @param StartLba TODO: add argument description
1059 @param NumberOfBlocks TODO: add argument description
1061 TODO: add return values
1065 AtaWriteSectorsExt (
1066 IN IDE_BLK_IO_DEV
*IdeDev
,
1067 IN VOID
*DataBuffer
,
1068 IN EFI_LBA StartLba
,
1069 IN UINTN NumberOfBlocks
1074 TODO: Add function description
1076 @param IdeDev TODO: add argument description
1077 @param DataBuffer TODO: add argument description
1078 @param StartLba TODO: add argument description
1079 @param NumberOfBlocks TODO: add argument description
1081 TODO: add return values
1086 IN IDE_BLK_IO_DEV
*IdeDev
,
1087 IN VOID
*DataBuffer
,
1088 IN EFI_LBA StartLba
,
1089 IN UINTN NumberOfBlocks
1094 TODO: Add function description
1096 @param IdeDev TODO: add argument description
1097 @param DataBuffer TODO: add argument description
1098 @param StartLba TODO: add argument description
1099 @param NumberOfBlocks TODO: add argument description
1101 TODO: add return values
1106 IN IDE_BLK_IO_DEV
*IdeDev
,
1107 IN VOID
*DataBuffer
,
1108 IN EFI_LBA StartLba
,
1109 IN UINTN NumberOfBlocks
1114 TODO: Add function description
1116 @param IdeDev TODO: add argument description
1117 @param DataBuffer TODO: add argument description
1118 @param StartLba TODO: add argument description
1119 @param NumberOfBlocks TODO: add argument description
1121 TODO: add return values
1126 IN IDE_BLK_IO_DEV
*IdeDev
,
1127 IN VOID
*DataBuffer
,
1128 IN EFI_LBA StartLba
,
1129 IN UINTN NumberOfBlocks
1134 TODO: Add function description
1136 @param IdeDev TODO: add argument description
1137 @param DataBuffer TODO: add argument description
1138 @param StartLba TODO: add argument description
1139 @param NumberOfBlocks TODO: add argument description
1141 TODO: add return values
1146 IN IDE_BLK_IO_DEV
*IdeDev
,
1147 IN VOID
*DataBuffer
,
1148 IN EFI_LBA StartLba
,
1149 IN UINTN NumberOfBlocks
1154 TODO: Add function description
1156 @param IdeDev TODO: add argument description
1157 @param AtaCommand TODO: add argument description
1158 @param Device TODO: add argument description
1159 @param Feature TODO: add argument description
1160 @param SectorCount TODO: add argument description
1161 @param LbaAddress TODO: add argument description
1163 TODO: add return values
1167 AtaCommandIssueExt (
1168 IN IDE_BLK_IO_DEV
*IdeDev
,
1169 IN UINT8 AtaCommand
,
1172 IN UINT16 SectorCount
,
1173 IN EFI_LBA LbaAddress
1178 TODO: Add function description
1180 @param IdeDev TODO: add argument description
1181 @param AtaCommand TODO: add argument description
1182 @param Device TODO: add argument description
1183 @param Feature TODO: add argument description
1184 @param SectorCount TODO: add argument description
1185 @param LbaAddress TODO: add argument description
1187 TODO: add return values
1192 IN IDE_BLK_IO_DEV
*IdeDev
,
1193 IN UINT8 AtaCommand
,
1196 IN UINT16 SectorCount
,
1197 IN EFI_LBA LbaAddress
1202 TODO: Add function description
1204 @param IdeDev TODO: add argument description
1206 TODO: add return values
1211 IN IDE_BLK_IO_DEV
*IdeDev
1217 TODO: Add function description
1219 @param IdeDev TODO: add argument description
1221 TODO: add return values
1226 IN IDE_BLK_IO_DEV
*IdeDev
1231 TODO: Add function description
1233 @param IdeDev TODO: add argument description
1234 @param Buffer TODO: add argument description
1235 @param ByteCount TODO: add argument description
1236 @param AtaCommand TODO: add argument description
1237 @param StartLba TODO: add argument description
1238 @param SectorCount TODO: add argument description
1240 TODO: add return values
1245 IN IDE_BLK_IO_DEV
*IdeDev
,
1246 IN OUT VOID
*Buffer
,
1247 IN UINT32 ByteCount
,
1248 IN UINT8 AtaCommand
,
1249 IN EFI_LBA StartLba
,
1250 IN UINT16 SectorCount
1255 TODO: Add function description
1257 @param IdeDev TODO: add argument description
1258 @param Buffer TODO: add argument description
1259 @param ByteCount TODO: add argument description
1260 @param AtaCommand TODO: add argument description
1261 @param StartLba TODO: add argument description
1262 @param SectorCount TODO: add argument description
1264 TODO: add return values
1269 IN IDE_BLK_IO_DEV
*IdeDev
,
1271 IN UINT32 ByteCount
,
1272 IN UINT8 AtaCommand
,
1273 IN EFI_LBA StartLba
,
1274 IN UINT16 SectorCount
1279 TODO: Add function description
1281 @param IdeDev TODO: add argument description
1282 @param DriveParameters TODO: add argument description
1284 TODO: add return values
1288 SetDriveParameters (
1289 IN IDE_BLK_IO_DEV
*IdeDev
,
1290 IN ATA_DRIVE_PARMS
*DriveParameters
1295 TODO: Add function description
1297 @param IdeDev TODO: add argument description
1299 TODO: add return values
1304 IN IDE_BLK_IO_DEV
*IdeDev