最近有需求进行phy芯片更改,因此对phy芯片进行了一部分研究配置做个记录,其实主要还是得参考github上的开源kernel,有些人找不到我就告诉你一个路径,其实随便哪家的kernel应该某些驱动都差不多。GitHub - rockchip-toybrick/kernel

boot:

/* RTL8211F PHY Status Register */
#define MIIM_RTL8211F_PHY_STATUS       0x1a
#define MIIM_RTL8211F_AUTONEG_ENABLE   0x1000
#define MIIM_RTL8211F_PHYSTAT_SPEED    0x0030
#define MIIM_RTL8211F_PHYSTAT_GBIT     0x0020
#define MIIM_RTL8211F_PHYSTAT_100      0x0010
#define MIIM_RTL8211F_PHYSTAT_DUPLEX   0x0008
#define MIIM_RTL8211F_PHYSTAT_SPDDONE  0x0800
#define MIIM_RTL8211F_PHYSTAT_LINK     0x0004

#define MIIM_RTL8211F_PAGE_SELECT      0x1f
#define MIIM_RTL8211F_TX_DELAY        0x100
#define MIIM_RTL8211F_LCR        0x10

static int rtl8211f_config(struct phy_device *phydev)
{
    u16 reg;

phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET);

if (phydev->interface == PHY_INTERFACE_MODE_RGMII) {
        /* enable TXDLY */
        phy_write(phydev, MDIO_DEVAD_NONE,
              MIIM_RTL8211F_PAGE_SELECT, 0xd08);
        reg = phy_read(phydev, MDIO_DEVAD_NONE, 0x11);
        reg |= MIIM_RTL8211F_TX_DELAY;
        phy_write(phydev, MDIO_DEVAD_NONE, 0x11, reg);
        /* restore to default page 0 */
        phy_write(phydev, MDIO_DEVAD_NONE,
              MIIM_RTL8211F_PAGE_SELECT, 0x0);
    }

/* Set green LED for Link, yellow LED for Active */
    phy_write(phydev, MDIO_DEVAD_NONE,
          MIIM_RTL8211F_PAGE_SELECT, 0xd04);
    phy_write(phydev, MDIO_DEVAD_NONE, 0x10, 0x617f);
    phy_write(phydev, MDIO_DEVAD_NONE,
          MIIM_RTL8211F_PAGE_SELECT, 0x0);

genphy_config_aneg(phydev);

return 0;
}

static int rtl8211f_parse_status(struct phy_device *phydev)
{
    unsigned int speed;
    unsigned int mii_reg;
    int i = 0;

phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, 0xa43);
    mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PHY_STATUS);

phydev->link = 1;
    while (!(mii_reg & MIIM_RTL8211F_PHYSTAT_LINK)) {
        if (i > PHY_AUTONEGOTIATE_TIMEOUT) {
            puts(" TIMEOUT !\n");
            phydev->link = 0;
            break;
        }

if ((i++ % 1000) == 0)
            putc('.');
        udelay(1000);
        mii_reg = phy_read(phydev, MDIO_DEVAD_NONE,
                   MIIM_RTL8211F_PHY_STATUS);
    }

if (mii_reg & MIIM_RTL8211F_PHYSTAT_DUPLEX)
        phydev->duplex = DUPLEX_FULL;
    else
        phydev->duplex = DUPLEX_HALF;

speed = (mii_reg & MIIM_RTL8211F_PHYSTAT_SPEED);

switch (speed) {
    case MIIM_RTL8211F_PHYSTAT_GBIT:
        phydev->speed = SPEED_1000;
        break;
    case MIIM_RTL8211F_PHYSTAT_100:
        phydev->speed = SPEED_100;
        break;
    default:
        phydev->speed = SPEED_10;
    }

return 0;
}

static int rtl8211f_startup(struct phy_device *phydev)
{
    /* Read the Status (2x to make sure link is right) */
    genphy_update_link(phydev);
    rtl8211f_parse_status(phydev);

return 0;
}

/* Support for RTL8211F PHY */
static struct phy_driver RTL8211F_driver = {
    .name = "RealTek RTL8211F",
    .uid = 0x1cc916,
    .mask = 0xffffff,
    .features = PHY_GBIT_FEATURES,
    .config = &rtl8211f_config,
    .startup = &rtl8211f_startup,
    .shutdown = &genphy_shutdown,
};

更改phy芯片主要涉及mdio地址问题,电压电容问题,目前已解决,后续还根据芯片手册进行了一些微调就没有再补充了,主要是网口灯闪烁有点毛病,也不知道是我们那硬件工程师的问题还是哪的问题没管了凑合用。

