]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Ata/AhciPei/AhciPei.h
MdeModulePkg/AhciPei: Add PEI BlockIO support
[mirror_edk2.git] / MdeModulePkg / Bus / Ata / AhciPei / AhciPei.h
index e6a9c0a3333bb4311001c8bceb7ba1dc8949956f..9a34dc6e4f1514210d8068344e461ef3cea9dd9e 100644 (file)
@@ -19,6 +19,7 @@
 #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
@@ -35,6 +36,7 @@
 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
@@ -312,6 +314,8 @@ struct _PEI_AHCI_CONTROLLER_PRIVATE_DATA {
 \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
@@ -553,6 +557,32 @@ AhciModeInitialization (
   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