mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
phy: add RTBI mode for m88e1111
Signed-off-by: Liu Yu <yu.liu@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
81abb43a24
commit
5f8cbc1322
@ -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;
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user