On Jan 14, 2010, at 2:13 AM, Liu Yu wrote: > Signed-off-by: Liu Yu <yu....@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? > + err = phy_write(phydev, MII_M1111_PHY_EXT_SR, temp); > + if (err < 0) > + return err; > + > + /* soft reset */ > + err = phy_write(phydev, MII_BMCR, BMCR_RESET); > + if (err < 0) > + return err; > + do > + temp = phy_read(phydev, MII_BMCR); > + while (temp & BMCR_RESET); > + > + 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 |= MII_M1111_HWCFG_MODE_COPPER_RTBI | > MII_M1111_HWCFG_FIBER_COPPER_AUTO; > + err = phy_write(phydev, MII_M1111_PHY_EXT_SR, temp); > + if (err < 0) > + return err; > + } > + > + > err = phy_write(phydev, MII_BMCR, BMCR_RESET); > if (err < 0) > return err; > -- > 1.6.4 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev