GbE: Optionally force master mode for RTL PHY
#1
A while back I stumbled over this patch for u-boot https://patchwork.ozlabs.org/patch/602067/ forcing the RTL80211C/E PHY into master mode to overcome some issues when the PHY is in slave mode.

Maybe this could be a source for the random GbE problems we see here sometimes?

I was just looking at Olimex blog and read the specs for their A64 board, and one of the features reads:


Code:
... * Ethernet Gigabit interface works just in master mode ...

I tried adding the register read-modify-write to the 3.10.x BSP driver but failed, maybe someone with better skills can have a look at it? The patch boils down to:


Code:
/* RTL8211x 1000BASE-T Control Register */ #define MIIM_RTL8211x_CTRL1000T_MSCE (1 << 12); #define MIIM_RTL8211X_CTRL1000T_MASTER (1 << 11); ... unsigned int reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_CTRL1000); /* force manual master/slave configuration */ reg |= MIIM_RTL8211x_CTRL1000T_MSCE; /* force master mode */ reg |= MIIM_RTL8211X_CTRL1000T_MASTER; phy_write(phydev, MDIO_DEVAD_NONE, MII_CTRL1000, reg); ...


One read-modify-write operation....
Come have a chat in the Pine IRC channel >>
#2
(07-25-2016, 06:04 AM)xalius Wrote: A while back I stumbled over this patch for u-boot https://patchwork.ozlabs.org/patch/602067/ forcing the RTL80211C/E PHY into master mode to overcome some issues when the PHY is in slave mode.

Maybe this could be a source for the random GbE problems we see here sometimes?

I was just looking at Olimex blog and read the specs for their A64 board, and one of the features reads:


Code:
... * Ethernet Gigabit interface works just in master mode ...

I tried adding the register read-modify-write to the 3.10.x BSP driver but failed, maybe someone with better skills can have a look at it? The patch boils down to:


Code:
/* RTL8211x 1000BASE-T Control Register */ #define MIIM_RTL8211x_CTRL1000T_MSCE (1 << 12); #define MIIM_RTL8211X_CTRL1000T_MASTER (1 << 11); ... unsigned int reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_CTRL1000); /* force manual master/slave configuration */ reg |= MIIM_RTL8211x_CTRL1000T_MSCE; /* force master mode */ reg |= MIIM_RTL8211X_CTRL1000T_MASTER; phy_write(phydev, MDIO_DEVAD_NONE, MII_CTRL1000, reg); ...


One read-modify-write operation....

This is a good finding, I will ask our Android engineer to check out.


Possibly Related Threads…
Thread Author Replies Views Last Post
  Pine64 in standby mode mont3z 0 2,977 05-28-2016, 09:39 AM
Last Post: mont3z

Forum Jump:


Users browsing this thread: 1 Guest(s)