• 正文
  • 相关推荐
申请入驻 产业图谱

以太网使用SGMII(SerDes)的PHY驱动修改

06/22 09:01
1318
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

以太网的PHY和MAC的接口可以使用RGMII,SGMII等类似下图:由于大部分驱动都是RGMII,使用SGMII的时候需要对驱动做对应的修改。芯片可以使用外部引脚进行配置。但是有的时候外部配置的不对,需要通过驱动修正。以YT8521为例看下驱动的修改。通过修改扩展寄存器(0xA001)可以修改相关配置。以下是不带操作系统的驱动相关部分:

/* utp=>rgmii */? ? reg=XXXphy_read_ext(pGmac,PAGE0,?0xa001); ? ?/*?NOTE:?this function should not be called more than one for each chip. */? ? reg &=(~7);;? ??XXXphy_write_ext(pGmac,PAGE0,?0xa001, reg);

一般的可以直接用的驱动都是将其2:0位配置为0,配置为SGMII需要修改这部分。以下是Linux操作系统下的驱动相关部分:

of_property_read_string(of_node,?"phy-connection-type", &ctype);? ??if(ctype && (strcmp(ctype,?"rgmii-id") ==?0))? ? {? ? ? ? val = ytphy_read_ext(phydev,?0xa001);? ? ? ? netdev_info(phydev->attached_dev,?"%s , phy addr: %d, read reg 0xa001 = 0x%xn",? ? ? ? ? ? __func__, phydev->mdio.addr,val);? ? ? ? val &= (~7);? ? ? ? ytphy_write_ext(phydev,?0xa001, val);? ? }? ??else? ? {#if (KERNEL_VERSION(4, 5, 0) > LINUX_VERSION_CODE)? ? ? ? netdev_info(phydev->attached_dev,?"%s , phy addr: %d, phy-connection-type is invalidn",? ? ? ? ? ? __func__, phydev->addr);#else? ? ? ? netdev_info(phydev->attached_dev,?"%s , phy addr: %d, phy-connection-type is invalidn",? ? ? ? ? ? __func__, phydev->mdio.addr);#endif? ? }

它是找名字匹配rgmii-id的,不匹配则不修改。如果要自己修改,需要修改这部分。不使用其他特殊功能的话,修改上述部分,PHY就可以正常运行了。

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录