[edk2-devel][edk2-platforms][PATCH 2/2] AmpereAltraPkg: Enable auto bifurcation via BoardSetting
Minh Nguyen via groups.io
minhnguyen1=os.amperecomputing.com at groups.io
Fri May 5 02:49:18 UTC 2023
From: Vu Nguyen <vunguyen at os.amperecomputing.com>
Add support for new BoardSetting's config value (0x0000000A) to enable auto
bifurcation mode per Root Complex:
Example:
NV_SI_RO_BOARD_S0_RCA2_CFG, 0x0098, 0x0000000A
NV_SI_RO_BOARD_S0_RCA3_CFG, 0x00A0, 0x0000000A
Signed-off-by: Minh Nguyen <minhnguyen1 at os.amperecomputing.com>
---
Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.h | 4 +++-
Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c | 12 +++++++++++-
Silicon/Ampere/AmpereAltraPkg/Drivers/RootComplexConfigDxe/RootComplexConfigDxe.c | 7 ++++---
3 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.h b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.h
index 008a8db69f2c..8c07f086a58f 100644
--- a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.h
+++ b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.h
@@ -1,6 +1,6 @@
/** @file
- Copyright (c) 2020 - 2021, Ampere Computing LLC. All rights reserved.<BR>
+ Copyright (c) 2020 - 2023, Ampere Computing LLC. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -13,6 +13,8 @@
#define BYTE_MASK 0xFF
#define PCIE_ERRATA_SPEED1 0x0001 // Limited speed errata
+#define AUTO_BIFURCATION_SETTING_VALUE 0x0A
+
#ifndef BIT
#define BIT(nr) (1 << (nr))
#endif
diff --git a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
index 08dff0f1311f..a8e23015b605 100644
--- a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
+++ b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
@@ -205,7 +205,9 @@ GetDevMap (
//
// Get default Devmap low and configure Devmap low accordingly.
//
- RootComplex->DefaultDevMapLow = GetDefaultDevMap (RootComplex, TRUE);
+ if (RootComplex->DefaultDevMapLow != DevMapModeAuto) {
+ RootComplex->DefaultDevMapLow = GetDefaultDevMap (RootComplex, TRUE);
+ }
if (RootComplex->DevMapLow == 0) {
RootComplex->DevMapLow = RootComplex->DefaultDevMapLow;
}
@@ -398,6 +400,14 @@ GetLaneAllocation (
}
}
+ // Update RootComplex data to handle auto bifurcation mode on RCA
+ if (Value == AUTO_BIFURCATION_SETTING_VALUE) {
+ RootComplex->Pcie[PcieController0].MaxWidth = LINK_WIDTH_X4;
+ RootComplex->Pcie[PcieController0].MaxGen = LINK_SPEED_GEN3;
+ RootComplex->Pcie[PcieController0].Active = TRUE;
+ RootComplex->DefaultDevMapLow = DevMapModeAuto;
+ }
+
if (RootComplex->Type == RootComplexTypeB) {
NvParamOffset += NV_PARAM_ENTRYSIZE;
Status = NVParamGet (NvParamOffset, NV_PERM_ALL, &Value);
diff --git a/Silicon/Ampere/AmpereAltraPkg/Drivers/RootComplexConfigDxe/RootComplexConfigDxe.c b/Silicon/Ampere/AmpereAltraPkg/Drivers/RootComplexConfigDxe/RootComplexConfigDxe.c
index 52a297ff085d..bc4812207f63 100644
--- a/Silicon/Ampere/AmpereAltraPkg/Drivers/RootComplexConfigDxe/RootComplexConfigDxe.c
+++ b/Silicon/Ampere/AmpereAltraPkg/Drivers/RootComplexConfigDxe/RootComplexConfigDxe.c
@@ -733,7 +733,8 @@ PcieRCScreenSetup (
//
OptionsOpCodeHandle = CreateDevMapOptions (RootComplex);
- if (RootComplex->DefaultDevMapLow != 0) {
+ if ((RootComplex->DefaultDevMapLow != 0)
+ && (RootComplex->DefaultDevMapLow != DevMapModeAuto)) {
QuestionFlags |= EFI_IFR_FLAG_READ_ONLY;
}
@@ -1202,8 +1203,8 @@ RootComplexDriverEntry (
RootComplex = GetRootComplex (RCIndex);
if (EFI_ERROR (Status)) {
- VarStoreConfig->RCBifurcationLow[RCIndex] = RootComplex->DevMapLow;
- VarStoreConfig->RCBifurcationHigh[RCIndex] = RootComplex->DevMapHigh;
+ VarStoreConfig->RCBifurcationLow[RCIndex] = RootComplex->DefaultDevMapLow;
+ VarStoreConfig->RCBifurcationHigh[RCIndex] = RootComplex->DefaultDevMapHigh;
VarStoreConfig->RCStatus[RCIndex] = RootComplex->Active;
IsUpdated = TRUE;
}
--
2.39.0
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#104079): https://edk2.groups.io/g/devel/message/104079
Mute This Topic: https://groups.io/mt/98698193/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list