1 Star 0 Fork 8

zxk / rk-ethernet

forked from byxlk / rk-ethernet 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
disable_eee_4.4.diff 1.98 KB
一键复制 编辑 原始数据 按行查看 历史
iamgeeklike 提交于 2020-04-07 10:57 . Add files via upload
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 22748ea..70e8f90 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -124,6 +124,7 @@ static void stmmac_exit_fs(struct net_device *dev);
#define STMMAC_COAL_TIMER(x) (jiffies + usecs_to_jiffies(x))
+static int phy_disable_eee(struct phy_device *phydev);
/**
* stmmac_verify_args - verify the driver parameters.
* Description: it checks the driver parameters and set a default in case of
@@ -873,6 +874,7 @@ static int stmmac_init_phy(struct net_device *dev)
" Link = %d\n", dev->name, phydev->phy_id, phydev->link);
priv->phydev = phydev;
+ phy_disable_eee(phydev);
return 0;
}
@@ -2834,6 +2836,39 @@ static int stmmac_hw_init(struct stmmac_priv *priv)
return 0;
}
+static int phy_disable_eee(struct phy_device *phydev)
+{
+ if (phydev->phy_id == 0x001cc816) { // rtl8201
+ printk("%s in\n", __func__);
+ phy_write(phydev, 31, 0x0004);
+ mdelay(10);
+ phy_write(phydev, 16, 0x4077);
+ phy_write(phydev, 31, 0x0000);
+ phy_write(phydev, 13, 0x0007);
+ phy_write(phydev, 14, 0x003C);
+ phy_write(phydev, 13, 0x4007);
+ phy_write(phydev, 14, 0x0000);
+ phy_write(phydev, 0, 0x1200);
+ } else if (phydev->phy_id == 0x001cc915) { // rtl8211e
+ printk("%s in\n", __func__);
+ phy_write(phydev, 31, 0x0000);
+ phy_write(phydev, 0, 0x8000);
+ mdelay(20);
+ phy_write(phydev, 31, 0x0a4b);
+ phy_write(phydev, 17, 0x1110);
+ phy_write(phydev, 31, 0x0000);
+ phy_write(phydev, 13, 0x0007);
+ phy_write(phydev, 14, 0x003c);
+ phy_write(phydev, 13, 0x4007);
+ phy_write(phydev, 14, 0x0000);
+ }
+
+ return 0;
+}
+
+
+
+
/**
* stmmac_dvr_probe
* @device: device pointer
@@ -3151,6 +3186,8 @@ int stmmac_resume(struct device *dev)
if (priv->phydev)
phy_start(priv->phydev);
+ phy_disable_eee(priv->phydev);
+
return 0;
}
EXPORT_SYMBOL_GPL(stmmac_resume);
1
https://gitee.com/feixuezhang/rk-ethernet.git
git@gitee.com:feixuezhang/rk-ethernet.git
feixuezhang
rk-ethernet
rk-ethernet
master

搜索帮助