//\r
// Template for EMMC HC Slot Data.\r
//\r
-EMMC_PEIM_HC_SLOT gEmmcHcSlotTemplate = {\r
+EMMC_PEIM_HC_SLOT gEmmcHcSlotTemplate = {\r
EMMC_PEIM_SLOT_SIG, // Signature\r
{ // Media\r
{\r
0,\r
},\r
{ // ExtCsd\r
- {0},\r
+ { 0 },\r
},\r
TRUE, // SectorAddressing\r
NULL // Private\r
//\r
// Template for EMMC HC Private Data.\r
//\r
-EMMC_PEIM_HC_PRIVATE_DATA gEmmcHcPrivateTemplate = {\r
+EMMC_PEIM_HC_PRIVATE_DATA gEmmcHcPrivateTemplate = {\r
EMMC_PEIM_SIG, // Signature\r
NULL, // Pool\r
{ // BlkIoPpi\r
0, // SlotNum\r
0 // TotalBlkIoDevices\r
};\r
+\r
/**\r
Gets the count of block I/O devices that one specific block driver detects.\r
\r
OUT UINTN *NumberBlockDevices\r
)\r
{\r
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
\r
- Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS (This);\r
+ Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS (This);\r
*NumberBlockDevices = Private->TotalBlkIoDevices;\r
return EFI_SUCCESS;\r
}\r
OUT EFI_PEI_BLOCK_IO_MEDIA *MediaInfo\r
)\r
{\r
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
- UINT8 SlotNum;\r
- UINT8 MediaNum;\r
- UINT8 Location;\r
- BOOLEAN Found;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+ UINT8 SlotNum;\r
+ UINT8 MediaNum;\r
+ UINT8 Location;\r
+ BOOLEAN Found;\r
\r
Found = FALSE;\r
Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS (This);\r
MediaNum = 0;\r
for (SlotNum = 0; SlotNum < Private->SlotNum; SlotNum++) {\r
for (MediaNum = 0; MediaNum < Private->Slot[SlotNum].MediaNum; MediaNum++) {\r
- Location ++;\r
+ Location++;\r
if (Location == DeviceIndex) {\r
Found = TRUE;\r
break;\r
}\r
}\r
+\r
if (Found) {\r
break;\r
}\r
OUT VOID *Buffer\r
)\r
{\r
- EFI_STATUS Status;\r
- UINT32 BlockSize;\r
- UINTN NumberOfBlocks;\r
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
- UINT8 SlotNum;\r
- UINT8 MediaNum;\r
- UINT8 Location;\r
- UINT8 PartitionConfig;\r
- UINTN Remaining;\r
- UINT32 MaxBlock;\r
- BOOLEAN Found;\r
+ EFI_STATUS Status;\r
+ UINT32 BlockSize;\r
+ UINTN NumberOfBlocks;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+ UINT8 SlotNum;\r
+ UINT8 MediaNum;\r
+ UINT8 Location;\r
+ UINT8 PartitionConfig;\r
+ UINTN Remaining;\r
+ UINT32 MaxBlock;\r
+ BOOLEAN Found;\r
\r
Status = EFI_SUCCESS;\r
Found = FALSE;\r
MediaNum = 0;\r
for (SlotNum = 0; SlotNum < Private->SlotNum; SlotNum++) {\r
for (MediaNum = 0; MediaNum < Private->Slot[SlotNum].MediaNum; MediaNum++) {\r
- Location ++;\r
+ Location++;\r
if (Location == DeviceIndex) {\r
Found = TRUE;\r
break;\r
}\r
}\r
+\r
if (Found) {\r
break;\r
}\r
//\r
PartitionConfig = Private->Slot[SlotNum].ExtCsd.PartitionConfig;\r
if ((PartitionConfig & 0x7) != Private->Slot[SlotNum].PartitionType[MediaNum]) {\r
- PartitionConfig &= (UINT8)~0x7;\r
+ PartitionConfig &= (UINT8) ~0x7;\r
PartitionConfig |= Private->Slot[SlotNum].PartitionType[MediaNum];\r
- Status = EmmcPeimSwitch (\r
- &Private->Slot[SlotNum],\r
- 0x3,\r
- OFFSET_OF (EMMC_EXT_CSD, PartitionConfig),\r
- PartitionConfig,\r
- 0x0\r
- );\r
+ Status = EmmcPeimSwitch (\r
+ &Private->Slot[SlotNum],\r
+ 0x3,\r
+ OFFSET_OF (EMMC_EXT_CSD, PartitionConfig),\r
+ PartitionConfig,\r
+ 0x0\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
Private->Slot[SlotNum].ExtCsd.PartitionConfig = PartitionConfig;\r
}\r
+\r
//\r
// Start to execute data transfer. The max block number in single cmd is 65535 blocks.\r
//\r
}\r
\r
BufferSize = NumberOfBlocks * BlockSize;\r
- Status = EmmcPeimRwMultiBlocks (&Private->Slot[SlotNum], StartLBA, BlockSize, Buffer, BufferSize, TRUE);\r
+ Status = EmmcPeimRwMultiBlocks (&Private->Slot[SlotNum], StartLBA, BlockSize, Buffer, BufferSize, TRUE);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
StartLBA += NumberOfBlocks;\r
- Buffer = (UINT8*)Buffer + BufferSize;\r
+ Buffer = (UINT8 *)Buffer + BufferSize;\r
Remaining -= NumberOfBlocks;\r
}\r
+\r
return Status;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
EmmcBlockIoPeimGetDeviceNo2 (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
- OUT UINTN *NumberBlockDevices\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
+ OUT UINTN *NumberBlockDevices\r
)\r
{\r
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
\r
- Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS2 (This);\r
+ Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS2 (This);\r
*NumberBlockDevices = Private->TotalBlkIoDevices;\r
\r
return EFI_SUCCESS;\r
EFI_STATUS\r
EFIAPI\r
EmmcBlockIoPeimGetMediaInfo2 (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
- IN UINTN DeviceIndex,\r
- OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
+ IN UINTN DeviceIndex,\r
+ OUT EFI_PEI_BLOCK_IO2_MEDIA *MediaInfo\r
)\r
{\r
- EFI_STATUS Status;\r
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
- EFI_PEI_BLOCK_IO_MEDIA Media;\r
- UINT8 SlotNum;\r
- UINT8 MediaNum;\r
- UINT8 Location;\r
- BOOLEAN Found;\r
+ EFI_STATUS Status;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+ EFI_PEI_BLOCK_IO_MEDIA Media;\r
+ UINT8 SlotNum;\r
+ UINT8 MediaNum;\r
+ UINT8 Location;\r
+ BOOLEAN Found;\r
\r
Found = FALSE;\r
Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS2 (This);\r
\r
- Status = EmmcBlockIoPeimGetMediaInfo (\r
- PeiServices,\r
- &Private->BlkIoPpi,\r
- DeviceIndex,\r
- &Media\r
- );\r
+ Status = EmmcBlockIoPeimGetMediaInfo (\r
+ PeiServices,\r
+ &Private->BlkIoPpi,\r
+ DeviceIndex,\r
+ &Media\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
MediaNum = 0;\r
for (SlotNum = 0; SlotNum < Private->SlotNum; SlotNum++) {\r
for (MediaNum = 0; MediaNum < Private->Slot[SlotNum].MediaNum; MediaNum++) {\r
- Location ++;\r
+ Location++;\r
if (Location == DeviceIndex) {\r
Found = TRUE;\r
break;\r
}\r
}\r
+\r
if (Found) {\r
break;\r
}\r
EFI_STATUS\r
EFIAPI\r
EmmcBlockIoPeimReadBlocks2 (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
- IN UINTN DeviceIndex,\r
- IN EFI_PEI_LBA StartLBA,\r
- IN UINTN BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI *This,\r
+ IN UINTN DeviceIndex,\r
+ IN EFI_PEI_LBA StartLBA,\r
+ IN UINTN BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
- EFI_STATUS Status;\r
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
-\r
- Status = EFI_SUCCESS;\r
- Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS2 (This);\r
-\r
- Status = EmmcBlockIoPeimReadBlocks (\r
- PeiServices,\r
- &Private->BlkIoPpi,\r
- DeviceIndex,\r
- StartLBA,\r
- BufferSize,\r
- Buffer\r
- );\r
+ EFI_STATUS Status;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+\r
+ Status = EFI_SUCCESS;\r
+ Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS2 (This);\r
+\r
+ Status = EmmcBlockIoPeimReadBlocks (\r
+ PeiServices,\r
+ &Private->BlkIoPpi,\r
+ DeviceIndex,\r
+ StartLBA,\r
+ BufferSize,\r
+ Buffer\r
+ );\r
return Status;\r
}\r
\r
IN VOID *Ppi\r
)\r
{\r
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
\r
Private = GET_EMMC_PEIM_HC_PRIVATE_DATA_FROM_THIS_NOTIFY (NotifyDescriptor);\r
\r
EFI_STATUS\r
EFIAPI\r
InitializeEmmcBlockIoPeim (\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
- EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
- EDKII_SD_MMC_HOST_CONTROLLER_PPI *SdMmcHcPpi;\r
- UINT32 Index;\r
- UINT32 PartitionIndex;\r
- UINTN *MmioBase;\r
- UINT8 BarNum;\r
- UINT8 SlotNum;\r
- UINT8 MediaNum;\r
- UINT8 Controller;\r
- UINT64 Capacity;\r
- EMMC_EXT_CSD *ExtCsd;\r
- EMMC_HC_SLOT_CAP Capability;\r
- EMMC_PEIM_HC_SLOT *Slot;\r
- UINT32 SecCount;\r
- UINT32 GpSizeMult;\r
+ EFI_STATUS Status;\r
+ EMMC_PEIM_HC_PRIVATE_DATA *Private;\r
+ EDKII_SD_MMC_HOST_CONTROLLER_PPI *SdMmcHcPpi;\r
+ UINT32 Index;\r
+ UINT32 PartitionIndex;\r
+ UINTN *MmioBase;\r
+ UINT8 BarNum;\r
+ UINT8 SlotNum;\r
+ UINT8 MediaNum;\r
+ UINT8 Controller;\r
+ UINT64 Capacity;\r
+ EMMC_EXT_CSD *ExtCsd;\r
+ EMMC_HC_SLOT_CAP Capability;\r
+ EMMC_PEIM_HC_SLOT *Slot;\r
+ UINT32 SecCount;\r
+ UINT32 GpSizeMult;\r
\r
//\r
// Shadow this PEIM to run from memory\r
&gEdkiiPeiSdMmcHostControllerPpiGuid,\r
0,\r
NULL,\r
- (VOID **) &SdMmcHcPpi\r
+ (VOID **)&SdMmcHcPpi\r
);\r
if (EFI_ERROR (Status)) {\r
return EFI_DEVICE_ERROR;\r
Status = EFI_OUT_OF_RESOURCES;\r
break;\r
}\r
- Private->BlkIoPpiList.Ppi = (VOID*)&Private->BlkIoPpi;\r
- Private->BlkIo2PpiList.Ppi = (VOID*)&Private->BlkIo2Ppi;\r
+\r
+ Private->BlkIoPpiList.Ppi = (VOID *)&Private->BlkIoPpi;\r
+ Private->BlkIo2PpiList.Ppi = (VOID *)&Private->BlkIo2Ppi;\r
//\r
// Initialize the memory pool which will be used in all transactions.\r
//\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
+\r
if (Capability.SlotType != 0x1) {\r
DEBUG ((DEBUG_INFO, "The slot at 0x%x is not embedded slot type\n", MmioBase[Index]));\r
Status = EFI_UNSUPPORTED;\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
+\r
Status = EmmcPeimHcCardDetect (MmioBase[Index]);\r
if (EFI_ERROR (Status)) {\r
continue;\r
}\r
+\r
Status = EmmcPeimHcInitHost (MmioBase[Index]);\r
if (EFI_ERROR (Status)) {\r
continue;\r
Status = EFI_UNSUPPORTED;\r
continue;\r
}\r
+\r
if ((ExtCsd->PartitioningSupport & BIT0) != BIT0) {\r
DEBUG ((DEBUG_ERROR, "The EMMC device doesn't support Partition Feature!!!\n"));\r
Status = EFI_UNSUPPORTED;\r
for (PartitionIndex = 0; PartitionIndex < EMMC_PEIM_MAX_PARTITIONS; PartitionIndex++) {\r
switch (PartitionIndex) {\r
case EmmcPartitionUserData:\r
- SecCount = *(UINT32*)&ExtCsd->SecCount;\r
+ SecCount = *(UINT32 *)&ExtCsd->SecCount;\r
Capacity = MultU64x32 ((UINT64)SecCount, 0x200);\r
break;\r
case EmmcPartitionBoot1:\r
break;\r
case EmmcPartitionGP1:\r
GpSizeMult = (ExtCsd->GpSizeMult[0] | (ExtCsd->GpSizeMult[1] << 8) | (ExtCsd->GpSizeMult[2] << 16));\r
- Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
+ Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
break;\r
case EmmcPartitionGP2:\r
GpSizeMult = (ExtCsd->GpSizeMult[3] | (ExtCsd->GpSizeMult[4] << 8) | (ExtCsd->GpSizeMult[5] << 16));\r
- Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
+ Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
break;\r
case EmmcPartitionGP3:\r
GpSizeMult = (ExtCsd->GpSizeMult[6] | (ExtCsd->GpSizeMult[7] << 8) | (ExtCsd->GpSizeMult[8] << 16));\r
- Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
+ Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
break;\r
case EmmcPartitionGP4:\r
GpSizeMult = (ExtCsd->GpSizeMult[9] | (ExtCsd->GpSizeMult[10] << 8) | (ExtCsd->GpSizeMult[11] << 16));\r
- Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
+ Capacity = MultU64x32 (MultU64x32 (MultU64x32 ((UINT64)GpSizeMult, ExtCsd->HcWpGrpSize), ExtCsd->HcEraseGrpSize), SIZE_512KB);\r
break;\r
default:\r
ASSERT (FALSE);\r
MediaNum = Slot->MediaNum;\r
if (Capacity != 0) {\r
Slot->Media[MediaNum].LastBlock = DivU64x32 (Capacity, Slot->Media[MediaNum].BlockSize) - 1;\r
- Slot->PartitionType[MediaNum] = PartitionIndex;\r
+ Slot->PartitionType[MediaNum] = PartitionIndex;\r
Private->TotalBlkIoDevices++;\r
Slot->MediaNum++;\r
}\r
}\r
+\r
Private->SlotNum++;\r
}\r
+\r
Controller++;\r
\r
if (!EFI_ERROR (Status)) {\r