u-boot-2020.04不支持RTL8201 PHY.

1. Patch

  • https://lists.denx.de/pipermail/u-boot/2020-January/397725.html

  • https://lists.denx.de/pipermail/u-boot/2020-January/397726.html

  • https://elixir.bootlin.com/u-boot/v2021.04/source/drivers/net/phy/realtek.c

2. adapt

添加以下代码到u-boot-2020.04\drivers\net\phy\realtek.c

static int rtl8201f_probe(struct phy_device *phydev)
{printf("probe rtl8201f phy\n");#ifdef CONFIG_RTL8201F_PHY_RMII_TIMINGSphydev->flags |= PHY_RTL8201F_RMII_TIMINGS;
#endifreturn 0;
}/* RealTek RTL8201F */
static int rtl8201f_config(struct phy_device *phydev)
{unsigned int reg;debug("rtl8201f config\n");if (phydev->flags & PHY_RTL8201F_RMII_TIMINGS) {phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, 7);reg = phy_read(phydev, MDIO_DEVAD_NONE, RTL8201F_RMSR);reg &= ~(RMSR_RX_TIMING_MASK | RMSR_TX_TIMING_MASK);/* Set the needed Rx/Tx Timings for proper PHY operation */reg |= (RMSR_RX_TIMING_VAL << RMSR_RX_TIMING_SHIFT)| (RMSR_TX_TIMING_VAL << RMSR_TX_TIMING_SHIFT);phy_write(phydev, MDIO_DEVAD_NONE, RTL8201F_RMSR, reg);phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, 0);}phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, 7);reg = phy_read(phydev, MDIO_DEVAD_NONE, RTL8201F_RMSR);
#ifdef CONFIG_RMII_CLK_INPUT_MODEprintf("RMII clk is input mode\n");reg |= RMII_CLK_DIR_BIT;    // txc input mode
#elseprintf("RMII clk is output mode\n");reg &= ~(RMII_CLK_DIR_BIT); // txc output mode
#endifreg |= (RMII_MODE_BIT); //RMII modephy_write(phydev, MDIO_DEVAD_NONE, RTL8201F_RMSR, reg);phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, 0);genphy_config_aneg(phydev);return 0;
}/* Support for RTL8201F PHY */
static struct phy_driver RTL8201F_driver = {.name = "RealTek RTL8201F 10/100Mbps Ethernet",.uid = 0x1cc816,.mask = 0xffffff,.features = PHY_BASIC_FEATURES,.probe = &rtl8201f_probe,.config = &rtl8201f_config,.startup = &rtl8211e_startup,.shutdown = &genphy_shutdown,
};int phy_realtek_init(void)
{
......phy_register(&RTL8211F_driver);phy_register(&RTL8201F_driver);return 0;
}

