We have several IoT boards and to follow the main stream, we also bought a Tower board. We still have a problem with ethernets, mainly eth0.
Preloaded images, that came with the board, has the wrong 0x70 SerDes config.
We made image from the Yocto and then ethernet interfaces work only the u-boot, but not from the Linux.
As previous comments pointed to a wrong RCW setting for the SGMII1 interface, they are right. But this is only the software part placing proper signals onto SerDes lines from the uP. Then these signals should be properly handled in the hardware, i.e. properly MUXed. I checked the CPLD program and I think, when you switch SW3.6 to SGMII1 position, the CPLD does not switch the MUX to SGMII1.
Please check my thoughts:
DIP SW logic is opposite than on the IoT board. On Tower, when DIP SW=ON, resulting signal is log. 1.
SW3.6 =OFF -> MUX_SEL1=0, i.e. SATA -> mux_sata_sgmii1 = 1, i.e. SGMII1a is connected (older board rev, newer boards does not have this MUX).
All other mux sel signals are set by CPLD to log. 1.
Result is lane C=MPCIE2, D=SGMII2. In other words, you have ethernet SGMII, but on PCIE2 wires.
So there is a need for a software to set the CPLD into soft mux mode and seed config into serdes_mux[1]=0.
Maybe I am wrong and in that case, I appreciate some other ideas.
If I am right, I would like to have a software patch or the CPLD patch.