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