#include <Ppi/IoMmu.h>\r
#include <Ppi/EndOfPeiPhase.h>\r
#include <Ppi/AtaPassThru.h>\r
+#include <Ppi/BlockIo.h>\r
#include <Ppi/BlockIo2.h>\r
#include <Ppi/StorageSecurityCommand.h>\r
\r
typedef struct _PEI_AHCI_CONTROLLER_PRIVATE_DATA PEI_AHCI_CONTROLLER_PRIVATE_DATA;\r
\r
#include "AhciPeiPassThru.h"\r
+#include "AhciPeiBlockIo.h"\r
#include "AhciPeiStorageSecurity.h"\r
\r
//\r
\r
EFI_ATA_PASS_THRU_MODE AtaPassThruMode;\r
EDKII_PEI_ATA_PASS_THRU_PPI AtaPassThruPpi;\r
+ EFI_PEI_RECOVERY_BLOCK_IO_PPI BlkIoPpi;\r
+ EFI_PEI_RECOVERY_BLOCK_IO2_PPI BlkIo2Ppi;\r
EDKII_PEI_STORAGE_SECURITY_CMD_PPI StorageSecurityPpi;\r
EFI_PEI_PPI_DESCRIPTOR AtaPassThruPpiList;\r
EFI_PEI_PPI_DESCRIPTOR BlkIoPpiList;\r
IN OUT PEI_AHCI_CONTROLLER_PRIVATE_DATA *Private\r
);\r
\r
+/**\r
+ Transfer data from ATA device.\r
+\r
+ This function performs one ATA pass through transaction to transfer data from/to\r
+ ATA device. It chooses the appropriate ATA command and protocol to invoke PassThru\r
+ interface of ATA pass through.\r
+\r
+ @param[in] DeviceData A pointer to PEI_AHCI_ATA_DEVICE_DATA structure.\r
+ @param[in,out] Buffer The pointer to the current transaction buffer.\r
+ @param[in] StartLba The starting logical block address to be accessed.\r
+ @param[in] TransferLength The block number or sector count of the transfer.\r
+ @param[in] IsWrite Indicates whether it is a write operation.\r
+\r
+ @retval EFI_SUCCESS The data transfer is complete successfully.\r
+ @return others Some error occurs when transferring data.\r
+\r
+**/\r
+EFI_STATUS\r
+TransferAtaDevice (\r
+ IN PEI_AHCI_ATA_DEVICE_DATA *DeviceData,\r
+ IN OUT VOID *Buffer,\r
+ IN EFI_LBA StartLba,\r
+ IN UINT32 TransferLength,\r
+ IN BOOLEAN IsWrite\r
+ );\r
+\r
/**\r
Trust transfer data from/to ATA device.\r
\r