uboot: RTL8201 100M PHY驱动代码相关推荐

  1. [I.MX6UL] U-Boot移植(六) 网络驱动修改 LAN8720A(对比原子和NXP官方测试板的网络芯片LAN8720A , KSZ8081 (也是飞凌)唯独复位引脚不同595芯片也涉及改动)

    I.MX6UL/ULL 内部有个以太网 MAC 外设,也就是 ENET,需要外接一个 PHY 芯片来实现网络通信功能,也就是内部MAC+外部 PHY 芯片的方案. I.MX6UL/ULL 有两个网络接 ...

  2. [I.MX6UL] U-Boot移植(六) 网络驱动修改 LAN8720A

    I.MX6UL/ULL 内部有个以太网 MAC 外设,也就是 ENET,需要外接一个 PHY 芯片来实现网络通信功能,也就是内部MAC+外部 PHY 芯片的方案. I.MX6UL/ULL 有两个网络接 ...

  3. uboot移植Linux-SD驱动代码解析

    一.uboot与linux驱动 1.1.uboot本身是裸机程序 (1)狭义的驱动概念是指:操作系统中用来具体操控硬件的代码叫驱动 广义的驱动概念是指:凡是操控硬件的代码都叫驱动 (2)裸机程序中是直 ...

  4. 在U-boot中添加以太网驱动-Nazgul

    当定义CONFIG_CMD_NET和CONFIG_CMD_PING,编译之后执行ping命令,告警没有找到以太网. 因此,需要打开U-boot的网络功能, u-boot-sunxi-sunxi中没有找 ...

  5. phy 驱动与 switch 驱动

    phy 驱动与 switch 驱动 phy 驱动 phy 与 cpu 的硬件连接 一般为 MAC-PHY 模式: ----------- | CPU | RGMII/| ------| MII --- ...

  6. Mstar Mac Phy 驱动学习

    MII.h 和 MII.c 这是MII协议.里面有MII协议的PHY寄存器地址,及MII通信接口库 Linux的mdio主要是为了管理PHY芯片寄存器的,跟踪代码发现,它会进行创建PHY设备及一些初始 ...

  7. 网络驱动->PHY驱动调试

    1. Linux 系统网络协议层架构 网络协议框架图: 网络子系统是 linux 操作系统里很重要的一部分.关于这部分有很多的参考资料.这里主要说明一下 phy 芯片在整个子系统里的位置.从这个结构里 ...

  8. Linux Phy 驱动解析

    文章目录 1. 简介 2. phy_device 2.1 mdio bus 2.2 mdio device 2.3 mdio driver 2.4 poll task 2.4.1 自协商配置 2.4. ...

  9. Linux phy驱动开发总结

    文章目录 基础 须知 数据结构 数据结构UML类图 MAC驱动 初始化简述 驱动实现 关于MAC连接PHY PHY驱动 动态注册 静态注册 通用PHY 参考模板 IP18xx驱动调试 须知: 问题 方 ...

最新文章

  1. AI一分钟 | Facebook或将面临2万亿美元罚款;大疆寻求新一轮融资,估值150亿美元
  2. Desert King POJ - 2728
  3. Cocos2d-x 3.0 简捷的物理引擎
  4. TimeJot – Last Time 改名,新增中文界面、数字属性,还是那个时间线管理神器[Android]
  5. mysql导出可执行文件_实例讲解MYSQL注入中导出可执行文件至启动项原理(三)...
  6. Java并发编程之ConcurrentHashMap原理解析
  7. cyyz: Day 6 平衡树整理
  8. 如何在苹果Mac中设置 Excel 文件打印范围刚好是一页纸?
  9. C++ 实现反射机制(转载)
  10. 项目搭建 windows_08. SpringCloud实战项目-配置Git
  11. 行业如此内卷,品牌如何实现可持续招商增长?
  12. Vue3和Vue2的一些区别
  13. Vue从零开始(2):使用Vue CLI快速生成项目脚手架
  14. 自定义ListVIew添加上下更多项
  15. java 8新特性之effectively final
  16. infor系统日常问题解决笔记
  17. MSM下串口扩展wk2114
  18. pycharm 导包时不小心选择了“Ignore unresolved reference“
  19. win10 家庭版如何能远程桌面控制
  20. ajax异步上传什么意思,使用 jQuery 的 AJAX 异步上传文件

热门文章

  1. 构建负载均衡服务器之一 负载均衡与集群详解
  2. HR数据抽取:通过 Read Master Data 转换规则读取时间相关主属性数据
  3. Java Instanceof
  4. 20071103网工考试
  5. c#endread怎么打印出来_C#编程直接发送打印机命令到打印机及ZPL常用的打印命令详解...
  6. Spring源码 --Idea module 相互引用
  7. mysql平台workb_MySQL:MySQL Workbench的使用
  8. java 日志使用_Java日志正确使用姿势
  9. J - Milking Time POJ - 3616(dp动态规划)
  10. ajax修改按钮的html值,表格行的按钮AJAX后,怎么修改表格当前行的值