提交 8b7c1664 编写于 作者: F frederic Rodo 提交者: Jeff Garzik

dm9161: add configuration for MII/RMII

Signed-off-by: NFrederic Rodo <f.rodo@til-technologies.fr>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 dea75bdf
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#define MII_DM9161_SCR 0x10 #define MII_DM9161_SCR 0x10
#define MII_DM9161_SCR_INIT 0x0610 #define MII_DM9161_SCR_INIT 0x0610
#define MII_DM9161_SCR_RMII 0x0100
/* DM9161 Interrupt Register */ /* DM9161 Interrupt Register */
#define MII_DM9161_INTR 0x15 #define MII_DM9161_INTR 0x15
...@@ -103,7 +104,7 @@ static int dm9161_config_aneg(struct phy_device *phydev) ...@@ -103,7 +104,7 @@ static int dm9161_config_aneg(struct phy_device *phydev)
static int dm9161_config_init(struct phy_device *phydev) static int dm9161_config_init(struct phy_device *phydev)
{ {
int err; int err, temp;
/* Isolate the PHY */ /* Isolate the PHY */
err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE); err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE);
...@@ -111,9 +112,19 @@ static int dm9161_config_init(struct phy_device *phydev) ...@@ -111,9 +112,19 @@ static int dm9161_config_init(struct phy_device *phydev)
if (err < 0) if (err < 0)
return err; return err;
/* Do not bypass the scrambler/descrambler */ switch (phydev->interface) {
err = phy_write(phydev, MII_DM9161_SCR, MII_DM9161_SCR_INIT); case PHY_INTERFACE_MODE_MII:
temp = MII_DM9161_SCR_INIT;
break;
case PHY_INTERFACE_MODE_RMII:
temp = MII_DM9161_SCR_INIT | MII_DM9161_SCR_RMII;
break;
default:
return -EINVAL;
}
/* Do not bypass the scrambler/descrambler */
err = phy_write(phydev, MII_DM9161_SCR, temp);
if (err < 0) if (err < 0)
return err; return err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册