In IdeBus driver block I/O read/write interface, it will always try to use UDMA mode...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / IdeBus / Dxe / ide.h
1 /** @file
2 Header file for IDE Bus Driver, containing the helper functions'
3 entire prototype.
4
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
10
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.
13
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
18
19 **/
20
21 #ifndef _IDE_H
22 #define _IDE_H
23
24 //
25 // Helper functions Prototype
26 //
27 /**
28 TODO: Add function description
29
30 @param This TODO: add argument description
31 @param Controller TODO: add argument description
32 @param Handle TODO: add argument description
33
34 TODO: add return values
35
36 **/
37 EFI_STATUS
38 DeRegisterIdeDevice (
39 IN EFI_DRIVER_BINDING_PROTOCOL *This,
40 IN EFI_HANDLE Controller,
41 IN EFI_HANDLE Handle
42 )
43 ;
44
45 /**
46 TODO: Add function description
47
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
52
53 TODO: add return values
54
55 **/
56 EFI_STATUS
57 EnableIdeDevice (
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
62 )
63 ;
64
65 /**
66 TODO: Add function description
67
68 @param PciIo TODO: add argument description
69 @param Port TODO: add argument description
70
71 TODO: add return values
72
73 **/
74 UINT8
75 IDEReadPortB (
76 IN EFI_PCI_IO_PROTOCOL *PciIo,
77 IN UINT16 Port
78 )
79 ;
80
81 /**
82 TODO: Add function description
83
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
88
89 TODO: add return values
90
91 **/
92 VOID
93 IDEReadPortWMultiple (
94 IN EFI_PCI_IO_PROTOCOL *PciIo,
95 IN UINT16 Port,
96 IN UINTN Count,
97 OUT VOID *Buffer
98 )
99 ;
100
101 /**
102 TODO: Add function description
103
104 @param PciIo TODO: add argument description
105 @param Port TODO: add argument description
106 @param Data TODO: add argument description
107
108 TODO: add return values
109
110 **/
111 VOID
112 IDEWritePortB (
113 IN EFI_PCI_IO_PROTOCOL *PciIo,
114 IN UINT16 Port,
115 IN UINT8 Data
116 )
117 ;
118
119 /**
120 TODO: Add function description
121
122 @param PciIo TODO: add argument description
123 @param Port TODO: add argument description
124 @param Data TODO: add argument description
125
126 TODO: add return values
127
128 **/
129 VOID
130 IDEWritePortW (
131 IN EFI_PCI_IO_PROTOCOL *PciIo,
132 IN UINT16 Port,
133 IN UINT16 Data
134 )
135 ;
136
137 /**
138 TODO: Add function description
139
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
144
145 TODO: add return values
146
147 **/
148 VOID
149 IDEWritePortWMultiple (
150 IN EFI_PCI_IO_PROTOCOL *PciIo,
151 IN UINT16 Port,
152 IN UINTN Count,
153 IN VOID *Buffer
154 )
155 ;
156
157 /**
158 TODO: Add function description
159
160 @param PciIo TODO: add argument description
161 @param IdeRegsBaseAddr TODO: add argument description
162
163 TODO: add return values
164
165 **/
166 EFI_STATUS
167 GetIdeRegistersBaseAddr (
168 IN EFI_PCI_IO_PROTOCOL *PciIo,
169 OUT IDE_REGISTERS_BASE_ADDR *IdeRegsBaseAddr
170 )
171 ;
172
173 /**
174 TODO: Add function description
175
176 @param IdeDev TODO: add argument description
177
178 TODO: add return values
179
180 **/
181 EFI_STATUS
182 ReassignIdeResources (
183 IN IDE_BLK_IO_DEV *IdeDev
184 )
185 ;
186
187 /**
188 TODO: Add function description
189
190 @param IdeDev TODO: add argument description
191
192 TODO: add return values
193
194 **/
195 EFI_STATUS
196 DiscoverIdeDevice (
197 IN IDE_BLK_IO_DEV *IdeDev
198 )
199 ;
200
201 /**
202 This interface is used to initialize all state data related to the
203 detection of one channel.
204
205 @retval EFI_SUCCESS Completed successfully.
206
207 **/
208 EFI_STATUS
209 InitializeIDEChannelData (
210 VOID
211 )
212 ;
213
214 /**
215 TODO: Add function description
216
217 @param IdeDev TODO: add argument description
218
219 TODO: add return values
220
221 **/
222 EFI_STATUS
223 DetectIDEController (
224 IN IDE_BLK_IO_DEV *IdeDev
225 )
226 ;
227
228 /**
229 TODO: Add function description
230
231 @param IdeDev TODO: add argument description
232 @param TimeoutInMilliSeconds TODO: add argument description
233
234 TODO: add return values
235
236 **/
237 EFI_STATUS
238 DRQClear (
239 IN IDE_BLK_IO_DEV *IdeDev,
240 IN UINTN TimeoutInMilliSeconds
241 )
242 ;
243
244 /**
245 TODO: Add function description
246
247 @param IdeDev TODO: add argument description
248 @param TimeoutInMilliSeconds TODO: add argument description
249
250 TODO: add return values
251
252 **/
253 EFI_STATUS
254 DRQClear2 (
255 IN IDE_BLK_IO_DEV *IdeDev,
256 IN UINTN TimeoutInMilliSeconds
257 )
258 ;
259
260 /**
261 TODO: Add function description
262
263 @param IdeDev TODO: add argument description
264 @param TimeoutInMilliSeconds TODO: add argument description
265
266 TODO: add return values
267
268 **/
269 EFI_STATUS
270 DRQReady (
271 IN IDE_BLK_IO_DEV *IdeDev,
272 IN UINTN TimeoutInMilliSeconds
273 )
274 ;
275
276 /**
277 TODO: Add function description
278
279 @param IdeDev TODO: add argument description
280 @param TimeoutInMilliSeconds TODO: add argument description
281
282 TODO: add return values
283
284 **/
285 EFI_STATUS
286 DRQReady2 (
287 IN IDE_BLK_IO_DEV *IdeDev,
288 IN UINTN TimeoutInMilliSeconds
289 )
290 ;
291
292 /**
293 TODO: Add function description
294
295 @param IdeDev TODO: add argument description
296 @param TimeoutInMilliSeconds TODO: add argument description
297
298 TODO: add return values
299
300 **/
301 EFI_STATUS
302 WaitForBSYClear (
303 IN IDE_BLK_IO_DEV *IdeDev,
304 IN UINTN TimeoutInMilliSeconds
305 )
306 ;
307
308 /**
309 TODO: Add function description
310
311 @param IdeDev TODO: add argument description
312 @param TimeoutInMilliSeconds TODO: add argument description
313
314 TODO: add return values
315
316 **/
317 EFI_STATUS
318 WaitForBSYClear2 (
319 IN IDE_BLK_IO_DEV *IdeDev,
320 IN UINTN TimeoutInMilliSeconds
321 )
322 ;
323
324 /**
325 TODO: Add function description
326
327 @param IdeDev TODO: add argument description
328 @param DelayInMilliSeconds TODO: add argument description
329
330 TODO: add return values
331
332 **/
333 EFI_STATUS
334 DRDYReady (
335 IN IDE_BLK_IO_DEV *IdeDev,
336 IN UINTN DelayInMilliSeconds
337 )
338 ;
339
340 /**
341 TODO: Add function description
342
343 @param IdeDev TODO: add argument description
344 @param DelayInMilliSeconds TODO: add argument description
345
346 TODO: add return values
347
348 **/
349 EFI_STATUS
350 DRDYReady2 (
351 IN IDE_BLK_IO_DEV *IdeDev,
352 IN UINTN DelayInMilliSeconds
353 )
354 ;
355
356 /**
357 TODO: Add function description
358
359 @param Destination TODO: add argument description
360 @param Source TODO: add argument description
361 @param Size TODO: add argument description
362
363 TODO: add return values
364
365 **/
366 VOID
367 SwapStringChars (
368 IN CHAR8 *Destination,
369 IN CHAR8 *Source,
370 IN UINT32 Size
371 )
372 ;
373
374 //
375 // ATA device functions' prototype
376 //
377 /**
378 TODO: Add function description
379
380 @param IdeDev TODO: add argument description
381
382 TODO: add return values
383
384 **/
385 EFI_STATUS
386 ATAIdentify (
387 IN IDE_BLK_IO_DEV *IdeDev
388 )
389 ;
390
391 /**
392 TODO: Add function description
393
394 @param IdeDev TODO: add argument description
395
396 TODO: add return values
397
398 **/
399 VOID
400 PrintAtaModuleName (
401 IN IDE_BLK_IO_DEV *IdeDev
402 )
403 ;
404
405 /**
406 TODO: Add function description
407
408 @param IdeDev TODO: add argument description
409 @param Buffer TODO: add argument description
410 @param ByteCount TODO: add argument description
411 @param AtaCommand TODO: add argument description
412 @param Head TODO: add argument description
413 @param SectorCount TODO: add argument description
414 @param SectorNumber TODO: add argument description
415 @param CylinderLsb TODO: add argument description
416 @param CylinderMsb TODO: add argument description
417
418 TODO: add return values
419
420 **/
421 EFI_STATUS
422 AtaPioDataIn (
423 IN IDE_BLK_IO_DEV *IdeDev,
424 IN VOID *Buffer,
425 IN UINT32 ByteCount,
426 IN UINT8 AtaCommand,
427 IN UINT8 Head,
428 IN UINT8 SectorCount,
429 IN UINT8 SectorNumber,
430 IN UINT8 CylinderLsb,
431 IN UINT8 CylinderMsb
432 )
433 ;
434
435 /**
436 TODO: Add function description
437
438 @param IdeDev TODO: add argument description
439 @param Buffer TODO: add argument description
440 @param ByteCount TODO: add argument description
441 @param AtaCommand TODO: add argument description
442 @param Head TODO: add argument description
443 @param SectorCount TODO: add argument description
444 @param SectorNumber TODO: add argument description
445 @param CylinderLsb TODO: add argument description
446 @param CylinderMsb TODO: add argument description
447
448 TODO: add return values
449
450 **/
451 EFI_STATUS
452 AtaPioDataOut (
453 IN IDE_BLK_IO_DEV *IdeDev,
454 IN VOID *Buffer,
455 IN UINT32 ByteCount,
456 IN UINT8 AtaCommand,
457 IN UINT8 Head,
458 IN UINT8 SectorCount,
459 IN UINT8 SectorNumber,
460 IN UINT8 CylinderLsb,
461 IN UINT8 CylinderMsb
462 )
463 ;
464
465 /**
466 TODO: Add function description
467
468 @param IdeDev TODO: add argument description
469
470 TODO: add return values
471
472 **/
473 EFI_STATUS
474 CheckErrorStatus (
475 IN IDE_BLK_IO_DEV *IdeDev
476 )
477 ;
478
479 /**
480 TODO: Add function description
481
482 @param IdeDev TODO: add argument description
483 @param DataBuffer TODO: add argument description
484 @param Lba TODO: add argument description
485 @param NumberOfBlocks TODO: add argument description
486
487 TODO: add return values
488
489 **/
490 EFI_STATUS
491 AtaReadSectors (
492 IN IDE_BLK_IO_DEV *IdeDev,
493 IN VOID *DataBuffer,
494 IN EFI_LBA Lba,
495 IN UINTN NumberOfBlocks
496 )
497 ;
498
499 /**
500 TODO: Add function description
501
502 @param IdeDev TODO: add argument description
503 @param BufferData TODO: add argument description
504 @param Lba TODO: add argument description
505 @param NumberOfBlocks TODO: add argument description
506
507 TODO: add return values
508
509 **/
510 EFI_STATUS
511 AtaWriteSectors (
512 IN IDE_BLK_IO_DEV *IdeDev,
513 IN VOID *BufferData,
514 IN EFI_LBA Lba,
515 IN UINTN NumberOfBlocks
516 )
517 ;
518
519 /**
520 TODO: Add function description
521
522 @param IdeDev TODO: add argument description
523
524 TODO: add return values
525
526 **/
527 EFI_STATUS
528 AtaSoftReset (
529 IN IDE_BLK_IO_DEV *IdeDev
530 )
531 ;
532
533 /**
534 TODO: Add function description
535
536 @param IdeBlkIoDevice TODO: add argument description
537 @param MediaId TODO: add argument description
538 @param LBA TODO: add argument description
539 @param BufferSize TODO: add argument description
540 @param Buffer TODO: add argument description
541
542 TODO: add return values
543
544 **/
545 EFI_STATUS
546 AtaBlkIoReadBlocks (
547 IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
548 IN UINT32 MediaId,
549 IN EFI_LBA LBA,
550 IN UINTN BufferSize,
551 OUT VOID *Buffer
552 )
553 ;
554
555 /**
556 TODO: Add function description
557
558 @param IdeBlkIoDevice TODO: add argument description
559 @param MediaId TODO: add argument description
560 @param LBA TODO: add argument description
561 @param BufferSize TODO: add argument description
562 @param Buffer TODO: add argument description
563
564 TODO: add return values
565
566 **/
567 EFI_STATUS
568 AtaBlkIoWriteBlocks (
569 IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
570 IN UINT32 MediaId,
571 IN EFI_LBA LBA,
572 IN UINTN BufferSize,
573 OUT VOID *Buffer
574 )
575 ;
576
577 //
578 // ATAPI device functions' prototype
579 //
580 /**
581 TODO: Add function description
582
583 @param IdeDev TODO: add argument description
584
585 TODO: add return values
586
587 **/
588 EFI_STATUS
589 ATAPIIdentify (
590 IN IDE_BLK_IO_DEV *IdeDev
591 )
592 ;
593
594 /**
595 TODO: Add function description
596
597 @param IdeDev TODO: add argument description
598
599 TODO: add return values
600
601 **/
602 EFI_STATUS
603 AtapiInquiry (
604 IN IDE_BLK_IO_DEV *IdeDev
605 )
606 ;
607
608 /**
609 TODO: Add function description
610
611 @param IdeDev TODO: add argument description
612 @param Packet TODO: add argument description
613 @param Buffer TODO: add argument description
614 @param ByteCount TODO: add argument description
615 @param TimeOut TODO: add argument description
616
617 TODO: add return values
618
619 **/
620 EFI_STATUS
621 AtapiPacketCommandIn (
622 IN IDE_BLK_IO_DEV *IdeDev,
623 IN ATAPI_PACKET_COMMAND *Packet,
624 IN UINT16 *Buffer,
625 IN UINT32 ByteCount,
626 IN UINTN TimeOut
627 )
628 ;
629
630 /**
631 TODO: Add function description
632
633 @param IdeDev TODO: add argument description
634 @param Packet TODO: add argument description
635 @param Buffer TODO: add argument description
636 @param ByteCount TODO: add argument description
637 @param TimeOut TODO: add argument description
638
639 TODO: add return values
640
641 **/
642 EFI_STATUS
643 AtapiPacketCommandOut (
644 IN IDE_BLK_IO_DEV *IdeDev,
645 IN ATAPI_PACKET_COMMAND *Packet,
646 IN UINT16 *Buffer,
647 IN UINT32 ByteCount,
648 IN UINTN TimeOut
649 )
650 ;
651
652 /**
653 TODO: Add function description
654
655 @param IdeDev TODO: add argument description
656 @param Buffer TODO: add argument description
657 @param ByteCount TODO: add argument description
658 @param Read TODO: add argument description
659 @param TimeOut TODO: add argument description
660
661 TODO: add return values
662
663 **/
664 EFI_STATUS
665 PioReadWriteData (
666 IN IDE_BLK_IO_DEV *IdeDev,
667 IN UINT16 *Buffer,
668 IN UINT32 ByteCount,
669 IN BOOLEAN Read,
670 IN UINTN TimeOut
671 )
672 ;
673
674 /**
675 TODO: Add function description
676
677 @param IdeDev TODO: add argument description
678 @param IdeDev TODO: add argument description
679
680 TODO: add return values
681
682 **/
683 EFI_STATUS
684 AtapiTestUnitReady (
685 IN IDE_BLK_IO_DEV *IdeDev,
686 OUT UINTN *SenseCount
687 )
688 ;
689
690 /**
691 TODO: Add function description
692
693 @param IdeDev TODO: add argument description
694 @param SenseCounts TODO: add argument description
695
696 TODO: add return values
697
698 **/
699 EFI_STATUS
700 AtapiRequestSense (
701 IN IDE_BLK_IO_DEV *IdeDev,
702 OUT UINTN *SenseCounts
703 )
704 ;
705
706 /**
707 TODO: Add function description
708
709 @param IdeDev TODO: add argument description
710 @param IdeDev TODO: add argument description
711
712 TODO: add return values
713
714 **/
715 EFI_STATUS
716 AtapiReadCapacity (
717 IN IDE_BLK_IO_DEV *IdeDev,
718 OUT UINTN *SenseCount
719 )
720 ;
721
722 /**
723 TODO: Add function description
724
725 @param IdeDev TODO: add argument description
726 @param MediaChange TODO: add argument description
727
728 TODO: add return values
729
730 **/
731 EFI_STATUS
732 AtapiDetectMedia (
733 IN IDE_BLK_IO_DEV *IdeDev,
734 OUT BOOLEAN *MediaChange
735 )
736 ;
737
738 /**
739 TODO: Add function description
740
741 @param IdeDev TODO: add argument description
742 @param Buffer TODO: add argument description
743 @param Lba TODO: add argument description
744 @param NumberOfBlocks TODO: add argument description
745
746 TODO: add return values
747
748 **/
749 EFI_STATUS
750 AtapiReadSectors (
751 IN IDE_BLK_IO_DEV *IdeDev,
752 IN VOID *Buffer,
753 IN EFI_LBA Lba,
754 IN UINTN NumberOfBlocks
755 )
756 ;
757
758 /**
759 TODO: Add function description
760
761 @param IdeDev TODO: add argument description
762 @param Buffer TODO: add argument description
763 @param Lba TODO: add argument description
764 @param NumberOfBlocks TODO: add argument description
765
766 TODO: add return values
767
768 **/
769 EFI_STATUS
770 AtapiWriteSectors (
771 IN IDE_BLK_IO_DEV *IdeDev,
772 IN VOID *Buffer,
773 IN EFI_LBA Lba,
774 IN UINTN NumberOfBlocks
775 )
776 ;
777
778 /**
779 TODO: Add function description
780
781 @param IdeDev TODO: add argument description
782
783 TODO: add return values
784
785 **/
786 EFI_STATUS
787 AtapiSoftReset (
788 IN IDE_BLK_IO_DEV *IdeDev
789 )
790 ;
791
792 /**
793 TODO: Add function description
794
795 @param IdeBlkIoDevice TODO: add argument description
796 @param MediaId TODO: add argument description
797 @param LBA TODO: add argument description
798 @param BufferSize TODO: add argument description
799 @param Buffer TODO: add argument description
800
801 TODO: add return values
802
803 **/
804 EFI_STATUS
805 AtapiBlkIoReadBlocks (
806 IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
807 IN UINT32 MediaId,
808 IN EFI_LBA LBA,
809 IN UINTN BufferSize,
810 OUT VOID *Buffer
811 )
812 ;
813
814 /**
815 TODO: Add function description
816
817 @param IdeBlkIoDevice TODO: add argument description
818 @param MediaId TODO: add argument description
819 @param LBA TODO: add argument description
820 @param BufferSize TODO: add argument description
821 @param Buffer TODO: add argument description
822
823 TODO: add return values
824
825 **/
826 EFI_STATUS
827 AtapiBlkIoWriteBlocks (
828 IN IDE_BLK_IO_DEV *IdeBlkIoDevice,
829 IN UINT32 MediaId,
830 IN EFI_LBA LBA,
831 IN UINTN BufferSize,
832 OUT VOID *Buffer
833 )
834 ;
835
836 /**
837 TODO: Add function description
838
839 @param IdeDev TODO: add argument description
840 @param SenseCount TODO: add argument description
841 @param Result TODO: add argument description
842
843 TODO: add return values
844
845 **/
846 EFI_STATUS
847 ParseSenseData (
848 IN IDE_BLK_IO_DEV *IdeDev,
849 IN UINTN SenseCount,
850 OUT SENSE_RESULT *Result
851 )
852 ;
853
854 /**
855 TODO: Add function description
856
857 @param IdeDev TODO: add argument description
858
859 TODO: add return values
860
861 **/
862 EFI_STATUS
863 AtapiReadPendingData (
864 IN IDE_BLK_IO_DEV *IdeDev
865 )
866 ;
867
868 /**
869 TODO: Add function description
870
871 @param IdeDev TODO: add argument description
872 @param WriteProtected TODO: add argument description
873
874 TODO: add return values
875
876 **/
877 EFI_STATUS
878 IsLS120orZipWriteProtected (
879 IN IDE_BLK_IO_DEV *IdeDev,
880 OUT BOOLEAN *WriteProtected
881 )
882 ;
883
884 /**
885 TODO: Add function description
886
887 @param IdeBlkIoDevice TODO: add argument description
888
889 TODO: add return values
890
891 **/
892 VOID
893 ReleaseIdeResources (
894 IN IDE_BLK_IO_DEV *IdeBlkIoDevice
895 )
896 ;
897
898 /**
899 TODO: Add function description
900
901 @param IdeDev TODO: add argument description
902 @param TransferMode TODO: add argument description
903
904 TODO: add return values
905
906 **/
907 EFI_STATUS
908 SetDeviceTransferMode (
909 IN IDE_BLK_IO_DEV *IdeDev,
910 IN ATA_TRANSFER_MODE *TransferMode
911 )
912 ;
913
914 /**
915 TODO: Add function description
916
917 @param IdeDev TODO: add argument description
918 @param NativeMaxAddress TODO: add argument description
919
920 TODO: add return values
921
922 **/
923 EFI_STATUS
924 ReadNativeMaxAddress (
925 IN IDE_BLK_IO_DEV *IdeDev,
926 OUT EFI_LBA *NativeMaxAddress
927 )
928 ;
929
930 /**
931 TODO: Add function description
932
933 @param IdeDev TODO: add argument description
934 @param MaxAddress TODO: add argument description
935 @param bVolatile TODO: add argument description
936
937 TODO: add return values
938
939 **/
940 EFI_STATUS
941 SetMaxAddress (
942 IN IDE_BLK_IO_DEV *IdeDev,
943 IN EFI_LBA MaxAddress,
944 IN BOOLEAN bVolatile
945 )
946 ;
947
948 /**
949 TODO: Add function description
950
951 @param IdeDev TODO: add argument description
952 @param AtaCommand TODO: add argument description
953 @param Device TODO: add argument description
954 @param Feature TODO: add argument description
955 @param SectorCount TODO: add argument description
956 @param LbaLow TODO: add argument description
957 @param LbaMiddle TODO: add argument description
958 @param LbaHigh TODO: add argument description
959
960 TODO: add return values
961
962 **/
963 EFI_STATUS
964 AtaNonDataCommandIn (
965 IN IDE_BLK_IO_DEV *IdeDev,
966 IN UINT8 AtaCommand,
967 IN UINT8 Device,
968 IN UINT8 Feature,
969 IN UINT8 SectorCount,
970 IN UINT8 LbaLow,
971 IN UINT8 LbaMiddle,
972 IN UINT8 LbaHigh
973 )
974 ;
975
976 /**
977 TODO: Add function description
978
979 @param IdeDev TODO: add argument description
980 @param AtaCommand TODO: add argument description
981 @param Device TODO: add argument description
982 @param Feature TODO: add argument description
983 @param SectorCount TODO: add argument description
984 @param LbaAddress TODO: add argument description
985
986 TODO: add return values
987
988 **/
989 EFI_STATUS
990 AtaNonDataCommandInExt (
991 IN IDE_BLK_IO_DEV *IdeDev,
992 IN UINT8 AtaCommand,
993 IN UINT8 Device,
994 IN UINT16 Feature,
995 IN UINT16 SectorCount,
996 IN EFI_LBA LbaAddress
997 )
998 ;
999
1000 /**
1001 TODO: Add function description
1002
1003 @param IdeDev TODO: add argument description
1004 @param DataBuffer TODO: add argument description
1005 @param StartLba TODO: add argument description
1006 @param NumberOfBlocks TODO: add argument description
1007
1008 TODO: add return values
1009
1010 **/
1011 EFI_STATUS
1012 AtaReadSectorsExt (
1013 IN IDE_BLK_IO_DEV *IdeDev,
1014 IN VOID *DataBuffer,
1015 IN EFI_LBA StartLba,
1016 IN UINTN NumberOfBlocks
1017 )
1018 ;
1019
1020 /**
1021 TODO: Add function description
1022
1023 @param IdeDev TODO: add argument description
1024 @param DataBuffer TODO: add argument description
1025 @param StartLba TODO: add argument description
1026 @param NumberOfBlocks TODO: add argument description
1027
1028 TODO: add return values
1029
1030 **/
1031 EFI_STATUS
1032 AtaWriteSectorsExt (
1033 IN IDE_BLK_IO_DEV *IdeDev,
1034 IN VOID *DataBuffer,
1035 IN EFI_LBA StartLba,
1036 IN UINTN NumberOfBlocks
1037 )
1038 ;
1039
1040 /**
1041 TODO: Add function description
1042
1043 @param IdeDev TODO: add argument description
1044 @param DataBuffer TODO: add argument description
1045 @param StartLba TODO: add argument description
1046 @param NumberOfBlocks TODO: add argument description
1047
1048 TODO: add return values
1049
1050 **/
1051 EFI_STATUS
1052 AtaUdmaReadExt (
1053 IN IDE_BLK_IO_DEV *IdeDev,
1054 IN VOID *DataBuffer,
1055 IN EFI_LBA StartLba,
1056 IN UINTN NumberOfBlocks
1057 )
1058 ;
1059
1060 /**
1061 TODO: Add function description
1062
1063 @param IdeDev TODO: add argument description
1064 @param DataBuffer TODO: add argument description
1065 @param StartLba TODO: add argument description
1066 @param NumberOfBlocks TODO: add argument description
1067
1068 TODO: add return values
1069
1070 **/
1071 EFI_STATUS
1072 AtaUdmaRead (
1073 IN IDE_BLK_IO_DEV *IdeDev,
1074 IN VOID *DataBuffer,
1075 IN EFI_LBA StartLba,
1076 IN UINTN NumberOfBlocks
1077 )
1078 ;
1079
1080 /**
1081 TODO: Add function description
1082
1083 @param IdeDev TODO: add argument description
1084 @param DataBuffer TODO: add argument description
1085 @param StartLba TODO: add argument description
1086 @param NumberOfBlocks TODO: add argument description
1087
1088 TODO: add return values
1089
1090 **/
1091 EFI_STATUS
1092 AtaUdmaWriteExt (
1093 IN IDE_BLK_IO_DEV *IdeDev,
1094 IN VOID *DataBuffer,
1095 IN EFI_LBA StartLba,
1096 IN UINTN NumberOfBlocks
1097 )
1098 ;
1099
1100 /**
1101 Perform an ATA Udma operation (Read, ReadExt, Write, WriteExt).
1102
1103 @param[in] *IdeDev
1104 pointer pointing to IDE_BLK_IO_DEV data structure, used
1105 to record all the information of the IDE device.
1106
1107 @param[in] *DataBuffer
1108 A pointer to the source buffer for the data.
1109
1110 @param[in] StartLba
1111 The starting logical block address to write to
1112 on the device media.
1113
1114 @param[in] NumberOfBlocks
1115 The number of transfer data blocks.
1116
1117 @param[in] UdmaOp
1118 The perform operations could be AtaUdmaReadOp, AtaUdmaReadExOp,
1119 AtaUdmaWriteOp, AtaUdmaWriteExOp
1120
1121 @return The device status of UDMA operation. If the operation is
1122 successful, return EFI_SUCCESS.
1123
1124 **/
1125 EFI_STATUS
1126 DoAtaUdma (
1127 IN IDE_BLK_IO_DEV *IdeDev,
1128 IN VOID *DataBuffer,
1129 IN EFI_LBA StartLba,
1130 IN UINTN NumberOfBlocks,
1131 IN ATA_UDMA_OPERATION UdmaOp
1132 )
1133 ;
1134
1135
1136 /**
1137 TODO: Add function description
1138
1139 @param IdeDev TODO: add argument description
1140 @param DataBuffer TODO: add argument description
1141 @param StartLba TODO: add argument description
1142 @param NumberOfBlocks TODO: add argument description
1143
1144 TODO: add return values
1145
1146 **/
1147 EFI_STATUS
1148 AtaUdmaWrite (
1149 IN IDE_BLK_IO_DEV *IdeDev,
1150 IN VOID *DataBuffer,
1151 IN EFI_LBA StartLba,
1152 IN UINTN NumberOfBlocks
1153 )
1154 ;
1155
1156 /**
1157 TODO: Add function description
1158
1159 @param IdeDev TODO: add argument description
1160 @param AtaCommand TODO: add argument description
1161 @param Device TODO: add argument description
1162 @param Feature TODO: add argument description
1163 @param SectorCount TODO: add argument description
1164 @param LbaAddress TODO: add argument description
1165
1166 TODO: add return values
1167
1168 **/
1169 EFI_STATUS
1170 AtaCommandIssueExt (
1171 IN IDE_BLK_IO_DEV *IdeDev,
1172 IN UINT8 AtaCommand,
1173 IN UINT8 Device,
1174 IN UINT16 Feature,
1175 IN UINT16 SectorCount,
1176 IN EFI_LBA LbaAddress
1177 )
1178 ;
1179
1180 /**
1181 TODO: Add function description
1182
1183 @param IdeDev TODO: add argument description
1184 @param AtaCommand TODO: add argument description
1185 @param Device TODO: add argument description
1186 @param Feature TODO: add argument description
1187 @param SectorCount TODO: add argument description
1188 @param LbaAddress TODO: add argument description
1189
1190 TODO: add return values
1191
1192 **/
1193 EFI_STATUS
1194 AtaCommandIssue (
1195 IN IDE_BLK_IO_DEV *IdeDev,
1196 IN UINT8 AtaCommand,
1197 IN UINT8 Device,
1198 IN UINT16 Feature,
1199 IN UINT16 SectorCount,
1200 IN EFI_LBA LbaAddress
1201 )
1202 ;
1203
1204 /**
1205 TODO: Add function description
1206
1207 @param IdeDev TODO: add argument description
1208
1209 TODO: add return values
1210
1211 **/
1212 EFI_STATUS
1213 AtaAtapi6Identify (
1214 IN IDE_BLK_IO_DEV *IdeDev
1215 )
1216 ;
1217
1218
1219 /**
1220 TODO: Add function description
1221
1222 @param IdeDev TODO: add argument description
1223
1224 TODO: add return values
1225
1226 **/
1227 VOID
1228 AtaSMARTSupport (
1229 IN IDE_BLK_IO_DEV *IdeDev
1230 )
1231 ;
1232
1233 /**
1234 TODO: Add function description
1235
1236 @param IdeDev TODO: add argument description
1237 @param Buffer TODO: add argument description
1238 @param ByteCount TODO: add argument description
1239 @param AtaCommand TODO: add argument description
1240 @param StartLba TODO: add argument description
1241 @param SectorCount TODO: add argument description
1242
1243 TODO: add return values
1244
1245 **/
1246 EFI_STATUS
1247 AtaPioDataInExt (
1248 IN IDE_BLK_IO_DEV *IdeDev,
1249 IN OUT VOID *Buffer,
1250 IN UINT32 ByteCount,
1251 IN UINT8 AtaCommand,
1252 IN EFI_LBA StartLba,
1253 IN UINT16 SectorCount
1254 )
1255 ;
1256
1257 /**
1258 TODO: Add function description
1259
1260 @param IdeDev TODO: add argument description
1261 @param Buffer TODO: add argument description
1262 @param ByteCount TODO: add argument description
1263 @param AtaCommand TODO: add argument description
1264 @param StartLba TODO: add argument description
1265 @param SectorCount TODO: add argument description
1266
1267 TODO: add return values
1268
1269 **/
1270 EFI_STATUS
1271 AtaPioDataOutExt (
1272 IN IDE_BLK_IO_DEV *IdeDev,
1273 IN VOID *Buffer,
1274 IN UINT32 ByteCount,
1275 IN UINT8 AtaCommand,
1276 IN EFI_LBA StartLba,
1277 IN UINT16 SectorCount
1278 )
1279 ;
1280
1281 /**
1282 TODO: Add function description
1283
1284 @param IdeDev TODO: add argument description
1285 @param DriveParameters TODO: add argument description
1286
1287 TODO: add return values
1288
1289 **/
1290 EFI_STATUS
1291 SetDriveParameters (
1292 IN IDE_BLK_IO_DEV *IdeDev,
1293 IN ATA_DRIVE_PARMS *DriveParameters
1294 )
1295 ;
1296
1297 /**
1298 TODO: Add function description
1299
1300 @param IdeDev TODO: add argument description
1301
1302 TODO: add return values
1303
1304 **/
1305 EFI_STATUS
1306 EnableInterrupt (
1307 IN IDE_BLK_IO_DEV *IdeDev
1308 )
1309 ;
1310
1311 /**
1312 Clear pending IDE interrupt before OS loader/kernel take control of the IDE device.
1313
1314 @param[in] Event Pointer to this event
1315 @param[in] Context Event hanlder private data
1316
1317 @retval EFI_SUCCESS - Interrupt cleared
1318
1319 **/
1320 VOID
1321 EFIAPI
1322 ClearInterrupt (
1323 IN EFI_EVENT Event,
1324 IN VOID *Context
1325 )
1326 ;
1327
1328 #endif