Hi Sebastian,
The protocol used on our board is 54, which is "3,3,4,4" (RCW SRDS_PRTCL_S1_LN0 to SRDS_PRTCL_S1_LN3).
+============+==========+=================+
| Lane | SGn/QSGx | MAC |
+============+==========+=================+
| lane 0 (D) | SG2 | MAC 2 |
| lane 1 (C) | SG1 | MAC 1 |
| lane 2 (B) | QSGb | MAC 7 to MAC 10 |
| lane 3 (A) | QSGa | MAC 3 to MAC 6 |
+============+==========+=================+
We created U-Boot scripts to dump SerDes and PHY registers. These little scripts were themselves created from a spreadsheet that contained the register definitions.
The scripts and the results/output are in the attached serdes-phy-steps-logs.txt. I also attached SerDes.pdf, which contains a human-readable view of the SerDes and PHY settings when SerDes and PHY were not talking on the SerDes interface.
Looking at SerDes.pdf, Link status of PHY Mode Status register is 1 (up). SerDes signal detect of PHY MAC SerDes status is 0 (SerDes signal detection did not occur). This indicates that 10xxBASE-T interface was up (cable connected) but SerDes SGMII was down between PHY and the processor.
To fix our issue, we modified MAC SerDes autonegotiation enable of PHY MAC SerDes PCS Control 16E3 register to 1 (MAC SerDes ANEG enabled.) We did not dump the registers in this case. Testing proved that the board Ethernet was working in Linux after boot.
Thanks and best regards,
Samir