]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Bus/Pci/IdeBusDxe/Ide.h
Function AtaEnableLongPhysicalSector () added for Long physical sector process.
[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
509 @param LBA TODO: add argument description\r
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
520 IN EFI_LBA LBA,\r
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
530 @param LBA TODO: add argument description\r
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
541 IN EFI_LBA LBA,\r
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
754 @param LBA TODO: add argument description\r
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
765 IN EFI_LBA LBA,\r
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
775 @param LBA TODO: add argument description\r
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
786 IN EFI_LBA LBA,\r
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
879/**\r
880 TODO: Add function description\r
881\r
882 @param IdeDev TODO: add argument description\r
883 @param MaxAddress TODO: add argument description\r
884 @param bVolatile TODO: add argument description\r
885\r
97404058 886 TODO: add return values.\r
ead42efc 887\r
888**/\r
889EFI_STATUS\r
890SetMaxAddress (\r
891 IN IDE_BLK_IO_DEV *IdeDev,\r
892 IN EFI_LBA MaxAddress,\r
893 IN BOOLEAN bVolatile\r
ed66e1bc 894 );\r
ead42efc 895\r
896/**\r
897 TODO: Add function description\r
898\r
899 @param IdeDev TODO: add argument description\r
900 @param AtaCommand TODO: add argument description\r
901 @param Device TODO: add argument description\r
902 @param Feature TODO: add argument description\r
903 @param SectorCount TODO: add argument description\r
904 @param LbaLow TODO: add argument description\r
905 @param LbaMiddle TODO: add argument description\r
906 @param LbaHigh TODO: add argument description\r
907\r
97404058 908 TODO: add return values.\r
ead42efc 909\r
910**/\r
911EFI_STATUS\r
912AtaNonDataCommandIn (\r
913 IN IDE_BLK_IO_DEV *IdeDev,\r
914 IN UINT8 AtaCommand,\r
915 IN UINT8 Device,\r
916 IN UINT8 Feature,\r
917 IN UINT8 SectorCount,\r
918 IN UINT8 LbaLow,\r
919 IN UINT8 LbaMiddle,\r
920 IN UINT8 LbaHigh\r
ed66e1bc 921 );\r
ead42efc 922\r
923/**\r
924 TODO: Add function description\r
925\r
926 @param IdeDev TODO: add argument description\r
927 @param AtaCommand TODO: add argument description\r
928 @param Device TODO: add argument description\r
929 @param Feature TODO: add argument description\r
930 @param SectorCount TODO: add argument description\r
931 @param LbaAddress TODO: add argument description\r
932\r
97404058 933 TODO: add return values.\r
ead42efc 934\r
935**/\r
936EFI_STATUS\r
937AtaNonDataCommandInExt (\r
938 IN IDE_BLK_IO_DEV *IdeDev,\r
939 IN UINT8 AtaCommand,\r
940 IN UINT8 Device,\r
941 IN UINT16 Feature,\r
942 IN UINT16 SectorCount,\r
943 IN EFI_LBA LbaAddress\r
ed66e1bc 944 );\r
ead42efc 945\r
946/**\r
947 TODO: Add function description\r
948\r
949 @param IdeDev TODO: add argument description\r
950 @param DataBuffer TODO: add argument description\r
951 @param StartLba TODO: add argument description\r
952 @param NumberOfBlocks TODO: add argument description\r
953\r
97404058 954 TODO: add return values.\r
ead42efc 955\r
956**/\r
957EFI_STATUS\r
958AtaReadSectorsExt (\r
959 IN IDE_BLK_IO_DEV *IdeDev,\r
960 IN VOID *DataBuffer,\r
961 IN EFI_LBA StartLba,\r
962 IN UINTN NumberOfBlocks\r
ed66e1bc 963 );\r
ead42efc 964\r
965/**\r
966 TODO: Add function description\r
967\r
968 @param IdeDev TODO: add argument description\r
969 @param DataBuffer TODO: add argument description\r
970 @param StartLba TODO: add argument description\r
971 @param NumberOfBlocks TODO: add argument description\r
972\r
97404058 973 TODO: add return values.\r
ead42efc 974\r
975**/\r
976EFI_STATUS\r
977AtaWriteSectorsExt (\r
978 IN IDE_BLK_IO_DEV *IdeDev,\r
979 IN VOID *DataBuffer,\r
980 IN EFI_LBA StartLba,\r
981 IN UINTN NumberOfBlocks\r
ed66e1bc 982 );\r
ead42efc 983\r
984/**\r
985 TODO: Add function description\r
986\r
987 @param IdeDev TODO: add argument description\r
988 @param DataBuffer TODO: add argument description\r
989 @param StartLba TODO: add argument description\r
990 @param NumberOfBlocks TODO: add argument description\r
991\r
97404058 992 TODO: add return values.\r
ead42efc 993\r
994**/\r
995EFI_STATUS\r
996AtaUdmaReadExt (\r
997 IN IDE_BLK_IO_DEV *IdeDev,\r
998 IN VOID *DataBuffer,\r
999 IN EFI_LBA StartLba,\r
1000 IN UINTN NumberOfBlocks\r
ed66e1bc 1001 );\r
ead42efc 1002\r
1003/**\r
1004 TODO: Add function description\r
1005\r
1006 @param IdeDev TODO: add argument description\r
1007 @param DataBuffer TODO: add argument description\r
1008 @param StartLba TODO: add argument description\r
1009 @param NumberOfBlocks TODO: add argument description\r
1010\r
97404058 1011 TODO: add return values.\r
ead42efc 1012\r
1013**/\r
1014EFI_STATUS\r
1015AtaUdmaRead (\r
1016 IN IDE_BLK_IO_DEV *IdeDev,\r
1017 IN VOID *DataBuffer,\r
1018 IN EFI_LBA StartLba,\r
1019 IN UINTN NumberOfBlocks\r
ed66e1bc 1020 );\r
ead42efc 1021\r
1022/**\r
1023 TODO: Add function description\r
1024\r
1025 @param IdeDev TODO: add argument description\r
1026 @param DataBuffer TODO: add argument description\r
1027 @param StartLba TODO: add argument description\r
1028 @param NumberOfBlocks TODO: add argument description\r
1029\r
97404058 1030 TODO: add return values.\r
ead42efc 1031\r
1032**/\r
1033EFI_STATUS\r
1034AtaUdmaWriteExt (\r
1035 IN IDE_BLK_IO_DEV *IdeDev,\r
1036 IN VOID *DataBuffer,\r
1037 IN EFI_LBA StartLba,\r
1038 IN UINTN NumberOfBlocks\r
ed66e1bc 1039 );\r
ead42efc 1040\r
1041/**\r
1042 Perform an ATA Udma operation (Read, ReadExt, Write, WriteExt).\r
1043 \r
1044 @param[in] *IdeDev\r
1045 pointer pointing to IDE_BLK_IO_DEV data structure, used\r
1046 to record all the information of the IDE device.\r
1047\r
1048 @param[in] *DataBuffer\r
1049 A pointer to the source buffer for the data.\r
1050\r
1051 @param[in] StartLba\r
1052 The starting logical block address to write to\r
1053 on the device media.\r
1054\r
1055 @param[in] NumberOfBlocks\r
1056 The number of transfer data blocks.\r
1057 \r
1058 @param[in] UdmaOp\r
1059 The perform operations could be AtaUdmaReadOp, AtaUdmaReadExOp,\r
1060 AtaUdmaWriteOp, AtaUdmaWriteExOp\r
1061\r
1062 @return The device status of UDMA operation. If the operation is\r
1063 successful, return EFI_SUCCESS.\r
1064\r
1065**/\r
1066EFI_STATUS\r
1067DoAtaUdma (\r
1068 IN IDE_BLK_IO_DEV *IdeDev,\r
1069 IN VOID *DataBuffer,\r
1070 IN EFI_LBA StartLba,\r
1071 IN UINTN NumberOfBlocks,\r
1072 IN ATA_UDMA_OPERATION UdmaOp\r
ed66e1bc 1073 );\r
ead42efc 1074\r
1075\r
1076/**\r
1077 TODO: Add function description\r
1078\r
1079 @param IdeDev TODO: add argument description\r
1080 @param DataBuffer TODO: add argument description\r
1081 @param StartLba TODO: add argument description\r
1082 @param NumberOfBlocks TODO: add argument description\r
1083\r
97404058 1084 TODO: add return values.\r
ead42efc 1085\r
1086**/\r
1087EFI_STATUS\r
1088AtaUdmaWrite (\r
1089 IN IDE_BLK_IO_DEV *IdeDev,\r
1090 IN VOID *DataBuffer,\r
1091 IN EFI_LBA StartLba,\r
1092 IN UINTN NumberOfBlocks\r
ed66e1bc 1093 );\r
ead42efc 1094\r
1095/**\r
1096 TODO: Add function description\r
1097\r
1098 @param IdeDev TODO: add argument description\r
1099 @param AtaCommand TODO: add argument description\r
1100 @param Device TODO: add argument description\r
1101 @param Feature TODO: add argument description\r
1102 @param SectorCount TODO: add argument description\r
1103 @param LbaAddress TODO: add argument description\r
1104\r
97404058 1105 TODO: add return values.\r
ead42efc 1106\r
1107**/\r
1108EFI_STATUS\r
1109AtaCommandIssueExt (\r
1110 IN IDE_BLK_IO_DEV *IdeDev,\r
1111 IN UINT8 AtaCommand,\r
1112 IN UINT8 Device,\r
1113 IN UINT16 Feature,\r
1114 IN UINT16 SectorCount,\r
1115 IN EFI_LBA LbaAddress\r
ed66e1bc 1116 );\r
ead42efc 1117\r
1118/**\r
1119 TODO: Add function description\r
1120\r
1121 @param IdeDev TODO: add argument description\r
1122 @param AtaCommand TODO: add argument description\r
1123 @param Device TODO: add argument description\r
1124 @param Feature TODO: add argument description\r
1125 @param SectorCount TODO: add argument description\r
1126 @param LbaAddress TODO: add argument description\r
1127\r
97404058 1128 TODO: add return values.\r
ead42efc 1129\r
1130**/\r
1131EFI_STATUS\r
1132AtaCommandIssue (\r
1133 IN IDE_BLK_IO_DEV *IdeDev,\r
1134 IN UINT8 AtaCommand,\r
1135 IN UINT8 Device,\r
1136 IN UINT16 Feature,\r
1137 IN UINT16 SectorCount,\r
1138 IN EFI_LBA LbaAddress\r
ed66e1bc 1139 );\r
ead42efc 1140\r
1141/**\r
1142 TODO: Add function description\r
1143\r
1144 @param IdeDev TODO: add argument description\r
1145\r
97404058 1146 TODO: add return values.\r
ead42efc 1147\r
1148**/\r
1149EFI_STATUS\r
1150AtaAtapi6Identify (\r
1151 IN IDE_BLK_IO_DEV *IdeDev\r
ed66e1bc 1152 );\r
ead42efc 1153\r
1154\r
1155/**\r
1156 TODO: Add function description\r
1157\r
1158 @param IdeDev TODO: add argument description\r
1159\r
97404058 1160 TODO: add return values.\r
ead42efc 1161\r
1162**/\r
1163VOID\r
1164AtaSMARTSupport (\r
1165 IN IDE_BLK_IO_DEV *IdeDev\r
ed66e1bc 1166 );\r
ead42efc 1167\r
75eccf9d 1168\r
1169/**\r
1170 Enable Long Physical Sector Feature for ATA device.\r
1171\r
1172 @param IdeDev The IDE device data\r
1173\r
1174 @retval EFI_SUCCESS The ATA device supports Long Physical Sector feature\r
1175 and corresponding fields in BlockIo structure is updated.\r
1176 @retval EFI_UNSUPPORTED The device is not ATA device or Long Physical Sector\r
1177 feature is not supported.\r
1178**/\r
1179EFI_STATUS\r
1180AtaEnableLongPhysicalSector (\r
1181 IN IDE_BLK_IO_DEV *IdeDev\r
1182 );\r
1183\r
ead42efc 1184/**\r
1185 TODO: Add function description\r
1186\r
1187 @param IdeDev TODO: add argument description\r
1188 @param Buffer TODO: add argument description\r
1189 @param ByteCount TODO: add argument description\r
1190 @param AtaCommand TODO: add argument description\r
1191 @param StartLba TODO: add argument description\r
1192 @param SectorCount TODO: add argument description\r
1193\r
97404058 1194 TODO: add return values.\r
ead42efc 1195\r
1196**/\r
1197EFI_STATUS\r
1198AtaPioDataInExt (\r
1199 IN IDE_BLK_IO_DEV *IdeDev,\r
1200 IN OUT VOID *Buffer,\r
1201 IN UINT32 ByteCount,\r
1202 IN UINT8 AtaCommand,\r
1203 IN EFI_LBA StartLba,\r
1204 IN UINT16 SectorCount\r
ed66e1bc 1205 );\r
ead42efc 1206\r
1207/**\r
1208 TODO: Add function description\r
1209\r
1210 @param IdeDev TODO: add argument description\r
1211 @param Buffer TODO: add argument description\r
1212 @param ByteCount TODO: add argument description\r
1213 @param AtaCommand TODO: add argument description\r
1214 @param StartLba TODO: add argument description\r
1215 @param SectorCount TODO: add argument description\r
1216\r
97404058 1217 TODO: add return values.\r
ead42efc 1218\r
1219**/\r
1220EFI_STATUS\r
1221AtaPioDataOutExt (\r
1222 IN IDE_BLK_IO_DEV *IdeDev,\r
1223 IN VOID *Buffer,\r
1224 IN UINT32 ByteCount,\r
1225 IN UINT8 AtaCommand,\r
1226 IN EFI_LBA StartLba,\r
1227 IN UINT16 SectorCount\r
ed66e1bc 1228 );\r
ead42efc 1229\r
1230/**\r
1231 TODO: Add function description\r
1232\r
1233 @param IdeDev TODO: add argument description\r
1234 @param DriveParameters TODO: add argument description\r
1235\r
97404058 1236 TODO: add return values.\r
ead42efc 1237\r
1238**/\r
1239EFI_STATUS\r
1240SetDriveParameters (\r
1241 IN IDE_BLK_IO_DEV *IdeDev,\r
1242 IN ATA_DRIVE_PARMS *DriveParameters\r
ed66e1bc 1243 );\r
ead42efc 1244\r
1245/**\r
1246 TODO: Add function description\r
1247\r
1248 @param IdeDev TODO: add argument description\r
1249\r
97404058 1250 TODO: add return values.\r
ead42efc 1251\r
1252**/\r
1253EFI_STATUS\r
1254EnableInterrupt (\r
1255 IN IDE_BLK_IO_DEV *IdeDev\r
ed66e1bc 1256 );\r
ead42efc 1257\r
1258/**\r
1259 Clear pending IDE interrupt before OS loader/kernel take control of the IDE device.\r
1260\r
eeefcb9d 1261 @param[in] Event Pointer to this event.\r
1262 @param[in] Context Event hanlder private data.\r
ead42efc 1263\r
1264**/\r
1265VOID\r
1266EFIAPI\r
1267ClearInterrupt (\r
1268 IN EFI_EVENT Event,\r
1269 IN VOID *Context\r
ed66e1bc 1270 );\r
ead42efc 1271\r
1272#endif\r