Hi,
We are interfacing 2 66AK2H14 SOC in 1G through their XFI interface, configured as follow by the software :
______________________________________________________________________________________
memset(&pFWCfg, 0, sizeof(pFWCfg));
pFWCfg.enable_autoneg[0] = TRUE;
pFWCfg.advertise_rate[0] = CSL_SERDES_FORCE_1G;
pFWCfg.enable_txpause[0] = FALSE;
pFWCfg.enable_rxpause[0] = FALSE;
pFWCfg.enable_10Gtrain[0] = FALSE;
pFWCfg.enable_fec[0] = FALSE;
pFWCfg.enable_autoneg[1] = TRUE;
pFWCfg.advertise_rate[1] = CSL_SERDES_FORCE_1G;
pFWCfg.enable_txpause[1] = FALSE;
pFWCfg.enable_rxpause[1] = FALSE;
pFWCfg.enable_10Gtrain[1] = FALSE;
pFWCfg.enable_fec[1] = FALSE;
memset(&serdesParams, 0, sizeof(serdesParams));
serdesParams.base_addr = CSL_XGE_SERDES_CFG_REGS;
serdesParams.peripheral_base_addr = (CSL_XGE_CFG_REGS + 0x600);
serdesParams.num_lanes = 0x02; //NIMU_XGE_PORT_NUMBER;
serdesParams.lane_mask = (1<<serdesParams.num_lanes) -1;
CSL_10GeSerdesFirmwareInit
(
CSL_XGE_SERDES_CFG_REGS, //base_addr
&pFWCfg, // *pFWCfg
(uint64_t)0xFFFFF,// 4e20 = Extract from he MCSDK //0xfff, //0x7fffffffffffffff, // uint64_t link_loss_timeout
(uint32_t)0x01, //0x01 historiquement // uint32_t txbclk_enable
(uint32_t)0x02 //NIMU_XGE_PORT_NUMBER uint32_t num_lanes
);
______________________________________________________________________________________
We've verified with a scope that both SOC enter in autonegotiation, and indicate that they are in 1000Base-KX
this picture show the 2 links (RX-TX) connected to each other :
and so, the autoneg end, and the link pass in IDLE mode.
then, when we check the status registers, located at 0x02F0 0114 for link 0 and 0x02F0 0214 for link 1 we can see the following result :
We can read 0x0000 0039 :
indicating that :
- LOCK is OK
- Autoneg is NOT complete
- No error during autoNeg
- Link is UP.
If we check also the registers located @ 0x0231 FFE0 & 0x0231 FFE4 we can read the following values :
- LOSS = 0
- RX_OK = 1
-1G Link = 1
My qurestion is the following:
- While everything seems to be OK, why the autonegotiation_Complete bit does not set to 1 indicating that the link is operationnal?
Regards,
Yohann.