RE: [PATCH 4/4] phy: add RTBI mode for m88e1111
From: Liu Yu-B13201 <hidden>
Date: 2010-01-15 02:49:46
Also in:
linuxppc-dev
-----Original Message----- From: Kumar Gala [mailto:galak@kernel.crashing.org] Sent: Friday, January 15, 2010 12:20 AM To: Liu Yu-B13201 Cc: davem@davemloft.net; linuxppc-dev@lists.ozlabs.org; netdev@vger.kernel.org Subject: Re: [PATCH 4/4] phy: add RTBI mode for m88e1111 On Jan 14, 2010, at 2:13 AM, Liu Yu wrote:quoted
Signed-off-by: Liu Yu <redacted> --- drivers/net/phy/marvell.c | 38++++++++++++++++++++++++++++++++++++++quoted
1 files changed, 38 insertions(+), 0 deletions(-)diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c index 6f69b9b..65ed385 100644 --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c@@ -63,6 +63,7 @@#define MII_M1111_HWCFG_MODE_COPPER_RGMII 0xb #define MII_M1111_HWCFG_MODE_FIBER_RGMII 0x3 #define MII_M1111_HWCFG_MODE_SGMII_NO_CLK 0x4 +#define MII_M1111_HWCFG_MODE_COPPER_RTBI 0x9 #define MII_M1111_HWCFG_FIBER_COPPER_AUTO 0x8000 #define MII_M1111_HWCFG_FIBER_COPPER_RES 0x2000@@ -269,6 +270,43 @@ static int m88e1111_config_init(structphy_device *phydev)quoted
return err; } + if (phydev->interface == PHY_INTERFACE_MODE_RTBI) { + temp = phy_read(phydev, MII_M1111_PHY_EXT_CR); + if (temp < 0) + return temp; + temp |= (MII_M1111_RX_DELAY | MII_M1111_TX_DELAY); + err = phy_write(phydev, MII_M1111_PHY_EXT_CR, temp); + if (err < 0) + return err; + + temp = phy_read(phydev, MII_M1111_PHY_EXT_SR); + if (temp < 0) + return temp; + temp &= ~(MII_M1111_HWCFG_MODE_MASK |MII_M1111_HWCFG_FIBER_COPPER_RES);quoted
+ temp |= 0x7 | MII_M1111_HWCFG_FIBER_COPPER_AUTO;Does this magic 0x7 have some meaning?
Hrr... it's GMII to fibre mode. Document 88E1111_erata_RevB2 chapter 4.35 describ the reason. Without this sometimes phys couldnot work.