MdeModulePkg/AhciPei: Add PEI BlockIO support
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1483 This commit will add the PEI BlockIO (2) PPIs support for AHCI mode ATA devices. More specifically, the driver will consume the ATA AHCI host controller PPI for ATA controllers working under AHCI code within the system. And then produces the below additional PPIs for each controller: EFI PEI Recovery Block IO PPI EFI PEI Recovery Block IO2 PPI Cc: Eric Dong <eric.dong@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
@@ -16,6 +16,18 @@ EFI_PEI_PPI_DESCRIPTOR mAhciAtaPassThruPpiListTemplate = {
|
||||
NULL
|
||||
};
|
||||
|
||||
EFI_PEI_PPI_DESCRIPTOR mAhciBlkIoPpiListTemplate = {
|
||||
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
||||
&gEfiPeiVirtualBlockIoPpiGuid,
|
||||
NULL
|
||||
};
|
||||
|
||||
EFI_PEI_PPI_DESCRIPTOR mAhciBlkIo2PpiListTemplate = {
|
||||
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
||||
&gEfiPeiVirtualBlockIo2PpiGuid,
|
||||
NULL
|
||||
};
|
||||
|
||||
EFI_PEI_PPI_DESCRIPTOR mAhciStorageSecurityPpiListTemplate = {
|
||||
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
||||
&gEdkiiPeiStorageSecurityCommandPpiGuid,
|
||||
@@ -265,6 +277,29 @@ AtaAhciPeimEntry (
|
||||
Private->AtaPassThruPpiList.Ppi = &Private->AtaPassThruPpi;
|
||||
PeiServicesInstallPpi (&Private->AtaPassThruPpiList);
|
||||
|
||||
Private->BlkIoPpi.GetNumberOfBlockDevices = AhciBlockIoGetDeviceNo;
|
||||
Private->BlkIoPpi.GetBlockDeviceMediaInfo = AhciBlockIoGetMediaInfo;
|
||||
Private->BlkIoPpi.ReadBlocks = AhciBlockIoReadBlocks;
|
||||
CopyMem (
|
||||
&Private->BlkIoPpiList,
|
||||
&mAhciBlkIoPpiListTemplate,
|
||||
sizeof (EFI_PEI_PPI_DESCRIPTOR)
|
||||
);
|
||||
Private->BlkIoPpiList.Ppi = &Private->BlkIoPpi;
|
||||
PeiServicesInstallPpi (&Private->BlkIoPpiList);
|
||||
|
||||
Private->BlkIo2Ppi.Revision = EFI_PEI_RECOVERY_BLOCK_IO2_PPI_REVISION;
|
||||
Private->BlkIo2Ppi.GetNumberOfBlockDevices = AhciBlockIoGetDeviceNo2;
|
||||
Private->BlkIo2Ppi.GetBlockDeviceMediaInfo = AhciBlockIoGetMediaInfo2;
|
||||
Private->BlkIo2Ppi.ReadBlocks = AhciBlockIoReadBlocks2;
|
||||
CopyMem (
|
||||
&Private->BlkIo2PpiList,
|
||||
&mAhciBlkIo2PpiListTemplate,
|
||||
sizeof (EFI_PEI_PPI_DESCRIPTOR)
|
||||
);
|
||||
Private->BlkIo2PpiList.Ppi = &Private->BlkIo2Ppi;
|
||||
PeiServicesInstallPpi (&Private->BlkIo2PpiList);
|
||||
|
||||
if (Private->TrustComputingDevices != 0) {
|
||||
DEBUG ((
|
||||
DEBUG_INFO,
|
||||
|
Reference in New Issue
Block a user