Hisilicon/Serdes: add support for D05
Modify OemGetSerdesParam interface to support D05, for it has 2 sockets
on the board, and each socket has 2 IO super clusters. The interface
is modified to support getting serdes parameter for both IO super clusters
(denoted as A and B) on each socket.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Peicong Li <lipeicong@huawei.com>
Signed-off-by: Heyi Guo <heyi.guo@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
diff --git a/Chips/Hisilicon/Drivers/Smbios/SmbiosMiscDxe/Type09/MiscSystemSlotDesignationFunction.c b/Chips/Hisilicon/Drivers/Smbios/SmbiosMiscDxe/Type09/MiscSystemSlotDesignationFunction.c
index a0e3de3..62e4b7f 100644
--- a/Chips/Hisilicon/Drivers/Smbios/SmbiosMiscDxe/Type09/MiscSystemSlotDesignationFunction.c
+++ b/Chips/Hisilicon/Drivers/Smbios/SmbiosMiscDxe/Type09/MiscSystemSlotDesignationFunction.c
@@ -73,9 +73,10 @@
)
{
EFI_STATUS Status;
- serdes_param_t sSerdesParam;
+ serdes_param_t SerdesParamA;
+ serdes_param_t SerdesParamB;
- Status = OemGetSerdesParam (&sSerdesParam);
+ Status = OemGetSerdesParam (&SerdesParamA, &SerdesParamB, 0);
if(EFI_ERROR(Status))
{
DEBUG((EFI_D_ERROR, "[%a]:[%dL] OemGetSerdesParam failed %r\n", __FUNCTION__, __LINE__, Status));
@@ -85,8 +86,8 @@
//
// PCIE0
//
- if (((UINTN)InputData == (UINTN)&MiscSystemSlotDesignationPcie0Data) && sSerdesParam.hilink1_mode == EM_HILINK1_PCIE0_8LANE)
- {
+ if (((UINTN)InputData == (UINTN)&MiscSystemSlotDesignationPcie0Data)
+ && SerdesParamA.hilink1_mode == EM_HILINK1_PCIE0_8LANE) {
InputData->CurrentUsage = SlotUsageAvailable;
}
@@ -95,8 +96,7 @@
//
if ((UINTN)InputData == (UINTN)&MiscSystemSlotDesignationPcie1Data)
{
- if (sSerdesParam.hilink0_mode == EM_HILINK0_PCIE1_4LANE_PCIE2_4LANE)
- {
+ if (SerdesParamA.hilink0_mode == EM_HILINK0_PCIE1_4LANE_PCIE2_4LANE) {
InputData->SlotDataBusWidth = SlotDataBusWidth4X;
}
}
@@ -106,13 +106,10 @@
//
if ((UINTN)InputData == (UINTN)&MiscSystemSlotDesignationPcie2Data)
{
- if (sSerdesParam.hilink0_mode == EM_HILINK0_PCIE1_4LANE_PCIE2_4LANE)
- {
+ if (SerdesParamA.hilink0_mode == EM_HILINK0_PCIE1_4LANE_PCIE2_4LANE) {
InputData->SlotDataBusWidth = SlotDataBusWidth4X;
InputData->CurrentUsage = SlotUsageAvailable;
- }
- else if (sSerdesParam.hilink2_mode == EM_HILINK2_PCIE2_8LANE)
- {
+ } else if (SerdesParamA.hilink2_mode == EM_HILINK2_PCIE2_8LANE) {
InputData->CurrentUsage = SlotUsageAvailable;
}
}
@@ -120,8 +117,8 @@
//
// PCIE3
//
- if (((UINTN)InputData == (UINTN)&MiscSystemSlotDesignationPcie3Data) && sSerdesParam.hilink5_mode == EM_HILINK5_PCIE3_4LANE)
- {
+ if (((UINTN)InputData == (UINTN)&MiscSystemSlotDesignationPcie3Data)
+ && SerdesParamA.hilink5_mode == EM_HILINK5_PCIE3_4LANE) {
InputData->CurrentUsage = SlotUsageAvailable;
}
}
diff --git a/Chips/Hisilicon/Hi1610/Include/Library/SerdesLib.h b/Chips/Hisilicon/Hi1610/Include/Library/SerdesLib.h
index 700d40e..3bd5a0f 100755
--- a/Chips/Hisilicon/Hi1610/Include/Library/SerdesLib.h
+++ b/Chips/Hisilicon/Hi1610/Include/Library/SerdesLib.h
@@ -82,7 +82,7 @@
UINT32 DsCfg;
} SERDES_POLARITY_INVERT;
-EFI_STATUS OemGetSerdesParam (serdes_param_t *Param);
+EFI_STATUS OemGetSerdesParam (serdes_param_t *ParamA, serdes_param_t *ParamB, UINT32 SocketId);
extern SERDES_POLARITY_INVERT gSerdesPolarityTxDesc[];
extern SERDES_POLARITY_INVERT gSerdesPolarityRxDesc[];
UINT32 GetEthType(UINT8 EthChannel);
diff --git a/Chips/Hisilicon/Pv660/Include/Library/SerdesLib.h b/Chips/Hisilicon/Pv660/Include/Library/SerdesLib.h
index 070934b..b6c7e20 100644
--- a/Chips/Hisilicon/Pv660/Include/Library/SerdesLib.h
+++ b/Chips/Hisilicon/Pv660/Include/Library/SerdesLib.h
@@ -76,7 +76,7 @@
} SERDES_POLARITY_INVERT;
-EFI_STATUS OemGetSerdesParam (serdes_param_t *Param);
+EFI_STATUS OemGetSerdesParam (serdes_param_t *ParamA, serdes_param_t *ParamB, UINT32 SocketId);
extern SERDES_POLARITY_INVERT gSerdesPolarityTxDesc[];
extern SERDES_POLARITY_INVERT gSerdesPolarityRxDesc[];
UINT32 GetEthType(UINT8 EthChannel);
diff --git a/Platforms/Hisilicon/D02/Library/OemMiscLibD02/BoardFeatureD02.c b/Platforms/Hisilicon/D02/Library/OemMiscLibD02/BoardFeatureD02.c
index d4aa84a..7526644 100644
--- a/Platforms/Hisilicon/D02/Library/OemMiscLibD02/BoardFeatureD02.c
+++ b/Platforms/Hisilicon/D02/Library/OemMiscLibD02/BoardFeatureD02.c
@@ -59,15 +59,14 @@
.hilink5_mode = EM_HILINK5_SAS1_4LANE,
};
-EFI_STATUS OemGetSerdesParam (serdes_param_t *Param)
+EFI_STATUS OemGetSerdesParam (serdes_param_t *ParamA, serdes_param_t *ParamB, UINT32 SocketId)
{
- if (NULL == Param)
- {
- DEBUG((EFI_D_ERROR, "[%a]:[%dL] Param == NULL!\n", __FUNCTION__, __LINE__));
+ if (ParamA == NULL) {
+ DEBUG((DEBUG_ERROR, "[%a]:[%dL] ParamA == NULL!\n", __FUNCTION__, __LINE__));
return EFI_INVALID_PARAMETER;
}
- (VOID) CopyMem(Param, &gSerdesParam, sizeof(*Param));
+ (VOID) CopyMem(ParamA, &gSerdesParam, sizeof(*ParamA));
return EFI_SUCCESS;
}
diff --git a/Platforms/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c b/Platforms/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c
index 23c55e1..a54e76f 100644
--- a/Platforms/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c
+++ b/Platforms/Hisilicon/D03/Library/OemMiscLib2P/BoardFeature2PHi1610.c
@@ -75,15 +75,14 @@
.use_ssc = 0,
};
-EFI_STATUS OemGetSerdesParam (serdes_param_t *Param)
+EFI_STATUS OemGetSerdesParam (serdes_param_t *ParamA, serdes_param_t *ParamB, UINT32 SocketId)
{
- if (NULL == Param)
- {
+ if (ParamA == NULL) {
DEBUG((EFI_D_ERROR, "[%a]:[%dL] Param == NULL!\n", __FUNCTION__, __LINE__));
return EFI_INVALID_PARAMETER;
}
- (VOID) CopyMem(Param, &gSerdesParam, sizeof(*Param));
+ (VOID) CopyMem(ParamA, &gSerdesParam, sizeof(*ParamA));
return EFI_SUCCESS;
}