realtek phy 8211fs相关配置(phy芯片更改)相关推荐

  1. 以太网交换芯片及PHY处理相关

    以太网交换芯片及PHY处理相关 以太网交换芯片 下图为Microchip公司的一款产品,即就是Ethernet Switch. 请参考:https://www.microchip.com/wwwpro ...

  2. 企业项目学习准备阶段——Rhel6.5版本无图形虚拟机封装过程及相关配置

    本文以本地安装的方式进行介绍 1.打开虚拟机管理器,新建虚拟机 virt-manager 这里注意,大小设置为512M可进行无图形安装 选择第一项 选择[skip] 等待安装完成后reoot,然后登陆 ...

  3. 【Datasheet】PHY KSZ9031千兆网络芯片解读

    1.特性 具有RGMII支持的千兆以太网收发器,单芯片10/100/1000Mbps以太网收发器,适用于IEEE 802.3应用:广泛应用于网络服务器.宽带网关.IPTV.游戏主机等: 工作电压: - ...

  4. Pycharm的相关配置:改字体样式和大小、更改图片背景、更改控制台输出的字体颜色

    文章目录 Pycharm的相关配置:改字体样式和大小.更改图片背景.更改控制台输出的字体颜色 一.pycharm更改字体样式和大小 二.pycharm更改图片背景 三.pycharm更改控制台输出的字 ...

  5. PHY驱动调试之 --- PHY控制器驱动(二)

    1. 前言 内核版本:linux 4.9.225,以freescale为例. 2. 概述 PHY芯片为OSI的最底层-物理层(Physical Layer),通过MII/GMII/RMII/SGMII ...

  6. TIC12400相关配置-笔记

    目录 一. datasheet中的相关介绍 二. SPI相关知识 2.1 基础知识 2.2 TIC12400_SPI相关 三. 相关寄存器配置(部分) 3.1 寄存器功能简述 3.2 测试代码中的相关 ...

  7. Tomcat是什么:Tomcat与Java技、Tomcat与Web应用以及Tomcat基本框架及相关配置

    1.Tomcat是什么        Apache Tomcat是由Apache Software Foundation(ASF)开发的一个开源Java WEB应用服务器. 类似功能的还有:Jetty ...

  8. 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”...

    windows 2008下IIS7 安装ASP.NET 遇到如下错误:  <!--[endif]--> HTTP 错误 500.19 - Internal Server Error 无法访 ...

  9. win7配置计算机失败还原更改,win7配置失败如何处理?win7配置失败还原更改教程...

    win7配置失败如何处理?电脑开机之后,出现"配置windows失败,还原更新,请勿关机"提示,这是怎么回事呢?出现"配置失败还原更改"导致循环无法进入桌面,遇 ...

最新文章

  1. 【Unity3D】 KeyCode 键码
  2. JavaScript 精粹 基础 进阶(4)对象
  3. 梯度下降和随机梯度下降_梯度下降和链链接系统
  4. 《蛋白质女孩》的一句台词
  5. 直方图 帕累托图_如何发现现象背后的关键因素?帕累托图,质量管理的利器...
  6. ie浏览器怎么取消代理浏览器_微软和IE渐行渐远,IE浏览器终将成为回忆
  7. promise 为什么出现
  8. OpenGL入门笔记(六)
  9. 局域网传输文件_WinXP系统电脑局域网传输文件的操作方法
  10. html中半透明效果,CSS半透明效果的属性和场景
  11. RestClientException: Could not extract response: no suitable HttpMessageConverter found for response
  12. 尚学堂马士兵Oracle教程 笔记
  13. 三角形周长最短问题_「初中数学」从三角形周长的最值问题说说解题策略
  14. 学习笔记——Parallel Scavenge和Parallel Old
  15. UCenter 1.6 数据字典
  16. 蓝桥杯——原理图,与非门,或非门
  17. 什么是情商高?说你“情商低”的人,都是在控制你!如何提高情商?情商怎么提高?怎么提高情商 ?不会说话情商低怎么办?
  18. java(Vue+SpringBoot)实现头像上传功能
  19. uniapp 真机调试onReachBottom不生效
  20. pairproject总结和结果

热门文章

  1. python 发包的方法_python requests 三种发包
  2. PTA:7-4 解密英文藏头诗 (15分)
  3. 自学编程大约需要多久的时间。
  4. 全相位算法c语言表达,基于DSP的全相位FFT频率计设计.pdf
  5. pytorch yolov5 onnx推理
  6. 关于Nvidia卡在注册界面的问题
  7. Java Web笔记总结
  8. 汽车多久保养一次最好?
  9. Revit(17)-族-族类型的复制与重命名
  10. 服务器压力测试工具ab