设置8211网口方法并关闭EEE模式

设置8211网口方法并关闭EEE模式

关闭网口EEE模式

问题引出:客户使用8211芯片,网口灯闪烁不正常,但是通信正常

经过排查发现是网口灯进入了一种低功耗EEE模式

EEE模式简介:

RTL8211FS(-VS)以10 Mbps、100 Mbps和1000 Mbps支持IEEE 802.3az-2010,也称为节能以太网(EEE)。它提供了一种协议,用于基于链路利用率协调到或从低功耗级别(低功耗空闲模式)的转换。当不发送数据包时,系统采用低功耗空闲模式以节省功耗。一旦需要传输数据包,系统就会返回正常模式,并在不改变链路状态和不中断/损坏帧的情况下执行此操作。为了节省功耗,当系统处于低功耗空闲模式时,大部分电路都被禁用,但从低功耗空闲模式到或从低功耗空闲模式的过渡时间保持得足够小,以便对上层协议和应用程序透明。

目前一些低端(比如RTL8211)的PHY芯片开启EEE后会出现各种问题,比如链路过若干小时down一次甚至直接不通,LED指示错误,目前解决方法是关掉EEE。

查看8211手册的相应章节

EEE Idle Mode: LED continuous slow blinking. // EeeIdle模式:LED连续缓慢闪烁。

EEE Active Mode: LED fast and slow blinking(on packet transmitting and receiving). // EEE活动模式:引导快速和慢闪烁(在数据包发送和接收)。

下图是LED行为图

查找EEE的Control Register,可以看到页地址是0xd04,块地址为0x11

将其16位置0即可关闭EEE模式

修改方法:

在板级文件里面修改Control Register ,添加如下两行代码

diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c

index b42ef345..ca9b961a 100644

--- a/arch/arm/mach-imx/mach-imx6q.c

+++ b/arch/arm/mach-imx/mach-imx6q.c

@@ -195,7 +195,8 @@ static int rtl8211f_phy_fixup(struct phy_device *dev)

phy_write(dev, 0x11, 0x109);

phy_write(dev, 0x1f, 0xd04);

phy_write(dev, 0x10, 0x2340);

-

+ phy_write(dev, 0x1f, 0xd04); //写入0x1f,切换到对应分页

+ phy_write(dev, 0x11, 0x0); //写0到地址0x11

return 0;

下面是分页寄存器的介绍:

相关灵感

beat365官网下载苹果手机 烀整鸡的做法步骤

烀整鸡的做法步骤

📅 07-30 👁️ 9214
博彩365bet网址导航 CAD绘制:用CAD如何画椅子

CAD绘制:用CAD如何画椅子

📅 08-16 👁️ 3225
beat365官网下载苹果手机 苹果iPod“衰落记”:为何从风靡全球到停产?
beat365官网下载苹果手机 冷知识:瑞典队这么多球星,世界杯最佳战绩是第几名?
博彩365bet网址导航 联通4G与移动4G比较,有什么区别?
beat365官网下载苹果手机 努比亚漫游卡套餐

努比亚漫游卡套餐

📅 07-25 👁️ 4512
365bet365打不开 了解星际战甲中的小明战甲类型,以及新手战甲使用和定位的教程
365bet365打不开 付款后多久能收到发票?

付款后多久能收到发票?

📅 09-03 👁️ 3603
beat365官网下载苹果手机 老物件时代落幕,「猫王收音机」是如何蹿红的?