Post Go back to editing

Pair Swapping via GE_MAN_MDI_FLIP_CFG doesn't seem to affect 10/100 connections

Category: Hardware
Product Number: ADIN1300

ADIN1300 data sheet states that setting the GE_MAN_MDI_FLIP_CFG bit of the GE_PHY_BASE_CFG register will flip the analog pairs used on both Gigabit and 10/100 connections.  However setting this bit doesn't appear to have any affect on the bound pairs, and a 10/100 link will still establish on pairs 0/1 and not on pairs 2/3.  What are the requirements for this setting to take affect?

In my test setup, i have the two PHY pairs connected to separate RJ45 connectors, ultimately connected to two switch ports.  I would expect that after setting the GE_MAN_MDI_FLIP_CFG bit, that the connector on pairs 2/3 would establish a link, and the connector on pairs 0/1 would not.

In my test, I execute the following sequence:

1. I discover the PHY on the MDIO bus.

2. I set the GE_MAN_MDI_FLIP_CFG bit in GE_PHY_BASE_CFG (I have tried performing this step before and after the SFT_RST step with no change in behavior)

3. I reset the phy via the SFT_RST bit in MII_CONTROL

4. I enable autonegotiation by writing 0x1e1 to the AUTONEG_ADV and setting the AUTONEG_EN and RESTART_ANEG bits of MII_CONTROL.

5. I observe that whether or not I perform step 2, the connection always established on the connector on pairs 0/1.

  • Hi Peterson,

    After writing to bit 4 in the 0xFF26 GE_PHY_BASE_CFG register, a 1 must be written to 0xFF20 for the MDI Flip to take effect, which is the Sub-System PHY Reset Register. If you this before restarting auto-neg the flip should take effect for you.

     

    Best Regards,

    Mark

  • I gave this a try, but it didn't have the anticipated affect on the ADIN1300.  Setting bit 0 of register 0xFF20 does not auto-reset, and it prevents the ADIN1300 from establishing a link.  The above register does not exist in the ADIN1300 data sheet.  Unsetting the bit manually after setting it seems to put the PHY back in the original configuration without the pairs flipped.

  • Hi Peterson,

    Would you be able to supply read from 0xFF26 before and after you write to it. And also a read from Register 0xFF20 before you perform a write to this register?

    Best Regards,
    Mark