diff options
author | jianzhou <jianzhou@codeaurora.org> | 2021-09-09 16:19:18 +0800 |
---|---|---|
committer | jianzhou <jianzhou@codeaurora.org> | 2021-09-09 17:06:36 +0800 |
commit | 1d3b92ed686dc64abae7b0b305626ee7d44b0a56 (patch) | |
tree | ab819492c79ff0b4b090df1e14f0c1ba229e42f1 | |
parent | e32787a7f0d452fd907b6384d964167aac7f5f83 (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.c | 129 |
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)); } } } |