summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjianzhou <jianzhou@codeaurora.org>2021-09-09 16:19:18 +0800
committerjianzhou <jianzhou@codeaurora.org>2021-09-09 17:06:36 +0800
commit1d3b92ed686dc64abae7b0b305626ee7d44b0a56 (patch)
treeab819492c79ff0b4b090df1e14f0c1ba229e42f1
parente32787a7f0d452fd907b6384d964167aac7f5f83 (diff)
QcomModulePkg: Move revision check into function
Move revision check into GetDDRInfo() and GetDDrRegionsInfo() to make logic more clearer. Change-Id: Ib9783e80f445bc2268f32bb9daf910062c369a0b
-rwxr-xr-x[-rw-r--r--]QcomModulePkg/Library/BootLib/UpdateDeviceTree.c129
1 files changed, 64 insertions, 65 deletions
diff --git a/QcomModulePkg/Library/BootLib/UpdateDeviceTree.c b/QcomModulePkg/Library/BootLib/UpdateDeviceTree.c
index 9438c45067..7951f9a586 100644..100755
--- a/QcomModulePkg/Library/BootLib/UpdateDeviceTree.c
+++ b/QcomModulePkg/Library/BootLib/UpdateDeviceTree.c
@@ -73,11 +73,11 @@ PrintSplashMemInfo (CONST CHAR8 *data, INT32 datalen)
}
STATIC EFI_STATUS
-GetDDRInfo (struct ddr_details_entry_info *DdrInfo,
- UINT64 *Revision)
+GetDDRInfo (struct ddr_details_entry_info *DdrInfo)
{
EFI_DDRGETINFO_PROTOCOL *DdrInfoIf;
EFI_STATUS Status;
+ UINT64 Revision;
Status = gBS->LocateProtocol (&gEfiDDRGetInfoProtocolGuid, NULL,
(VOID **)&DdrInfoIf);
@@ -94,8 +94,14 @@ GetDDRInfo (struct ddr_details_entry_info *DdrInfo,
return Status;
}
- *Revision = DdrInfoIf->Revision;
- DEBUG ((EFI_D_VERBOSE, "DDR Header Revision =0x%x\n", *Revision));
+ Revision = DdrInfoIf->Revision;
+ DEBUG ((EFI_D_VERBOSE, "DDR Header Revision =0x%x\n", Revision));
+
+ if (Revision < EFI_DDRGETINFO_PROTOCOL_REVISION) {
+ DEBUG ((EFI_D_VERBOSE,
+ "ddr_device_rank, HBB not supported in Revision=0x%x\n", Revision));
+ return EFI_UNSUPPORTED;
+ }
return Status;
}
@@ -659,11 +665,11 @@ dev_tree_add_mem_infoV64 (VOID *fdt, UINT32 offset, UINT64 addr, UINT64 size)
}
STATIC EFI_STATUS
-GetDDrRegionsInfo (struct ddr_regions_data_info *DdrRegionsInfo,
- UINT64 *Revision)
+GetDDrRegionsInfo (struct ddr_regions_data_info *DdrRegionsInfo)
{
EFI_STATUS Status = EFI_SUCCESS;
EFI_DDRGETINFO_PROTOCOL *pDDrGetInfoProtocol = NULL;
+ UINT64 Revision;
Status = gBS->LocateProtocol (&gEfiDDRGetInfoProtocolGuid,
NULL,
@@ -685,8 +691,15 @@ GetDDrRegionsInfo (struct ddr_regions_data_info *DdrRegionsInfo,
return EFI_OUT_OF_RESOURCES;
}
- *Revision = pDDrGetInfoProtocol->Revision;
- DEBUG ((EFI_D_VERBOSE, "DDR Header Revision =0x%x\n", *Revision));
+ Revision = pDDrGetInfoProtocol->Revision;
+ DEBUG ((EFI_D_VERBOSE, "DDR Header Revision =0x%x\n", Revision));
+
+ if (Revision < DDR_DETAILS_STRUCT_VERSION) {
+ DEBUG ((EFI_D_INFO,
+ "DDr regions not supported in Revision=0x%x\n", Revision));
+ return EFI_UNSUPPORTED;
+ }
+
return Status;
}
@@ -840,7 +853,6 @@ AddDDrRegion (VOID *Fdt)
INT32 Ret = 0;
INT32 Offset;
struct ddr_regions_data_info *DdrRegionsDataInfo;
- UINT64 Revision = 0;
DdrRegionsDataInfo = AllocateZeroPool (sizeof (struct ddr_regions_data_info));
if (DdrRegionsDataInfo == NULL) {
@@ -848,17 +860,11 @@ AddDDrRegion (VOID *Fdt)
return EFI_OUT_OF_RESOURCES;
}
- Status = GetDDrRegionsInfo (DdrRegionsDataInfo, &Revision);
+ Status = GetDDrRegionsInfo (DdrRegionsDataInfo);
if (Status != EFI_SUCCESS) {
return Status;
}
- if (Revision < DDR_DETAILS_STRUCT_VERSION) {
- DEBUG ((EFI_D_INFO,
- "DDr regions not supported in Revision=0x%x\n", Revision));
- return EFI_UNSUPPORTED;
- }
-
Offset = AddDDrRegionNode (Fdt);
if (Offset < 0) {
DEBUG ((EFI_D_ERROR, "Failed to add ddr region node\n"));
@@ -892,7 +898,6 @@ UpdateDeviceTree (VOID *fdt,
/* Single spaces reserved for chan(0-9), rank(0-9) */
CHAR8 FdtHbbProp[] = "ddr_device_hbb_ch _rank ";
struct ddr_details_entry_info *DdrInfo;
- UINT64 Revision;
EFI_STATUS Status;
EFI_RAMPARTITION_PROTOCOL *EfiRamPartProt;
UINT32 Hbb;
@@ -940,7 +945,7 @@ UpdateDeviceTree (VOID *fdt,
DEBUG ((EFI_D_ERROR, "DDR Info Buffer: Out of resources\n"));
return EFI_OUT_OF_RESOURCES;
}
- Status = GetDDRInfo (DdrInfo, &Revision);
+ Status = GetDDRInfo (DdrInfo);
if (Status == EFI_SUCCESS) {
DdrDeviceType = DdrInfo->device_type;
DEBUG ((EFI_D_VERBOSE, "DDR deviceType:%d\n", DdrDeviceType));
@@ -955,60 +960,54 @@ UpdateDeviceTree (VOID *fdt,
DEBUG ((EFI_D_VERBOSE, "ddr_device_type is added to memory node\n"));
}
- if (Revision < EFI_DDRGETINFO_PROTOCOL_REVISION) {
- DEBUG ((EFI_D_VERBOSE,
- "ddr_device_rank, HBB not supported in Revision=0x%x\n",
- Revision));
- } else {
- Status = gBS->LocateProtocol (&gEfiRamPartitionProtocolGuid, NULL,
- (VOID **)&EfiRamPartProt);
+ Status = gBS->LocateProtocol (&gEfiRamPartitionProtocolGuid, NULL,
+ (VOID **)&EfiRamPartProt);
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR,
- "Failed to get RamPartition Protocol: %d\n", Status));
- goto OutofUpdateRankChannel;
- }
+ if (EFI_ERROR (Status)) {
+ DEBUG ((EFI_D_ERROR,
+ "Failed to get RamPartition Protocol: %d\n", Status));
+ goto OutofUpdateRankChannel;
+ }
- Status = EfiRamPartProt->GetHighestBankBit (EfiRamPartProt, &Hbb);
+ Status = EfiRamPartProt->GetHighestBankBit (EfiRamPartProt, &Hbb);
- if (EFI_ERROR (Status)) {
- DEBUG ((EFI_D_ERROR, "Failed to get Highest Bank Bit: %d\n", Status));
- goto OutofUpdateRankChannel;
- }
+ if (EFI_ERROR (Status)) {
+ DEBUG ((EFI_D_ERROR, "Failed to get Highest Bank Bit: %d\n", Status));
+ goto OutofUpdateRankChannel;
+ }
- DEBUG ((EFI_D_VERBOSE, "DdrInfo->num_channels:%d\n",
- DdrInfo->num_channels));
- for (UINT8 Chan = 0; Chan < DdrInfo->num_channels; Chan++) {
- DEBUG ((EFI_D_VERBOSE, "ddr_device_rank_ch%d:%d\n",
- Chan, DDR_MAX_RANKS));
- AsciiSPrint (FdtRankProp, sizeof (FdtRankProp),
- "ddr_device_rank_ch%d", Chan);
- FdtPropUpdateFunc (fdt, offset, (CONST char *)FdtRankProp,
- DDR_MAX_RANKS, fdt_appendprop_u32, ret);
+ DEBUG ((EFI_D_VERBOSE, "DdrInfo->num_channels:%d\n",
+ DdrInfo->num_channels));
+ for (UINT8 Chan = 0; Chan < DdrInfo->num_channels; Chan++) {
+ DEBUG ((EFI_D_VERBOSE, "ddr_device_rank_ch%d:%d\n",
+ Chan, DDR_MAX_RANKS));
+ AsciiSPrint (FdtRankProp, sizeof (FdtRankProp),
+ "ddr_device_rank_ch%d", Chan);
+ FdtPropUpdateFunc (fdt, offset, (CONST char *)FdtRankProp,
+ DDR_MAX_RANKS, fdt_appendprop_u32, ret);
+ if (ret) {
+ DEBUG ((EFI_D_ERROR,
+ "ERROR: Cannot update memory node ddr_device_rank_ch%d:0x%x\n",
+ Chan, ret));
+ } else {
+ DEBUG ((EFI_D_VERBOSE, "ddr_device_rank_ch%d added to memory node\n",
+ Chan));
+ }
+ for (UINT8 Rank = 0; Rank < DDR_MAX_RANKS; Rank++) {
+ DEBUG ((EFI_D_VERBOSE, "ddr_device_hbb_ch%d_rank%d:%d\n",
+ Chan, Rank, Hbb));
+ AsciiSPrint (FdtHbbProp, sizeof (FdtHbbProp),
+ "ddr_device_hbb_ch%d_rank%d", Chan, Rank);
+ FdtPropUpdateFunc (fdt, offset, (CONST char *)FdtHbbProp,
+ Hbb, fdt_appendprop_u32, ret);
if (ret) {
DEBUG ((EFI_D_ERROR,
- "ERROR: Cannot update memory node ddr_device_rank_ch%d:0x%x\n",
- Chan, ret));
+ "ERROR: Cannot update memory node"
+ " ddr_device_hbb_ch%d_rank%d:0x%x\n", Chan, Rank, ret));
} else {
- DEBUG ((EFI_D_VERBOSE, "ddr_device_rank_ch%d added to memory node\n",
- Chan));
- }
- for (UINT8 Rank = 0; Rank < DDR_MAX_RANKS; Rank++) {
- DEBUG ((EFI_D_VERBOSE, "ddr_device_hbb_ch%d_rank%d:%d\n",
- Chan, Rank, Hbb));
- AsciiSPrint (FdtHbbProp, sizeof (FdtHbbProp),
- "ddr_device_hbb_ch%d_rank%d", Chan, Rank);
- FdtPropUpdateFunc (fdt, offset, (CONST char *)FdtHbbProp,
- Hbb, fdt_appendprop_u32, ret);
- if (ret) {
- DEBUG ((EFI_D_ERROR,
- "ERROR: Cannot update memory node ddr_device_hbb_ch%d_rank%d:0x%x\n",
- Chan, Rank, ret));
- } else {
- DEBUG ((EFI_D_VERBOSE,
- "ddr_device_hbb_ch%d_rank%d added to memory node\n",
- Chan, Rank));
- }
+ DEBUG ((EFI_D_VERBOSE,
+ "ddr_device_hbb_ch%d_rank%d added to memory node\n",
+ Chan, Rank));
}
}
}