We connected some switches to the cfg_serdes_ports inputs so that we are able to try different configurations easily.
Although we are not using Ethernet, as an experiment I tried to see if we are able to enable Ethernet.
I set cfg_serdes_ports to 0b11000 (SerDes1 - PCIe1 (x2), PCIe2 (x2); SerDes2 - PCIe3 (x2) ), at power-up, PORDEVSR has value - 0x1960_0040 - both SGMII1 and SGMII2 are disabled. DEVDISR has value - 0x260C_3011, which means TSEC1 and TSEC2 – the Ethernet controllers are enabled.
If I set cfg_serdes_ports to 00011 (SerDes1 – powered down; SerDes2: SGMII1, SGMII2), after power up, PORDEVSR has a value of 0x010C_0040, which means SGMII1 and SGMII2 are both enabled. DEVDISR comes up with a value of 0x260C_30D1, which means TSEC1 and TSEC2 – the Ethernet controllers are both disabled.
If I set cfg_serdes_ports to 00100 (SerDes1 – powered down; SerDes2 – powered down), after power up, PORDEVSR has a value of 0x1910_0040, which means SGMII1 and SGMII2 are both disabled, which is expected. DEVDISR comes up with a value of 0x260C_3011, which means TSEC1 and TSEC2 – the Ethernet controllers are both enabled.
So it seems something about SerDes may be preventing Ethernet (and PCIe?) from being enabled...