Updated MSA by putting Specification element at the end of the header section
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / AtapiPassThru / Dxe / AtapiPassThru.h
CommitLineData
878ddf1f 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 AtapiPassThru.h\r
15 \r
16Abstract: \r
17 \r
18\r
19Revision History\r
20--*/\r
21\r
22#ifndef _APT_H\r
23#define _APT_H\r
24\r
25\r
f0ec738d 26#include <IndustryStandard/pci22.h>\r
878ddf1f 27\r
28//\r
29// bit definition\r
30//\r
31#define bit(a) 1 << (a)\r
32\r
33#define MAX_TARGET_ID 4\r
34//\r
35// IDE Registers\r
36//\r
37typedef union {\r
38 UINT16 Command; /* when write */\r
39 UINT16 Status; /* when read */\r
40} IDE_CMD_OR_STATUS;\r
41\r
42typedef union {\r
43 UINT16 Error; /* when read */\r
44 UINT16 Feature; /* when write */\r
45} IDE_ERROR_OR_FEATURE;\r
46\r
47typedef union {\r
48 UINT16 AltStatus; /* when read */\r
49 UINT16 DeviceControl; /* when write */\r
50} IDE_AltStatus_OR_DeviceControl;\r
51\r
52//\r
53// IDE registers set\r
54//\r
55typedef struct {\r
56 UINT16 Data;\r
57 IDE_ERROR_OR_FEATURE Reg1;\r
58 UINT16 SectorCount;\r
59 UINT16 SectorNumber;\r
60 UINT16 CylinderLsb;\r
61 UINT16 CylinderMsb;\r
62 UINT16 Head;\r
63 IDE_CMD_OR_STATUS Reg;\r
64\r
65 IDE_AltStatus_OR_DeviceControl Alt;\r
66 UINT16 DriveAddress;\r
67\r
68 UINT16 MasterSlave;\r
69} IDE_BASE_REGISTERS;\r
70\r
71#define ATAPI_SCSI_PASS_THRU_DEV_SIGNATURE EFI_SIGNATURE_32 ('a', 's', 'p', 't')\r
72\r
73typedef struct {\r
74 UINTN Signature;\r
75\r
76 EFI_HANDLE Handle;\r
77 EFI_SCSI_PASS_THRU_PROTOCOL ScsiPassThru;\r
78 EFI_SCSI_PASS_THRU_MODE ScsiPassThruMode;\r
79 EFI_PCI_IO_PROTOCOL *PciIo;\r
80\r
81 //\r
82 // Local Data goes here\r
83 //\r
84 IDE_BASE_REGISTERS *IoPort;\r
85\r
86 CHAR16 ControllerName[100];\r
87 CHAR16 ChannelName[100];\r
88\r
89 UINT32 LatestTargetId;\r
90 UINT64 LatestLun;\r
91\r
92} ATAPI_SCSI_PASS_THRU_DEV;\r
93\r
94#define ATAPI_SCSI_PASS_THRU_DEV_FROM_THIS(a) \\r
95 CR (a, \\r
96 ATAPI_SCSI_PASS_THRU_DEV, \\r
97 ScsiPassThru, \\r
98 ATAPI_SCSI_PASS_THRU_DEV_SIGNATURE \\r
99 )\r
100\r
101//\r
102// Global Variables\r
103//\r
104extern EFI_DRIVER_BINDING_PROTOCOL gAtapiScsiPassThruDriverBinding;\r
105extern EFI_COMPONENT_NAME_PROTOCOL gAtapiScsiPassThruComponentName;\r
106\r
107//\r
108// ATAPI Command op code\r
109//\r
110#define OP_INQUIRY 0x12\r
111#define OP_LOAD_UNLOAD_CD 0xa6\r
112#define OP_MECHANISM_STATUS 0xbd\r
113#define OP_MODE_SELECT_10 0x55\r
114#define OP_MODE_SENSE_10 0x5a\r
115#define OP_PAUSE_RESUME 0x4b\r
116#define OP_PLAY_AUDIO_10 0x45\r
117#define OP_PLAY_AUDIO_MSF 0x47\r
118#define OP_PLAY_CD 0xbc\r
119#define OP_PLAY_CD_MSF 0xb4\r
120#define OP_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e\r
121#define OP_READ_10 0x28\r
122#define OP_READ_12 0xa8\r
123#define OP_READ_CAPACITY 0x25\r
124#define OP_READ_CD 0xbe\r
125#define OP_READ_CD_MSF 0xb9\r
126#define OP_READ_HEADER 0x44\r
127#define OP_READ_SUB_CHANNEL 0x42\r
128#define OP_READ_TOC 0x43\r
129#define OP_REQUEST_SENSE 0x03\r
130#define OP_SCAN 0xba\r
131#define OP_SEEK_10 0x2b\r
132#define OP_SET_CD_SPEED 0xbb\r
133#define OP_STOPPLAY_SCAN 0x4e\r
134#define OP_START_STOP_UNIT 0x1b\r
135#define OP_TEST_UNIT_READY 0x00\r
136\r
137#define OP_FORMAT_UNIT 0x04\r
138#define OP_READ_FORMAT_CAPACITIES 0x23\r
139#define OP_VERIFY 0x2f\r
140#define OP_WRITE_10 0x2a\r
141#define OP_WRITE_12 0xaa\r
142#define OP_WRITE_AND_VERIFY 0x2e\r
143\r
144//\r
145// ATA Command\r
146//\r
147#define ATAPI_SOFT_RESET_CMD 0x08\r
148\r
149typedef enum {\r
150 DataIn = 0,\r
151 DataOut = 1,\r
152 NoData = 2,\r
153 End = 0xff\r
154} DATA_DIRECTION;\r
155\r
156typedef struct {\r
157 UINT8 OpCode;\r
158 DATA_DIRECTION Direction;\r
159} SCSI_COMMAND_SET;\r
160\r
161#define MAX_CHANNEL 2\r
162\r
163#define ValidCdbLength(Len) ((Len) == 6 || (Len) == 10 || (Len) == 12) ? 1 : 0\r
164\r
165//\r
166// IDE registers bit definitions\r
167//\r
168// ATA Err Reg bitmap\r
169//\r
170#define BBK_ERR bit (7) /* Bad block detected */\r
171#define UNC_ERR bit (6) /* Uncorrectable Data */\r
172#define MC_ERR bit (5) /* Media Change */\r
173#define IDNF_ERR bit (4) /* ID Not Found */\r
174#define MCR_ERR bit (3) /* Media Change Requested */\r
175#define ABRT_ERR bit (2) /* Aborted Command */\r
176#define TK0NF_ERR bit (1) /* Track 0 Not Found */\r
177#define AMNF_ERR bit (0) /* Address Mark Not Found */\r
178\r
179//\r
180// ATAPI Err Reg bitmap\r
181//\r
182#define SENSE_KEY_ERR (bit (7) | bit (6) | bit (5) | bit (4))\r
183#define EOM_ERR bit (1) /* End of Media Detected */\r
184#define ILI_ERR bit (0) /* Illegal Length Indication */\r
185\r
186//\r
187// Device/Head Reg\r
188//\r
189#define LBA_MODE bit (6)\r
190#define DEV bit (4)\r
191#define HS3 bit (3)\r
192#define HS2 bit (2)\r
193#define HS1 bit (1)\r
194#define HS0 bit (0)\r
195#define CHS_MODE (0)\r
196#define DRV0 (0)\r
197#define DRV1 (1)\r
198#define MST_DRV DRV0\r
199#define SLV_DRV DRV1\r
200\r
201//\r
202// Status Reg\r
203//\r
204#define BSY bit (7) /* Controller Busy */\r
205#define DRDY bit (6) /* Drive Ready */\r
206#define DWF bit (5) /* Drive Write Fault */\r
207#define DSC bit (4) /* Disk Seek Complete */\r
208#define DRQ bit (3) /* Data Request */\r
209#define CORR bit (2) /* Corrected Data */\r
210#define IDX bit (1) /* Index */\r
211#define ERR bit (0) /* Error */\r
212#define CHECK bit (0) /* Check bit for ATAPI Status Reg */\r
213\r
214//\r
215// Device Control Reg\r
216//\r
217#define SRST bit (2) /* Software Reset */\r
218#define IEN_L bit (1) /* Interrupt Enable #*/\r
219\r
220//\r
221// ATAPI Feature Register\r
222//\r
223#define OVERLAP bit (1)\r
224#define DMA bit (0)\r
225\r
226//\r
227// ATAPI Interrupt Reason Reson Reg (ATA Sector Count Register)\r
228//\r
229#define RELEASE bit (2)\r
230#define IO bit (1)\r
231#define CoD bit (0)\r
232\r
233#define PACKET_CMD 0xA0\r
234\r
235#define DEFAULT_CMD (0xa0)\r
236//\r
237// default content of device control register, disable INT\r
238//\r
239#define DEFAULT_CTL (0x0a)\r
240#define MAX_ATAPI_BYTE_COUNT (0xfffe)\r
241\r
242//\r
243// function prototype\r
244//\r
245EFI_STATUS\r
246EFIAPI\r
247AtapiScsiPassThruDriverEntryPoint (\r
248 IN EFI_HANDLE ImageHandle,\r
249 IN EFI_SYSTEM_TABLE *SystemTable\r
250 )\r
251 /*++\r
252\r
253Routine Description:\r
254\r
255 TODO: Add function description\r
256\r
257Arguments:\r
258\r
259 ImageHandle - TODO: add argument description\r
260 SystemTable - TODO: add argument description\r
261\r
262Returns:\r
263\r
264 TODO: add return values\r
265\r
266--*/\r
267;\r
268\r
269EFI_STATUS\r
270RegisterAtapiScsiPassThru (\r
271 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
272 IN EFI_HANDLE Controller,\r
273 IN EFI_PCI_IO_PROTOCOL *PciIo\r
274 )\r
275/*++\r
276\r
277Routine Description:\r
278\r
279 TODO: Add function description\r
280\r
281Arguments:\r
282\r
283 This - TODO: add argument description\r
284 Controller - TODO: add argument description\r
285 PciIo - TODO: add argument description\r
286\r
287Returns:\r
288\r
289 TODO: add return values\r
290\r
291--*/\r
292;\r
293\r
294EFI_STATUS\r
295EFIAPI\r
296AtapiScsiPassThruFunction (\r
297 IN EFI_SCSI_PASS_THRU_PROTOCOL *This,\r
298 IN UINT32 Target,\r
299 IN UINT64 Lun,\r
300 IN OUT EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet,\r
301 IN EFI_EVENT Event OPTIONAL\r
302 )\r
303/*++\r
304\r
305Routine Description:\r
306\r
307 TODO: Add function description\r
308\r
309Arguments:\r
310\r
311 This - TODO: add argument description\r
312 Target - TODO: add argument description\r
313 Lun - TODO: add argument description\r
314 Packet - TODO: add argument description\r
315 Event - TODO: add argument description\r
316\r
317Returns:\r
318\r
319 TODO: add return values\r
320\r
321--*/\r
322;\r
323\r
324EFI_STATUS\r
325EFIAPI\r
326AtapiScsiPassThruGetNextDevice (\r
327 IN EFI_SCSI_PASS_THRU_PROTOCOL *This,\r
328 IN OUT UINT32 *Target,\r
329 IN OUT UINT64 *Lun\r
330 )\r
331/*++\r
332\r
333Routine Description:\r
334\r
335 TODO: Add function description\r
336\r
337Arguments:\r
338\r
339 This - TODO: add argument description\r
340 Target - TODO: add argument description\r
341 Lun - TODO: add argument description\r
342\r
343Returns:\r
344\r
345 TODO: add return values\r
346\r
347--*/\r
348;\r
349\r
350EFI_STATUS\r
351EFIAPI\r
352AtapiScsiPassThruBuildDevicePath (\r
353 IN EFI_SCSI_PASS_THRU_PROTOCOL *This,\r
354 IN UINT32 Target,\r
355 IN UINT64 Lun,\r
356 IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath\r
357 )\r
358/*++\r
359\r
360Routine Description:\r
361\r
362 TODO: Add function description\r
363\r
364Arguments:\r
365\r
366 This - TODO: add argument description\r
367 Target - TODO: add argument description\r
368 Lun - TODO: add argument description\r
369 DevicePath - TODO: add argument description\r
370\r
371Returns:\r
372\r
373 TODO: add return values\r
374\r
375--*/\r
376;\r
377\r
378EFI_STATUS\r
379EFIAPI\r
380AtapiScsiPassThruGetTargetLun (\r
381 IN EFI_SCSI_PASS_THRU_PROTOCOL *This,\r
382 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
383 OUT UINT32 *Target,\r
384 OUT UINT64 *Lun\r
385 )\r
386/*++\r
387\r
388Routine Description:\r
389\r
390 TODO: Add function description\r
391\r
392Arguments:\r
393\r
394 This - TODO: add argument description\r
395 DevicePath - TODO: add argument description\r
396 Target - TODO: add argument description\r
397 Lun - TODO: add argument description\r
398\r
399Returns:\r
400\r
401 TODO: add return values\r
402\r
403--*/\r
404;\r
405\r
406EFI_STATUS\r
407EFIAPI\r
408AtapiScsiPassThruResetChannel (\r
409 IN EFI_SCSI_PASS_THRU_PROTOCOL *This\r
410 )\r
411/*++\r
412\r
413Routine Description:\r
414\r
415 TODO: Add function description\r
416\r
417Arguments:\r
418\r
419 This - TODO: add argument description\r
420\r
421Returns:\r
422\r
423 TODO: add return values\r
424\r
425--*/\r
426;\r
427\r
428EFI_STATUS\r
429EFIAPI\r
430AtapiScsiPassThruResetTarget (\r
431 IN EFI_SCSI_PASS_THRU_PROTOCOL *This,\r
432 IN UINT32 Target,\r
433 IN UINT64 Lun\r
434 )\r
435/*++\r
436\r
437Routine Description:\r
438\r
439 TODO: Add function description\r
440\r
441Arguments:\r
442\r
443 This - TODO: add argument description\r
444 Target - TODO: add argument description\r
445 Lun - TODO: add argument description\r
446\r
447Returns:\r
448\r
449 TODO: add return values\r
450\r
451--*/\r
452;\r
453\r
454EFI_STATUS\r
455CheckSCSIRequestPacket (\r
456 EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
457 )\r
458/*++\r
459\r
460Routine Description:\r
461\r
462 TODO: Add function description\r
463\r
464Arguments:\r
465\r
466 Packet - TODO: add argument description\r
467\r
468Returns:\r
469\r
470 TODO: add return values\r
471\r
472--*/\r
473;\r
474\r
475EFI_STATUS\r
476SubmitBlockingIoCommand (\r
477 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
478 UINT32 Target,\r
479 EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
480 )\r
481/*++\r
482\r
483Routine Description:\r
484\r
485 TODO: Add function description\r
486\r
487Arguments:\r
488\r
489 AtapiScsiPrivate - TODO: add argument description\r
490 Target - TODO: add argument description\r
491 Packet - TODO: add argument description\r
492\r
493Returns:\r
494\r
495 TODO: add return values\r
496\r
497--*/\r
498;\r
499\r
500BOOLEAN\r
501IsCommandValid (\r
502 EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet\r
503 )\r
504 /*++\r
505\r
506Routine Description:\r
507\r
508 TODO: Add function description\r
509\r
510Arguments:\r
511\r
512 Packet - TODO: add argument description\r
513\r
514Returns:\r
515\r
516 TODO: add return values\r
517\r
518--*/\r
519;\r
520\r
521EFI_STATUS\r
522RequestSenseCommand (\r
523 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
524 UINT32 Target,\r
525 UINT64 Timeout,\r
526 VOID *SenseData,\r
527 UINT8 *SenseDataLength\r
528 )\r
529/*++\r
530\r
531Routine Description:\r
532\r
533 TODO: Add function description\r
534\r
535Arguments:\r
536\r
537 AtapiScsiPrivate - TODO: add argument description\r
538 Target - TODO: add argument description\r
539 Timeout - TODO: add argument description\r
540 SenseData - TODO: add argument description\r
541 SenseDataLength - TODO: add argument description\r
542\r
543Returns:\r
544\r
545 TODO: add return values\r
546\r
547--*/\r
548;\r
549\r
550EFI_STATUS\r
551AtapiPacketCommand (\r
552 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
553 UINT32 Target,\r
554 UINT8 *PacketCommand,\r
555 VOID *Buffer,\r
556 UINT32 *ByteCount,\r
557 DATA_DIRECTION Direction,\r
558 UINT64 TimeOutInMicroSeconds\r
559 )\r
560/*++\r
561\r
562Routine Description:\r
563\r
564 TODO: Add function description\r
565\r
566Arguments:\r
567\r
568 AtapiScsiPrivate - TODO: add argument description\r
569 Target - TODO: add argument description\r
570 PacketCommand - TODO: add argument description\r
571 Buffer - TODO: add argument description\r
572 ByteCount - TODO: add argument description\r
573 Direction - TODO: add argument description\r
574 TimeOutInMicroSeconds - TODO: add argument description\r
575\r
576Returns:\r
577\r
578 TODO: add return values\r
579\r
580--*/\r
581;\r
582\r
583\r
584UINT8\r
585ReadPortB (\r
586 IN EFI_PCI_IO_PROTOCOL *PciIo,\r
587 IN UINT16 Port\r
588 )\r
589/*++\r
590\r
591Routine Description:\r
592\r
593 TODO: Add function description\r
594\r
595Arguments:\r
596\r
597 PciIo - TODO: add argument description\r
598 Port - TODO: add argument description\r
599\r
600Returns:\r
601\r
602 TODO: add return values\r
603\r
604--*/\r
605;\r
606\r
607\r
608UINT16\r
609ReadPortW (\r
610 IN EFI_PCI_IO_PROTOCOL *PciIo,\r
611 IN UINT16 Port\r
612 )\r
613/*++\r
614\r
615Routine Description:\r
616\r
617 TODO: Add function description\r
618\r
619Arguments:\r
620\r
621 PciIo - TODO: add argument description\r
622 Port - TODO: add argument description\r
623\r
624Returns:\r
625\r
626 TODO: add return values\r
627\r
628--*/\r
629;\r
630\r
631\r
632VOID\r
633WritePortB (\r
634 IN EFI_PCI_IO_PROTOCOL *PciIo,\r
635 IN UINT16 Port,\r
636 IN UINT8 Data\r
637 )\r
638/*++\r
639\r
640Routine Description:\r
641\r
642 TODO: Add function description\r
643\r
644Arguments:\r
645\r
646 PciIo - TODO: add argument description\r
647 Port - TODO: add argument description\r
648 Data - TODO: add argument description\r
649\r
650Returns:\r
651\r
652 TODO: add return values\r
653\r
654--*/\r
655;\r
656\r
657\r
658VOID\r
659WritePortW (\r
660 IN EFI_PCI_IO_PROTOCOL *PciIo,\r
661 IN UINT16 Port,\r
662 IN UINT16 Data\r
663 )\r
664/*++\r
665\r
666Routine Description:\r
667\r
668 TODO: Add function description\r
669\r
670Arguments:\r
671\r
672 PciIo - TODO: add argument description\r
673 Port - TODO: add argument description\r
674 Data - TODO: add argument description\r
675\r
676Returns:\r
677\r
678 TODO: add return values\r
679\r
680--*/\r
681;\r
682\r
683EFI_STATUS\r
684StatusDRQClear (\r
685 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
686 UINT64 TimeOutInMicroSeconds\r
687 )\r
688/*++\r
689\r
690Routine Description:\r
691\r
692 TODO: Add function description\r
693\r
694Arguments:\r
695\r
696 AtapiScsiPrivate - TODO: add argument description\r
697 TimeOutInMicroSeconds - TODO: add argument description\r
698\r
699Returns:\r
700\r
701 TODO: add return values\r
702\r
703--*/\r
704;\r
705\r
706EFI_STATUS\r
707AltStatusDRQClear (\r
708 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
709 UINT64 TimeOutInMicroSeconds\r
710 )\r
711/*++\r
712\r
713Routine Description:\r
714\r
715 TODO: Add function description\r
716\r
717Arguments:\r
718\r
719 AtapiScsiPrivate - TODO: add argument description\r
720 TimeOutInMicroSeconds - TODO: add argument description\r
721\r
722Returns:\r
723\r
724 TODO: add return values\r
725\r
726--*/\r
727;\r
728\r
729EFI_STATUS\r
730StatusDRQReady (\r
731 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
732 UINT64 TimeOutInMicroSeconds\r
733 )\r
734/*++\r
735\r
736Routine Description:\r
737\r
738 TODO: Add function description\r
739\r
740Arguments:\r
741\r
742 AtapiScsiPrivate - TODO: add argument description\r
743 TimeOutInMicroSeconds - TODO: add argument description\r
744\r
745Returns:\r
746\r
747 TODO: add return values\r
748\r
749--*/\r
750;\r
751\r
752EFI_STATUS\r
753AltStatusDRQReady (\r
754 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
755 UINT64 TimeOutInMicroSeconds\r
756 )\r
757/*++\r
758\r
759Routine Description:\r
760\r
761 TODO: Add function description\r
762\r
763Arguments:\r
764\r
765 AtapiScsiPrivate - TODO: add argument description\r
766 TimeOutInMicroSeconds - TODO: add argument description\r
767\r
768Returns:\r
769\r
770 TODO: add return values\r
771\r
772--*/\r
773;\r
774\r
775EFI_STATUS\r
776StatusWaitForBSYClear (\r
777 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
778 UINT64 TimeoutInMicroSeconds\r
779 )\r
780/*++\r
781\r
782Routine Description:\r
783\r
784 TODO: Add function description\r
785\r
786Arguments:\r
787\r
788 AtapiScsiPrivate - TODO: add argument description\r
789 TimeoutInMicroSeconds - TODO: add argument description\r
790\r
791Returns:\r
792\r
793 TODO: add return values\r
794\r
795--*/\r
796;\r
797\r
798EFI_STATUS\r
799AltStatusWaitForBSYClear (\r
800 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
801 UINT64 TimeoutInMicroSeconds\r
802 )\r
803/*++\r
804\r
805Routine Description:\r
806\r
807 TODO: Add function description\r
808\r
809Arguments:\r
810\r
811 AtapiScsiPrivate - TODO: add argument description\r
812 TimeoutInMicroSeconds - TODO: add argument description\r
813\r
814Returns:\r
815\r
816 TODO: add return values\r
817\r
818--*/\r
819;\r
820\r
821EFI_STATUS\r
822StatusDRDYReady (\r
823 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
824 UINT64 TimeoutInMicroSeconds\r
825 )\r
826/*++\r
827\r
828Routine Description:\r
829\r
830 TODO: Add function description\r
831\r
832Arguments:\r
833\r
834 AtapiScsiPrivate - TODO: add argument description\r
835 TimeoutInMicroSeconds - TODO: add argument description\r
836\r
837Returns:\r
838\r
839 TODO: add return values\r
840\r
841--*/\r
842;\r
843\r
844EFI_STATUS\r
845AltStatusDRDYReady (\r
846 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
847 UINT64 TimeoutInMicroSeconds\r
848 )\r
849/*++\r
850\r
851Routine Description:\r
852\r
853 TODO: Add function description\r
854\r
855Arguments:\r
856\r
857 AtapiScsiPrivate - TODO: add argument description\r
858 TimeoutInMicroSeconds - TODO: add argument description\r
859\r
860Returns:\r
861\r
862 TODO: add return values\r
863\r
864--*/\r
865;\r
866\r
867EFI_STATUS\r
868AtapiPassThruPioReadWriteData (\r
869 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate,\r
870 UINT16 *Buffer,\r
871 UINT32 *ByteCount,\r
872 DATA_DIRECTION Direction,\r
873 UINT64 TimeOutInMicroSeconds\r
874 )\r
875/*++\r
876\r
877Routine Description:\r
878\r
879 TODO: Add function description\r
880\r
881Arguments:\r
882\r
883 AtapiScsiPrivate - TODO: add argument description\r
884 Buffer - TODO: add argument description\r
885 ByteCount - TODO: add argument description\r
886 Direction - TODO: add argument description\r
887 TimeOutInMicroSeconds - TODO: add argument description\r
888\r
889Returns:\r
890\r
891 TODO: add return values\r
892\r
893--*/\r
894;\r
895\r
896EFI_STATUS\r
897AtapiPassThruCheckErrorStatus (\r
898 ATAPI_SCSI_PASS_THRU_DEV *AtapiScsiPrivate\r
899 )\r
900/*++\r
901\r
902Routine Description:\r
903\r
904 TODO: Add function description\r
905\r
906Arguments:\r
907\r
908 AtapiScsiPrivate - TODO: add argument description\r
909\r
910Returns:\r
911\r
912 TODO: add return values\r
913\r
914--*/\r
915;\r
916#endif\r