【linux内核】DP83867添加GMII模式支持

修改方案

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的基本模式和状态。

  1. BMCR(Basic Mode Control Register):BMCR寄存器用于控制PHY的基本模式和功能。它包含了一些位字段,用于配置和控制PHY的操作。常见的位字段包括:

    扫描二维码关注公众号,回复: 16587039 查看本文章
    • 使能/禁用:用于启用或禁用PHY的功能。
    • 自动协商:用于启用或禁用PHY的自动协商功能,该功能允许PHY与连接的设备协商最佳的通信速率和双工模式。
    • 速率选择:用于选择PHY的通信速率,如10 Mbps、100 Mbps或1 Gbps。
    • 双工模式:用于选择PHY的通信双工模式,如半双工或全双工。
  2. BMSR(Basic Mode Status Register):BMSR寄存器用于提供PHY的基本模式和状态信息。它包含了一些位字段,用于指示PHY的当前状态和支持的功能。常见的位字段包括:

    • 连接状态:用于指示PHY是否与连接的设备建立了链接。
    • 自动协商完成:用于指示PHY的自动协商功能是否完成,即是否成功协商了最佳的通信速率和双工模式。
    • 速率支持:用于指示PHY支持的通信速率。
    • 双工支持:用于指示PHY支持的通信双工模式。

在这里插入图片描述
寄存器很多,需要用到的时候再进行查找即可。

猜你喜欢

转载自blog.csdn.net/qq_44710568/article/details/132474419