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