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