]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Pci/AtapiPassThruDxe/AtapiPassThru.h
Remove Atapi Pass Thru driver in MdeModulePkg. This module is only used for testing...
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / AtapiPassThruDxe / AtapiPassThru.h
diff --git a/MdeModulePkg/Bus/Pci/AtapiPassThruDxe/AtapiPassThru.h b/MdeModulePkg/Bus/Pci/AtapiPassThruDxe/AtapiPassThru.h
deleted file mode 100644 (file)
index 1ac174c..0000000
+++ /dev/null
@@ -1,1010 +0,0 @@
-/** @file\r
-  Copyright (c) 2006, Intel Corporation\r
-  All rights reserved. This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-  Module Name:  AtapiPassThru.h\r
-\r
-**/\r
-\r
-#ifndef _APT_H\r
-#define _APT_H\r
-\r
-\r
-\r
-#include <Uefi.h>\r
-\r
-#include <Protocol/ScsiPassThru.h>\r
-#include <Protocol/PciIo.h>\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <IndustryStandard/pci22.h>\r
-\r
-///\r
-/// bit definition\r
-///\r
-#define bit(a)        (1 << (a))\r
-\r
-#define MAX_TARGET_ID 4\r
-\r
-//\r
-// IDE Registers\r
-//\r
-typedef union {\r
-  UINT16  Command;        /* when write */\r
-  UINT16  Status;         /* when read */\r
-} IDE_CMD_OR_STATUS;\r
-\r
-typedef union {\r
-  UINT16  Error;          /* when read */\r
-  UINT16  Feature;        /* when write */\r
-} IDE_ERROR_OR_FEATURE;\r
-\r
-typedef union {\r
-  UINT16  AltStatus;      /* when read */\r
-  UINT16  DeviceControl;  /* when write */\r
-} IDE_AltStatus_OR_DeviceControl;\r
-\r
-\r
-typedef enum {\r
-  IdePrimary    = 0,\r
-  IdeSecondary  = 1,\r
-  IdeMaxChannel = 2\r
-} EFI_IDE_CHANNEL;\r
-\r
-///\r
-\r
-\r
-//\r
-// Bit definitions in Programming Interface byte of the Class Code field\r
-// in PCI IDE controller's Configuration Space\r
-//\r
-#define IDE_PRIMARY_OPERATING_MODE            BIT0\r
-#define IDE_PRIMARY_PROGRAMMABLE_INDICATOR    BIT1\r
-#define IDE_SECONDARY_OPERATING_MODE          BIT2\r
-#define IDE_SECONDARY_PROGRAMMABLE_INDICATOR  BIT3\r
-\r
-\r
-#define ATAPI_MAX_CHANNEL 2\r
-\r
-///\r
-/// IDE registers set\r
-///\r
-typedef struct {\r
-  UINT16                          Data;\r
-  IDE_ERROR_OR_FEATURE            Reg1;\r
-  UINT16                          SectorCount;\r
-  UINT16                          SectorNumber;\r
-  UINT16                          CylinderLsb;\r
-  UINT16                          CylinderMsb;\r
-  UINT16                          Head;\r
-  IDE_CMD_OR_STATUS               Reg;\r
-  IDE_AltStatus_OR_DeviceControl  Alt;\r
-  UINT16                          DriveAddress;\r
-} IDE_BASE_REGISTERS;\r
-\r
-#define ATAPI_SCSI_PASS_THRU_DEV_SIGNATURE  EFI_SIGNATURE_32 ('a', 's', 'p', 't')\r
-\r
-typedef struct {\r
-  UINTN                            Signature;\r
-  EFI_HANDLE                       Handle;\r
-  EFI_SCSI_PASS_THRU_PROTOCOL      ScsiPassThru;\r
-  EFI_SCSI_PASS_THRU_MODE          ScsiPassThruMode;\r
-  EFI_PCI_IO_PROTOCOL              *PciIo;\r
-  UINT64                           OriginalPciAttributes;\r
-  //\r
-  // Local Data goes here\r
-  //\r
-  IDE_BASE_REGISTERS               *IoPort;\r
-  IDE_BASE_REGISTERS               AtapiIoPortRegisters[2];\r
-  CHAR16                           ControllerName[100];\r
-  CHAR16                           ChannelName[100];\r
-  UINT32                           LatestTargetId;\r
-  UINT64                           LatestLun;\r
-} ATAPI_SCSI_PASS_THRU_DEV;\r
-\r
-//\r
-// IDE registers' base addresses\r
-//\r
-typedef struct {\r
-  UINT16  CommandBlockBaseAddr;\r
-  UINT16  ControlBlockBaseAddr;\r
-} IDE_REGISTERS_BASE_ADDR;\r
-\r
-#define ATAPI_SCSI_PASS_THRU_DEV_FROM_THIS(a) \\r
-  CR (a, \\r
-      ATAPI_SCSI_PASS_THRU_DEV, \\r
-      ScsiPassThru, \\r
-      ATAPI_SCSI_PASS_THRU_DEV_SIGNATURE \\r
-      )\r
-\r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL   gAtapiScsiPassThruDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL   gAtapiScsiPassThruComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL  gAtapiScsiPassThruComponentName2;\r
-\r
-//\r
-// ATAPI Command op code\r
-//\r
-#define OP_INQUIRY                      0x12\r
-#define OP_LOAD_UNLOAD_CD               0xa6\r
-#define OP_MECHANISM_STATUS             0xbd\r
-#define OP_MODE_SELECT_10               0x55\r
-#define OP_MODE_SENSE_10                0x5a\r
-#define OP_PAUSE_RESUME                 0x4b\r
-#define OP_PLAY_AUDIO_10                0x45\r
-#define OP_PLAY_AUDIO_MSF               0x47\r
-#define OP_PLAY_CD                      0xbc\r
-#define OP_PLAY_CD_MSF                  0xb4\r
-#define OP_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e\r
-#define OP_READ_10                      0x28\r
-#define OP_READ_12                      0xa8\r
-#define OP_READ_CAPACITY                0x25\r
-#define OP_READ_CD                      0xbe\r
-#define OP_READ_CD_MSF                  0xb9\r
-#define OP_READ_HEADER                  0x44\r
-#define OP_READ_SUB_CHANNEL             0x42\r
-#define OP_READ_TOC                     0x43\r
-#define OP_REQUEST_SENSE                0x03\r
-#define OP_SCAN                         0xba\r
-#define OP_SEEK_10                      0x2b\r
-#define OP_SET_CD_SPEED                 0xbb\r
-#define OP_STOPPLAY_SCAN                0x4e\r
-#define OP_START_STOP_UNIT              0x1b\r
-#define OP_TEST_UNIT_READY              0x00\r
-\r
-#define OP_FORMAT_UNIT                  0x04\r
-#define OP_READ_FORMAT_CAPACITIES       0x23\r
-#define OP_VERIFY                       0x2f\r
-#define OP_WRITE_10                     0x2a\r
-#define OP_WRITE_12                     0xaa\r
-#define OP_WRITE_AND_VERIFY             0x2e\r
-\r
-//\r
-// ATA Command\r
-//\r
-#define ATAPI_SOFT_RESET_CMD  0x08\r
-\r
-typedef enum {\r
-  DataIn  = 0,\r
-  DataOut = 1,\r
-  NoData  = 2,\r
-  End     = 0xff\r
-} DATA_DIRECTION;\r
-\r
-typedef struct {\r
-  UINT8           OpCode;\r
-  DATA_DIRECTION  Direction;\r
-} SCSI_COMMAND_SET;\r
-\r
-#define MAX_CHANNEL         2\r
-\r
-#define ValidCdbLength(Len) ((Len) == 6 || (Len) == 10 || (Len) == 12) ? 1 : 0\r
-\r
-//\r
-// IDE registers bit definitions\r
-//\r
-// ATA Err Reg bitmap\r
-//\r
-#define BBK_ERR   bit (7) ///< Bad block detected\r
-#define UNC_ERR   bit (6) ///< Uncorrectable Data\r
-#define MC_ERR    bit (5) ///< Media Change\r
-#define IDNF_ERR  bit (4) ///< ID Not Found\r
-#define MCR_ERR   bit (3) ///< Media Change Requested\r
-#define ABRT_ERR  bit (2) ///< Aborted Command\r
-#define TK0NF_ERR bit (1) ///< Track 0 Not Found\r
-#define AMNF_ERR  bit (0) ///< Address Mark Not Found\r
-\r
-//\r
-// ATAPI Err Reg bitmap\r
-//\r
-#define SENSE_KEY_ERR (bit (7) | bit (6) | bit (5) | bit (4))\r
-#define EOM_ERR bit (1) ///< End of Media Detected\r
-#define ILI_ERR bit (0) ///< Illegal Length Indication\r
-\r
-//\r
-// Device/Head Reg\r
-//\r
-#define LBA_MODE  bit (6)\r
-#define DEV       bit (4)\r
-#define HS3       bit (3)\r
-#define HS2       bit (2)\r
-#define HS1       bit (1)\r
-#define HS0       bit (0)\r
-#define CHS_MODE  (0)\r
-#define DRV0      (0)\r
-#define DRV1      (1)\r
-#define MST_DRV   DRV0\r
-#define SLV_DRV   DRV1\r
-\r
-//\r
-// Status Reg\r
-//\r
-#define BSY   bit (7) ///< Controller Busy\r
-#define DRDY  bit (6) ///< Drive Ready\r
-#define DWF   bit (5) ///< Drive Write Fault\r
-#define DSC   bit (4) ///< Disk Seek Complete\r
-#define DRQ   bit (3) ///< Data Request\r
-#define CORR  bit (2) ///< Corrected Data\r
-#define IDX   bit (1) ///< Index\r
-#define ERR   bit (0) ///< Error\r
-#define CHECK bit (0) ///< Check bit for ATAPI Status Reg\r
-\r
-//\r
-// Device Control Reg\r
-//\r
-#define SRST  bit (2) ///< Software Reset\r
-#define IEN_L bit (1) ///< Interrupt Enable\r
-\r
-//\r
-// ATAPI Feature Register\r
-//\r
-#define OVERLAP bit (1)\r
-#define DMA     bit (0)\r
-\r
-//\r
-// ATAPI Interrupt Reason Reson Reg (ATA Sector Count Register)\r
-//\r
-#define RELEASE     bit (2)\r
-#define IO          bit (1)\r
-#define CoD         bit (0)\r
-\r
-#define PACKET_CMD  0xA0\r
-\r
-#define DEFAULT_CMD (0xa0)\r
-//\r
-// default content of device control register, disable INT\r
-//\r
-#define DEFAULT_CTL           (0x0a)\r
-#define MAX_ATAPI_BYTE_COUNT  (0xfffe)\r
-\r
-//\r
-// function prototype\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruDriverBindingSupported (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
-  IN EFI_HANDLE                   Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruDriverBindingStart (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
-  IN EFI_HANDLE                   Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruDriverBindingStop (\r
-  IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN  EFI_HANDLE                      Controller,\r
-  IN  UINTN                           NumberOfChildren,\r
-  IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  );\r
-\r
-//\r
-// EFI Component Name Functions\r
-//\r
-/**\r
-  Retrieves a Unicode string that is the user readable name of the driver.\r
-\r
-  This function retrieves the user readable name of a driver in the form of a\r
-  Unicode string. If the driver specified by This has a user readable name in\r
-  the language specified by Language, then a pointer to the driver name is\r
-  returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
-  by This does not support the language specified by Language,\r
-  then EFI_UNSUPPORTED is returned.\r
-\r
-  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
-                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
-  @param  Language[in]          A pointer to a Null-terminated ASCII string\r
-                                array indicating the language. This is the\r
-                                language of the driver name that the caller is\r
-                                requesting, and it must match one of the\r
-                                languages specified in SupportedLanguages. The\r
-                                number of languages supported by a driver is up\r
-                                to the driver writer. Language is specified\r
-                                in RFC 3066 or ISO 639-2 language code format.\r
-\r
-  @param  DriverName[out]       A pointer to the Unicode string to return.\r
-                                This Unicode string is the name of the\r
-                                driver specified by This in the language\r
-                                specified by Language.\r
-\r
-  @retval EFI_SUCCESS           The Unicode string for the Driver specified by\r
-                                This and the language specified by Language was\r
-                                returned in DriverName.\r
-\r
-  @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
-  @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
-\r
-  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
-                                the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruComponentNameGetDriverName (\r
-  IN  EFI_COMPONENT_NAME_PROTOCOL  *This,\r
-  IN  CHAR8                        *Language,\r
-  OUT CHAR16                       **DriverName\r
-  );\r
-\r
-\r
-/**\r
-  Retrieves a Unicode string that is the user readable name of the controller\r
-  that is being managed by a driver.\r
-\r
-  This function retrieves the user readable name of the controller specified by\r
-  ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
-  driver specified by This has a user readable name in the language specified by\r
-  Language, then a pointer to the controller name is returned in ControllerName,\r
-  and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
-  managing the controller specified by ControllerHandle and ChildHandle,\r
-  then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
-  support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
-\r
-  @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
-                                EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
-  @param  ControllerHandle[in]  The handle of a controller that the driver\r
-                                specified by This is managing.  This handle\r
-                                specifies the controller whose name is to be\r
-                                returned.\r
-\r
-  @param  ChildHandle[in]       The handle of the child controller to retrieve\r
-                                the name of.  This is an optional parameter that\r
-                                may be NULL.  It will be NULL for device\r
-                                drivers.  It will also be NULL for a bus drivers\r
-                                that wish to retrieve the name of the bus\r
-                                controller.  It will not be NULL for a bus\r
-                                driver that wishes to retrieve the name of a\r
-                                child controller.\r
-\r
-  @param  Language[in]          A pointer to a Null-terminated ASCII string\r
-                                array indicating the language.  This is the\r
-                                language of the driver name that the caller is\r
-                                requesting, and it must match one of the\r
-                                languages specified in SupportedLanguages. The\r
-                                number of languages supported by a driver is up\r
-                                to the driver writer. Language is specified in\r
-                                RFC 3066 or ISO 639-2 language code format.\r
-\r
-  @param  ControllerName[out]   A pointer to the Unicode string to return.\r
-                                This Unicode string is the name of the\r
-                                controller specified by ControllerHandle and\r
-                                ChildHandle in the language specified by\r
-                                Language from the point of view of the driver\r
-                                specified by This.\r
-\r
-  @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
-                                the language specified by Language for the\r
-                                driver specified by This was returned in\r
-                                DriverName.\r
-\r
-  @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
-\r
-  @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
-                                EFI_HANDLE.\r
-\r
-  @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
-  @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
-\r
-  @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
-                                managing the controller specified by\r
-                                ControllerHandle and ChildHandle.\r
-\r
-  @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
-                                the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruComponentNameGetControllerName (\r
-  IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
-  IN  EFI_HANDLE                                      ControllerHandle,\r
-  IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
-  IN  CHAR8                                           *Language,\r
-  OUT CHAR16                                          **ControllerName\r
-  );\r
-\r
-\r
-/**\r
-  AtapiScsiPassThruDriverEntryPoint\r
-\r
-  @param ImageHandle\r
-  @param SystemTable\r
-\r
-  @todo Add function description\r
-  @todo ImageHandle - add argument description\r
-  @todo SystemTable - add argument description\r
-  @todo add return values\r
---*/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruDriverEntryPoint (\r
-  IN EFI_HANDLE         ImageHandle,\r
-  IN EFI_SYSTEM_TABLE   *SystemTable\r
-  )\r
-;\r
-\r
-/**\r
-  RegisterAtapiScsiPassThru\r
-\r
-  @param  This\r
-  @param  Controller\r
-  @param  PciIo\r
-  @param  OriginalPciAttributes\r
-\r
-  @todo Add function description\r
-  @todo This add argument description\r
-  @todo Controller add argument description\r
-  @todo PciIo add argument description\r
-  @todo add return values\r
-**/\r
-EFI_STATUS\r
-RegisterAtapiScsiPassThru (\r
-  IN  EFI_DRIVER_BINDING_PROTOCOL *This,\r
-  IN  EFI_HANDLE                  Controller,\r
-  IN  EFI_PCI_IO_PROTOCOL         *PciIo,\r
-  IN  UINT64                      OriginalPciAttributes\r
-  )\r
-;\r
-\r
-/**\r
-  AtapiScsiPassThruFunction\r
-\r
-  @param  This\r
-  @param  Target\r
-  @param  Lun\r
-  @param  Packet\r
-  @param  Event\r
-\r
-  @todo Add function description\r
-  @todo  This - add argument description\r
-  @todo  Target - add argument description\r
-  @todo  Lun - add argument description\r
-  @todo  Packet - add argument description\r
-  @todo  Event - add argument description\r
-  @todo add return values\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruFunction (\r
-  IN EFI_SCSI_PASS_THRU_PROTOCOL                        *This,\r
-  IN UINT32                                             Target,\r
-  IN UINT64                                             Lun,\r
-  IN OUT EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET         *Packet,\r
-  IN EFI_EVENT                                          Event OPTIONAL\r
-  )\r
-;\r
-\r
-/**\r
-  AtapiScsiPassThruGetNextDevice\r
-\r
-  TODO: Add function description\r
-\r
-  @param  This TODO: add argument description\r
-  @param  Target TODO: add argument description\r
-  @param  Lun TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruGetNextDevice (\r
-  IN  EFI_SCSI_PASS_THRU_PROTOCOL    *This,\r
-  IN OUT UINT32                      *Target,\r
-  IN OUT UINT64                      *Lun\r
-  )\r
-;\r
-\r
-/**\r
-  AtapiScsiPassThruBuildDevicePath\r
-\r
-  TODO: Add function description\r
-\r
-  @param  This TODO: add argument description\r
-  @param  Target TODO: add argument description\r
-  @param  Lun TODO: add argument description\r
-  @param  DevicePath TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruBuildDevicePath (\r
-  IN     EFI_SCSI_PASS_THRU_PROTOCOL    *This,\r
-  IN     UINT32                         Target,\r
-  IN     UINT64                         Lun,\r
-  IN OUT EFI_DEVICE_PATH_PROTOCOL       **DevicePath\r
-  )\r
-;\r
-\r
-/**\r
-  AtapiScsiPassThruGetTargetLun\r
-\r
-  TODO: Add function description\r
-\r
-  @param  This TODO: add argument description\r
-  @param  DevicePath TODO: add argument description\r
-  @param  Target TODO: add argument description\r
-  @param  Lun TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruGetTargetLun (\r
-  IN  EFI_SCSI_PASS_THRU_PROTOCOL    *This,\r
-  IN  EFI_DEVICE_PATH_PROTOCOL       *DevicePath,\r
-  OUT UINT32                         *Target,\r
-  OUT UINT64                         *Lun\r
-  )\r
-;\r
-\r
-/**\r
-  AtapiScsiPassThruResetChannel\r
-\r
-  TODO: Add function description\r
-\r
-  @param  This TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruResetChannel (\r
-  IN  EFI_SCSI_PASS_THRU_PROTOCOL   *This\r
-  )\r
-;\r
-\r
-/**\r
-  AtapiScsiPassThruResetTarget\r
-\r
-  TODO: Add function description\r
-\r
-  @param  This TODO: add argument description\r
-  @param  Target TODO: add argument description\r
-  @param  Lun TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-AtapiScsiPassThruResetTarget (\r
-  IN EFI_SCSI_PASS_THRU_PROTOCOL    *This,\r
-  IN UINT32                         Target,\r
-  IN UINT64                         Lun\r
-  )\r
-;\r
-\r
-/**\r
-  CheckSCSIRequestPacket\r
-\r
-  TODO: Add function description\r
-\r
-  @param  Packet TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-CheckSCSIRequestPacket (\r
-  EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET      *Packet\r
-  )\r
-;\r
-\r
-/**\r
-  SubmitBlockingIoCommand\r
-\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  Target TODO: add argument description\r
-  @param  Packet TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-SubmitBlockingIoCommand (\r
-  ATAPI_SCSI_PASS_THRU_DEV                  *AtapiScsiPrivate,\r
-  UINT32                                    Target,\r
-  EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET    *Packet\r
-  )\r
-;\r
-\r
-/**\r
-  IsCommandValid\r
-\r
-  TODO: Add function description\r
-\r
-  @param Packet  - TODO: add argument description\r
-\r
-  @return TODO: add return values\r
-\r
---*/\r
-BOOLEAN\r
-IsCommandValid (\r
-  EFI_SCSI_PASS_THRU_SCSI_REQUEST_PACKET   *Packet\r
-  )\r
-;\r
-\r
-/**\r
-  RequestSenseCommand\r
-\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  Target TODO: add argument description\r
-  @param  Timeout TODO: add argument description\r
-  @param  SenseData TODO: add argument description\r
-  @param  SenseDataLength TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-RequestSenseCommand (\r
-  ATAPI_SCSI_PASS_THRU_DEV    *AtapiScsiPrivate,\r
-  UINT32                      Target,\r
-  UINT64                      Timeout,\r
-  VOID                        *SenseData,\r
-  UINT8                       *SenseDataLength\r
-  )\r
-;\r
-\r
-/**\r
-  AtapiPacketCommand\r
-\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  Target TODO: add argument description\r
-  @param  PacketCommand TODO: add argument description\r
-  @param  Buffer TODO: add argument description\r
-  @param  ByteCount TODO: add argument description\r
-  @param  Direction TODO: add argument description\r
-  @param  TimeOutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-AtapiPacketCommand (\r
-  ATAPI_SCSI_PASS_THRU_DEV                  *AtapiScsiPrivate,\r
-  UINT32                                    Target,\r
-  UINT8                                     *PacketCommand,\r
-  VOID                                      *Buffer,\r
-  UINT32                                    *ByteCount,\r
-  DATA_DIRECTION                            Direction,\r
-  UINT64                                    TimeOutInMicroSeconds\r
-  )\r
-;\r
-\r
-\r
-/**\r
-  ReadPortB\r
-\r
-  TODO: Add function description\r
-\r
-  @param  PciIo TODO: add argument description\r
-  @param  Port TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-UINT8\r
-ReadPortB (\r
-  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
-  IN  UINT16                Port\r
-  )\r
-;\r
-\r
-\r
-/**\r
-  ReadPortW\r
-\r
-  TODO: Add function description\r
-\r
-  @param  PciIo TODO: add argument description\r
-  @param  Port TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-UINT16\r
-ReadPortW (\r
-  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
-  IN  UINT16                Port\r
-  )\r
-;\r
-\r
-\r
-/**\r
-  WritePortB\r
-\r
-  TODO: Add function description\r
-\r
-  @param  PciIo TODO: add argument description\r
-  @param  Port TODO: add argument description\r
-  @param  Data TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-VOID\r
-WritePortB (\r
-  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
-  IN  UINT16                Port,\r
-  IN  UINT8                 Data\r
-  )\r
-;\r
-\r
-\r
-/**\r
-  WritePortW\r
-\r
-  TODO: Add function description\r
-\r
-  @param  PciIo TODO: add argument description\r
-  @param  Port TODO: add argument description\r
-  @param  Data TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-VOID\r
-WritePortW (\r
-  IN  EFI_PCI_IO_PROTOCOL   *PciIo,\r
-  IN  UINT16                Port,\r
-  IN  UINT16                Data\r
-  )\r
-;\r
-\r
-/**\r
-  StatusDRQClear\r
-\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeOutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-StatusDRQClear (\r
-  ATAPI_SCSI_PASS_THRU_DEV        *AtapiScsiPrivate,\r
-  UINT64                          TimeOutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  AltStatusDRQClear\r
-\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeOutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-AltStatusDRQClear (\r
-  ATAPI_SCSI_PASS_THRU_DEV        *AtapiScsiPrivate,\r
-  UINT64                          TimeOutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  StatusDRQReady\r
-\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeOutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-StatusDRQReady (\r
-  ATAPI_SCSI_PASS_THRU_DEV        *AtapiScsiPrivate,\r
-  UINT64                          TimeOutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  AltStatusDRQReady\r
-\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeOutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-AltStatusDRQReady (\r
-  ATAPI_SCSI_PASS_THRU_DEV        *AtapiScsiPrivate,\r
-  UINT64                          TimeOutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeoutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-StatusWaitForBSYClear (\r
-  ATAPI_SCSI_PASS_THRU_DEV    *AtapiScsiPrivate,\r
-  UINT64                      TimeoutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeoutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-AltStatusWaitForBSYClear (\r
-  ATAPI_SCSI_PASS_THRU_DEV    *AtapiScsiPrivate,\r
-  UINT64                      TimeoutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeoutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-StatusDRDYReady (\r
-  ATAPI_SCSI_PASS_THRU_DEV    *AtapiScsiPrivate,\r
-  UINT64                      TimeoutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  TimeoutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-AltStatusDRDYReady (\r
-  ATAPI_SCSI_PASS_THRU_DEV    *AtapiScsiPrivate,\r
-  UINT64                      TimeoutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-  @param  Buffer TODO: add argument description\r
-  @param  ByteCount TODO: add argument description\r
-  @param  Direction TODO: add argument description\r
-  @param  TimeOutInMicroSeconds TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-AtapiPassThruPioReadWriteData (\r
-  ATAPI_SCSI_PASS_THRU_DEV  *AtapiScsiPrivate,\r
-  UINT16                    *Buffer,\r
-  UINT32                    *ByteCount,\r
-  DATA_DIRECTION            Direction,\r
-  UINT64                    TimeOutInMicroSeconds\r
-  )\r
-;\r
-\r
-/**\r
-  TODO: Add function description\r
-\r
-  @param  AtapiScsiPrivate TODO: add argument description\r
-\r
-  TODO: add return values\r
-\r
-**/\r
-EFI_STATUS\r
-AtapiPassThruCheckErrorStatus (\r
-  ATAPI_SCSI_PASS_THRU_DEV        *AtapiScsiPrivate\r
-  )\r
-;\r
-EFI_STATUS\r
-GetIdeRegistersBaseAddr (\r
-  IN  EFI_PCI_IO_PROTOCOL         *PciIo,\r
-  OUT IDE_REGISTERS_BASE_ADDR     *IdeRegsBaseAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-  Get IDE IO port registers' base addresses by mode. In 'Compatibility' mode,\r
-  use fixed addresses. In Native-PCI mode, get base addresses from BARs in\r
-  the PCI IDE controller's Configuration Space.\r
-\r
-Arguments:\r
-  PciIo             - Pointer to the EFI_PCI_IO_PROTOCOL instance\r
-  IdeRegsBaseAddr   - Pointer to IDE_REGISTERS_BASE_ADDR to\r
-                      receive IDE IO port registers' base addresses\r
-\r
-Returns:\r
-\r
-  EFI_STATUS\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-InitAtapiIoPortRegisters (\r
-  IN  ATAPI_SCSI_PASS_THRU_DEV     *AtapiScsiPrivate,\r
-  IN  IDE_REGISTERS_BASE_ADDR      *IdeRegsBaseAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Initialize each Channel's Base Address of CommandBlock and ControlBlock.\r
-\r
-Arguments:\r
-\r
-  AtapiScsiPrivate            - The pointer of ATAPI_SCSI_PASS_THRU_DEV\r
-  IdeRegsBaseAddr             - The pointer of IDE_REGISTERS_BASE_ADDR\r
-\r
-Returns:\r
-\r
-  None\r
-\r
---*/\r
-;\r
-\r
-#endif\r