文章目录
- 修改方案
- 前期知识
- 为什么这么修改?
- 通用寄存器
修改方案
linux 4.0内核下/drivers/net/phy/dp83867.c
phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val);
}
+ if (phydev->interface == PHY_INTERFACE_MODE_GMII)
+ {
+ val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_RGMIICTL);
+ val &= ~0x80;
+ phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RGMIICTL, val);
+ }
if (phy_interface_is_rgmii(phydev)) {
val = phy_read(phydev, MII_DP83867_PHYCTRL);
if (val < 0)
前期知识
DP83867
是一款以太网物理层收发器(PHY)芯片。它由德州仪器(Texas Instruments)生产,广泛用于工业自动化、网络通信和嵌入式系统等领域。
DP83867
支持以太网速率达到10 Mbps、100 Mbps和1 Gbps,符合IEEE 802.3标准。它采用了先进的数字信号处理技术,具有优异的抗干扰性能和噪声抑制能力,可以在恶劣的工业环境下稳定运行。
该芯片支持多种接口,包括MII(介质独立接口)、RMII(减少MII接口)和RGMII(减少GMII接口)。它还提供了丰富的功能和配置选项,如自适应等速率、自动协商、远程电源管理和诊断功能等,以满足不同应用的需求。
DP83867
还具有低功耗特性,通过优化电源管理和睡眠模式,可以降低系统能耗并延长电池寿命。它还支持诊断和故障检测功能,有助于快速定位和解决网络问题。
总的来说,DP83867是一款高性能、可靠性强的以太网物理层收发器芯片,适用于各种工业和嵌入式网络应用。
为什么这么修改?
disable RGMII 后就是GMII接口。
DP83867数据手册
从8.6 register maps开始看寄存器就可以
通用寄存器
BMCR(Basic Mode Control Register)
和 BMSR(Basic Mode Status Register)
是与以太网物理层收发器(PHY)相关的寄存器,用于控制和监测PHY的基本模式和状态。
-
BMCR(Basic Mode Control Register):BMCR寄存器用于控制PHY的基本模式和功能。它包含了一些位字段,用于配置和控制PHY的操作。常见的位字段包括:
- 使能/禁用:用于启用或禁用PHY的功能。
- 自动协商:用于启用或禁用PHY的自动协商功能,该功能允许PHY与连接的设备协商最佳的通信速率和双工模式。
- 速率选择:用于选择PHY的通信速率,如10 Mbps、100 Mbps或1 Gbps。
- 双工模式:用于选择PHY的通信双工模式,如半双工或全双工。
-
BMSR(Basic Mode Status Register):BMSR寄存器用于提供PHY的基本模式和状态信息。它包含了一些位字段,用于指示PHY的当前状态和支持的功能。常见的位字段包括:
- 连接状态:用于指示PHY是否与连接的设备建立了链接。
- 自动协商完成:用于指示PHY的自动协商功能是否完成,即是否成功协商了最佳的通信速率和双工模式。
- 速率支持:用于指示PHY支持的通信速率。
- 双工支持:用于指示PHY支持的通信双工模式。
寄存器很多,需要用到的时候再进行查找即可。