IN VOID *Ppi\r
);\r
\r
-\r
/**\r
Discover all the block I/O devices to find the FAT volume.\r
\r
**/\r
EFI_STATUS\r
UpdateBlocksAndVolumes (\r
- IN OUT PEI_FAT_PRIVATE_DATA *PrivateData,\r
- IN BOOLEAN BlockIo2\r
+ IN OUT PEI_FAT_PRIVATE_DATA *PrivateData,\r
+ IN BOOLEAN BlockIo2\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_PEI_PPI_DESCRIPTOR *TempPpiDescriptor;\r
- UINTN BlockIoPpiInstance;\r
- EFI_PEI_RECOVERY_BLOCK_IO_PPI *BlockIoPpi;\r
- EFI_PEI_RECOVERY_BLOCK_IO2_PPI *BlockIo2Ppi;\r
- UINTN NumberBlockDevices;\r
- UINTN Index;\r
- EFI_PEI_BLOCK_IO_MEDIA Media;\r
- EFI_PEI_BLOCK_IO2_MEDIA Media2;\r
- PEI_FAT_VOLUME Volume;\r
- EFI_PEI_SERVICES **PeiServices;\r
-\r
- PeiServices = (EFI_PEI_SERVICES **) GetPeiServicesTablePointer ();\r
+ EFI_STATUS Status;\r
+ EFI_PEI_PPI_DESCRIPTOR *TempPpiDescriptor;\r
+ UINTN BlockIoPpiInstance;\r
+ EFI_PEI_RECOVERY_BLOCK_IO_PPI *BlockIoPpi;\r
+ EFI_PEI_RECOVERY_BLOCK_IO2_PPI *BlockIo2Ppi;\r
+ UINTN NumberBlockDevices;\r
+ UINTN Index;\r
+ EFI_PEI_BLOCK_IO_MEDIA Media;\r
+ EFI_PEI_BLOCK_IO2_MEDIA Media2;\r
+ PEI_FAT_VOLUME Volume;\r
+ EFI_PEI_SERVICES **PeiServices;\r
+\r
+ PeiServices = (EFI_PEI_SERVICES **)GetPeiServicesTablePointer ();\r
BlockIo2Ppi = NULL;\r
BlockIoPpi = NULL;\r
//\r
for (BlockIoPpiInstance = 0; BlockIoPpiInstance < PEI_FAT_MAX_BLOCK_IO_PPI; BlockIoPpiInstance++) {\r
if (BlockIo2) {\r
Status = PeiServicesLocatePpi (\r
- &gEfiPeiVirtualBlockIo2PpiGuid,\r
- BlockIoPpiInstance,\r
- &TempPpiDescriptor,\r
- (VOID **) &BlockIo2Ppi\r
- );\r
+ &gEfiPeiVirtualBlockIo2PpiGuid,\r
+ BlockIoPpiInstance,\r
+ &TempPpiDescriptor,\r
+ (VOID **)&BlockIo2Ppi\r
+ );\r
} else {\r
Status = PeiServicesLocatePpi (\r
- &gEfiPeiVirtualBlockIoPpiGuid,\r
- BlockIoPpiInstance,\r
- &TempPpiDescriptor,\r
- (VOID **) &BlockIoPpi\r
- );\r
+ &gEfiPeiVirtualBlockIoPpiGuid,\r
+ BlockIoPpiInstance,\r
+ &TempPpiDescriptor,\r
+ (VOID **)&BlockIoPpi\r
+ );\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
//\r
// Done with all Block Io Ppis\r
&NumberBlockDevices\r
);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
\r
for (Index = 1; Index <= NumberBlockDevices && PrivateData->BlockDeviceCount < PEI_FAT_MAX_BLOCK_DEVICE; Index++) {\r
-\r
if (BlockIo2) {\r
Status = BlockIo2Ppi->GetBlockDeviceMediaInfo (\r
PeiServices,\r
if (EFI_ERROR (Status) || !Media2.MediaPresent) {\r
continue;\r
}\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo2 = BlockIo2Ppi;\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].InterfaceType = Media2.InterfaceType;\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = Media2.LastBlock;\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = Media2.BlockSize;\r
+\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo2 = BlockIo2Ppi;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].InterfaceType = Media2.InterfaceType;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = Media2.LastBlock;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = Media2.BlockSize;\r
} else {\r
Status = BlockIoPpi->GetBlockDeviceMediaInfo (\r
PeiServices,\r
if (EFI_ERROR (Status) || !Media.MediaPresent) {\r
continue;\r
}\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo = BlockIoPpi;\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].DevType = Media.DeviceType;\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = Media.LastBlock;\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = (UINT32) Media.BlockSize;\r
+\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockIo = BlockIoPpi;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].DevType = Media.DeviceType;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].LastBlock = Media.LastBlock;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].BlockSize = (UINT32)Media.BlockSize;\r
}\r
\r
PrivateData->BlockDevice[PrivateData->BlockDeviceCount].IoAlign = 0;\r
//\r
// Not used here\r
//\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].Logical = FALSE;\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PartitionChecked = FALSE;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].Logical = FALSE;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PartitionChecked = FALSE;\r
\r
- PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PhysicalDevNo = (UINT8) Index;\r
+ PrivateData->BlockDevice[PrivateData->BlockDeviceCount].PhysicalDevNo = (UINT8)Index;\r
PrivateData->BlockDeviceCount++;\r
}\r
}\r
+\r
//\r
// Find out all logical devices\r
//\r
//\r
PrivateData->VolumeCount = 0;\r
for (Index = 0; Index < PrivateData->BlockDeviceCount; Index++) {\r
- Volume.BlockDeviceNo = Index;\r
- Status = FatGetBpbInfo (PrivateData, &Volume);\r
+ Volume.BlockDeviceNo = Index;\r
+ Status = FatGetBpbInfo (PrivateData, &Volume);\r
if (Status == EFI_SUCCESS) {\r
//\r
// Add the detected volume to the volume array\r
//\r
CopyMem (\r
- (UINT8 *) &(PrivateData->Volume[PrivateData->VolumeCount]),\r
- (UINT8 *) &Volume,\r
+ (UINT8 *)&(PrivateData->Volume[PrivateData->VolumeCount]),\r
+ (UINT8 *)&Volume,\r
sizeof (PEI_FAT_VOLUME)\r
);\r
PrivateData->VolumeCount += 1;\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
BlockIo installation notification function. Find out all the current BlockIO\r
PPIs in the system and add them into private data. Assume there is\r
} else {\r
UpdateBlocksAndVolumes (mPrivateData, FALSE);\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Installs the Device Recovery Module PPI, Initialize BlockIo Ppi\r
installation notification\r
EFI_STATUS\r
EFIAPI\r
FatPeimEntry (\r
- IN EFI_PEI_FILE_HANDLE FileHandle,\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
+ IN EFI_PEI_FILE_HANDLE FileHandle,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
EFI_STATUS Status;\r
}\r
\r
Status = PeiServicesAllocatePages (\r
- EfiBootServicesCode,\r
- (sizeof (PEI_FAT_PRIVATE_DATA) - 1) / PEI_FAT_MEMORY_PAGE_SIZE + 1,\r
- &Address\r
- );\r
+ EfiBootServicesCode,\r
+ (sizeof (PEI_FAT_PRIVATE_DATA) - 1) / PEI_FAT_MEMORY_PAGE_SIZE + 1,\r
+ &Address\r
+ );\r
if (EFI_ERROR (Status)) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- PrivateData = (PEI_FAT_PRIVATE_DATA *) (UINTN) Address;\r
+ PrivateData = (PEI_FAT_PRIVATE_DATA *)(UINTN)Address;\r
\r
//\r
// Initialize Private Data (to zero, as is required by subsequent operations)\r
//\r
- ZeroMem ((UINT8 *) PrivateData, sizeof (PEI_FAT_PRIVATE_DATA));\r
+ ZeroMem ((UINT8 *)PrivateData, sizeof (PEI_FAT_PRIVATE_DATA));\r
\r
PrivateData->Signature = PEI_FAT_PRIVATE_DATA_SIGNATURE;\r
\r
//\r
// Installs Ppi\r
//\r
- PrivateData->DeviceRecoveryPpi.GetNumberRecoveryCapsules = GetNumberRecoveryCapsules;\r
- PrivateData->DeviceRecoveryPpi.GetRecoveryCapsuleInfo = GetRecoveryCapsuleInfo;\r
- PrivateData->DeviceRecoveryPpi.LoadRecoveryCapsule = LoadRecoveryCapsule;\r
+ PrivateData->DeviceRecoveryPpi.GetNumberRecoveryCapsules = GetNumberRecoveryCapsules;\r
+ PrivateData->DeviceRecoveryPpi.GetRecoveryCapsuleInfo = GetRecoveryCapsuleInfo;\r
+ PrivateData->DeviceRecoveryPpi.LoadRecoveryCapsule = LoadRecoveryCapsule;\r
\r
- PrivateData->PpiDescriptor.Flags = (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
- PrivateData->PpiDescriptor.Guid = &gEfiPeiDeviceRecoveryModulePpiGuid;\r
- PrivateData->PpiDescriptor.Ppi = &PrivateData->DeviceRecoveryPpi;\r
+ PrivateData->PpiDescriptor.Flags = (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
+ PrivateData->PpiDescriptor.Guid = &gEfiPeiDeviceRecoveryModulePpiGuid;\r
+ PrivateData->PpiDescriptor.Ppi = &PrivateData->DeviceRecoveryPpi;\r
\r
Status = PeiServicesInstallPpi (&PrivateData->PpiDescriptor);\r
if (EFI_ERROR (Status)) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
//\r
// Other initializations\r
//\r
//\r
PrivateData->NotifyDescriptor[0].Flags =\r
(\r
- EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK\r
+ EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK\r
);\r
- PrivateData->NotifyDescriptor[0].Guid = &gEfiPeiVirtualBlockIoPpiGuid;\r
- PrivateData->NotifyDescriptor[0].Notify = BlockIoNotifyEntry;\r
+ PrivateData->NotifyDescriptor[0].Guid = &gEfiPeiVirtualBlockIoPpiGuid;\r
+ PrivateData->NotifyDescriptor[0].Notify = BlockIoNotifyEntry;\r
PrivateData->NotifyDescriptor[1].Flags =\r
(\r
- EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK |\r
- EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST\r
+ EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK |\r
+ EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST\r
);\r
- PrivateData->NotifyDescriptor[1].Guid = &gEfiPeiVirtualBlockIo2PpiGuid;\r
- PrivateData->NotifyDescriptor[1].Notify = BlockIoNotifyEntry;\r
+ PrivateData->NotifyDescriptor[1].Guid = &gEfiPeiVirtualBlockIo2PpiGuid;\r
+ PrivateData->NotifyDescriptor[1].Notify = BlockIoNotifyEntry;\r
return PeiServicesNotifyPpi (&PrivateData->NotifyDescriptor[0]);\r
}\r
\r
-\r
/**\r
Returns the number of DXE capsules residing on the device.\r
\r
EFI_STATUS\r
EFIAPI\r
GetNumberRecoveryCapsules (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
- OUT UINTN *NumberRecoveryCapsules\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
+ OUT UINTN *NumberRecoveryCapsules\r
)\r
{\r
EFI_STATUS Status;\r
//\r
RecoveryCapsuleCount = 0;\r
for (Index = 0; Index < PrivateData->VolumeCount; Index++) {\r
- Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr(PcdRecoveryFileName), &Handle);\r
+ Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr (PcdRecoveryFileName), &Handle);\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Returns the size and type of the requested recovery capsule.\r
\r
EFI_STATUS\r
EFIAPI\r
GetRecoveryCapsuleInfo (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
- IN UINTN CapsuleInstance,\r
- OUT UINTN *Size,\r
- OUT EFI_GUID *CapsuleType\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
+ IN UINTN CapsuleInstance,\r
+ OUT UINTN *Size,\r
+ OUT EFI_GUID *CapsuleType\r
)\r
{\r
EFI_STATUS Status;\r
//\r
RecoveryCapsuleCount = 0;\r
for (Index = 0; Index < PrivateData->VolumeCount; Index++) {\r
- Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr(PcdRecoveryFileName), &Handle);\r
+ Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr (PcdRecoveryFileName), &Handle);\r
\r
if (EFI_ERROR (Status)) {\r
continue;\r
//\r
// Get file size\r
//\r
- *Size = (UINTN) (((PEI_FAT_FILE *) Handle)->FileSize);\r
+ *Size = (UINTN)(((PEI_FAT_FILE *)Handle)->FileSize);\r
\r
//\r
// Find corresponding physical block device\r
while (PrivateData->BlockDevice[BlockDeviceNo].Logical && BlockDeviceNo < PrivateData->BlockDeviceCount) {\r
BlockDeviceNo = PrivateData->BlockDevice[BlockDeviceNo].ParentDevNo;\r
}\r
+\r
//\r
// Fill in the Capsule Type GUID according to the block device type\r
//\r
if (BlockDeviceNo < PrivateData->BlockDeviceCount) {\r
if (PrivateData->BlockDevice[BlockDeviceNo].BlockIo2 != NULL) {\r
switch (PrivateData->BlockDevice[BlockDeviceNo].InterfaceType) {\r
- case MSG_ATAPI_DP:\r
- CopyGuid (CapsuleType, &gRecoveryOnFatIdeDiskGuid);\r
- break;\r
+ case MSG_ATAPI_DP:\r
+ CopyGuid (CapsuleType, &gRecoveryOnFatIdeDiskGuid);\r
+ break;\r
\r
- case MSG_USB_DP:\r
- CopyGuid (CapsuleType, &gRecoveryOnFatUsbDiskGuid);\r
- break;\r
+ case MSG_USB_DP:\r
+ CopyGuid (CapsuleType, &gRecoveryOnFatUsbDiskGuid);\r
+ break;\r
\r
- case MSG_NVME_NAMESPACE_DP:\r
- CopyGuid (CapsuleType, &gRecoveryOnFatNvmeDiskGuid);\r
- break;\r
+ case MSG_NVME_NAMESPACE_DP:\r
+ CopyGuid (CapsuleType, &gRecoveryOnFatNvmeDiskGuid);\r
+ break;\r
\r
- default:\r
- break;\r
+ default:\r
+ break;\r
}\r
}\r
+\r
if (PrivateData->BlockDevice[BlockDeviceNo].BlockIo != NULL) {\r
switch (PrivateData->BlockDevice[BlockDeviceNo].DevType) {\r
- case LegacyFloppy:\r
- CopyGuid (CapsuleType, &gRecoveryOnFatFloppyDiskGuid);\r
- break;\r
+ case LegacyFloppy:\r
+ CopyGuid (CapsuleType, &gRecoveryOnFatFloppyDiskGuid);\r
+ break;\r
\r
- case IdeCDROM:\r
- case IdeLS120:\r
- CopyGuid (CapsuleType, &gRecoveryOnFatIdeDiskGuid);\r
- break;\r
+ case IdeCDROM:\r
+ case IdeLS120:\r
+ CopyGuid (CapsuleType, &gRecoveryOnFatIdeDiskGuid);\r
+ break;\r
\r
- case UsbMassStorage:\r
- CopyGuid (CapsuleType, &gRecoveryOnFatUsbDiskGuid);\r
- break;\r
+ case UsbMassStorage:\r
+ CopyGuid (CapsuleType, &gRecoveryOnFatUsbDiskGuid);\r
+ break;\r
\r
- default:\r
- break;\r
+ default:\r
+ break;\r
}\r
}\r
}\r
return EFI_NOT_FOUND;\r
}\r
\r
-\r
/**\r
Loads a DXE capsule from some media into memory.\r
\r
EFI_STATUS\r
EFIAPI\r
LoadRecoveryCapsule (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
- IN UINTN CapsuleInstance,\r
- OUT VOID *Buffer\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,\r
+ IN UINTN CapsuleInstance,\r
+ OUT VOID *Buffer\r
)\r
{\r
EFI_STATUS Status;\r
//\r
RecoveryCapsuleCount = 0;\r
for (Index = 0; Index < PrivateData->VolumeCount; Index++) {\r
- Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr(PcdRecoveryFileName), &Handle);\r
+ Status = FindRecoveryFile (PrivateData, Index, (CHAR16 *)PcdGetPtr (PcdRecoveryFileName), &Handle);\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
\r
if (CapsuleInstance - 1 == RecoveryCapsuleCount) {\r
-\r
Status = FatReadFile (\r
- PrivateData,\r
- Handle,\r
- (UINTN) (((PEI_FAT_FILE *) Handle)->FileSize),\r
- Buffer\r
- );\r
+ PrivateData,\r
+ Handle,\r
+ (UINTN)(((PEI_FAT_FILE *)Handle)->FileSize),\r
+ Buffer\r
+ );\r
return Status;\r
}\r
\r
return EFI_NOT_FOUND;\r
}\r
\r
-\r
/**\r
Finds the recovery file on a FAT volume.\r
This function finds the recovery file named FileName on a specified FAT volume and returns\r
// Construct root directory file\r
//\r
ZeroMem (&Parent, sizeof (PEI_FAT_FILE));\r
- Parent.IsFixedRootDir = (BOOLEAN) ((PrivateData->Volume[VolumeIndex].FatType == Fat32) ? FALSE : TRUE);\r
- Parent.Attributes = FAT_ATTR_DIRECTORY;\r
- Parent.CurrentPos = 0;\r
- Parent.CurrentCluster = Parent.IsFixedRootDir ? 0 : PrivateData->Volume[VolumeIndex].RootDirCluster;\r
- Parent.StartingCluster = Parent.CurrentCluster;\r
- Parent.Volume = &PrivateData->Volume[VolumeIndex];\r
-\r
- Status = FatSetFilePos (PrivateData, &Parent, 0);\r
+ Parent.IsFixedRootDir = (BOOLEAN)((PrivateData->Volume[VolumeIndex].FatType == Fat32) ? FALSE : TRUE);\r
+ Parent.Attributes = FAT_ATTR_DIRECTORY;\r
+ Parent.CurrentPos = 0;\r
+ Parent.CurrentCluster = Parent.IsFixedRootDir ? 0 : PrivateData->Volume[VolumeIndex].RootDirCluster;\r
+ Parent.StartingCluster = Parent.CurrentCluster;\r
+ Parent.Volume = &PrivateData->Volume[VolumeIndex];\r
+\r
+ Status = FatSetFilePos (PrivateData, &Parent, 0);\r
if (EFI_ERROR (Status)) {\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Search for recovery capsule in root directory\r
//\r
*Handle = File;\r
\r
return EFI_SUCCESS;\r
-\r
}\r