Implement Silicom card features #1

Merged
DataHoarder merged 12 commits from implement-silicom-card into master 2021-10-28 05:16:53 +00:00
Showing only changes of commit 596a181e24 - Show all commits

View file

@ -2145,7 +2145,7 @@ static fm_status LoadTlv(fm_byte *tlv)
if (!(hwCfg.pcaIo[idx].loadFlags & LF_IO_MODEL))
{
CfgOrderErrorMsg(tlv, idx,
"must be before PCA IO %d model config");
"must be after PCA IO %d model config");
return FM_ERR_INVALID_ARGUMENT;
}
@ -2163,7 +2163,7 @@ static fm_status LoadTlv(fm_byte *tlv)
if (!(hwCfg.pcaIo[idx].loadFlags & LF_IO_MODEL))
{
CfgOrderErrorMsg(tlv, idx,
"must be before PCA IO %d model config");
"must be after PCA IO %d model config");
return FM_ERR_INVALID_ARGUMENT;
}
@ -2221,8 +2221,10 @@ static fm_status LoadTlv(fm_byte *tlv)
FM_LOG_EXIT(FM_LOG_CAT_PLATFORM, FM_ERR_NO_MEM);
}
for (idx = 0; idx < hwCfg.numResId; idx++) {
hwCfg.hwResId[idx].xcvrI2cBusSel.ioIdx = UINT_NOT_USED;
hwCfg.hwResId[idx].xcvrI2cBusSel.parentMuxIdx =
UINT_NOT_USED;
hwCfg.hwResId[idx].xcvrStateIo.ioIdx = UINT_NOT_USED;
hwCfg.hwResId[idx].xcvrStateIo.basePin = UINT_NOT_USED;
hwCfg.hwResId[idx].phy.parentMuxIdx = UINT_NOT_USED;
hwCfg.hwResId[idx].vrm.parentMuxIdx = UINT_NOT_USED;
@ -2304,21 +2306,37 @@ static fm_status LoadTlv(fm_byte *tlv)
xcvrIo->u.qsfpPin.modPresN = xcvrIo->basePin +
hwCfg.defQsfpPat.modPresN;
}
else
{
xcvrIo->u.qsfpPin.modPresN = UINT_NOT_USED;
}
if (hwCfg.defQsfpPat.intrN != UINT_NOT_USED)
{
xcvrIo->u.qsfpPin.intrN = xcvrIo->basePin +
hwCfg.defQsfpPat.intrN;
}
else
{
xcvrIo->u.qsfpPin.intrN = UINT_NOT_USED;
}
if (hwCfg.defQsfpPat.lpMode != UINT_NOT_USED)
{
xcvrIo->u.qsfpPin.lpMode = xcvrIo->basePin +
hwCfg.defQsfpPat.lpMode;
}
else
{
xcvrIo->u.qsfpPin.lpMode = UINT_NOT_USED;
}
if (hwCfg.defQsfpPat.resetN != UINT_NOT_USED)
{
xcvrIo->u.qsfpPin.resetN = xcvrIo->basePin +
hwCfg.defQsfpPat.resetN;
}
else
{
xcvrIo->u.qsfpPin.resetN = UINT_NOT_USED;
}
}
break;
case FM_TLV_PLAT_LIB_XCVR_MODABS_PIN:
@ -2825,6 +2843,7 @@ static fm_status LoadConfig(void)
/* Release lib config to free memory */
fmPlatformReleaseLibTlvCfg(swIdx);
fflush(stdout);
return FM_OK;