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