[PATCH 4/4] phy: add RTBI mode for m88e1111
Liu Yu-B13201
B13201 at freescale.com
Fri Jan 15 13:49:37 EST 2010
> -----Original Message-----
> From: Kumar Gala [mailto:galak at kernel.crashing.org]
> Sent: Friday, January 15, 2010 12:20 AM
> To: Liu Yu-B13201
> Cc: davem at davemloft.net; linuxppc-dev at lists.ozlabs.org;
> netdev at 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:
>
> > Signed-off-by: Liu Yu <yu.liu at freescale.com>
> > ---
> > drivers/net/phy/marvell.c | 38
> ++++++++++++++++++++++++++++++++++++++
> > 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(struct
> phy_device *phydev)
> > 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);
> > + 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.
More information about the Linuxppc-dev
mailing list