Implement Silicom card features #1
1 changed files with 21 additions and 2 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue