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

news/2024/12/28 16:22:41/

最近有需求进行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地址问题,电压电容问题,目前已解决,后续还根据芯片手册进行了一些微调就没有再补充了,主要是网口灯闪烁有点毛病,也不知道是我们那硬件工程师的问题还是哪的问题没管了凑合用。


http://www.ppmy.cn/news/121266.html

相关文章

GEC6818 移植 rtl8723bu wifi驱动

文章目录 1. 配置内核2、RTL8723BU 模块驱动编译2.1 下载解压2.2 配置编译 3. openssl 移植3.1 下载解压3.2 配置3.3 编译安装 4. libnl 移植4.1 下载解压4.2 进入源码目录并配置4.3 编译安装 5. wpa_supplicant 移植5.1 解压源码5.2 配置5.3 make编译 6. 启动wifi网卡6.1 配置…

Realtek 2.5G 网卡 RTL8125-CG/RTL8156-CG简介

RealTek推出了单芯片2.5G以太网控制器 2018年5月30日RealTek宣布了一系列2.5G以太网解决方案,涵盖了各种不同的应用需求。这些包括:RTL8125:支持PCIE 2接口用于PC嵌入式应用 RTL8156:提供一个用于外部加密和停靠应用的USB接口 RTL8226&…

显卡用电测试软件,自己动手DIY!教你如何实测显卡电压!

从有DIY的那天起,超频改造就从未停止,毕竟很多人享受DIY,享受的是这个动手的过程,但随着DIY日渐成熟,很多配套设施及软件的完备,许多情况都不用自己动手了。比如现在判定显卡具体电压,基本上可以…

HaaS506-HD1 (RTU) - 硬件介绍

HaaS506-HD1 RTU - 硬件介绍 一、概述二、硬件资料 一、概述 HaaS506-HD1 RTU是煜瑛微电子科技有限公司生产的基于4G-CAT1通信的工业级RTU,这款RTU支持一路485、一路232、2路AI、2路DI、2路继电器接口。支持TCP、HTTP、MQTT等多种网络协议。适用于各种数据采集、传…

MPU-6000(6050)介绍

MPU-6000(6050)简介 MPU-60X0是全球首例9 轴运动处理传感器。它集成了3 轴MEMS陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(DigitalMotion Processor),可用I2C接口连接一个数字…

显卡 电压测试软件,自己动手做!教您如何测量显卡电压!

[中关村湖南IT网报道]自DIY以来,超频从未停止. 毕竟,许喜欢DIY并喜欢这个动手过程. 但是随着DIY的成熟,许多支持工具和软件的完整性使得在很多情况下您都不必自己做. 例如,要确定图形卡的特定电压,基本上可以从系统或B…

详细记录丨Realtek RTL8188FU WiFi 驱动移植

道阻且长,行则将至。埋头苦干,不鸣则已,一鸣惊人!加油,骚年! 1 参考资料 1、芯片数据手册:TL8188FCA.pdf 2、驱动移植手册:Quick_Start_Guide_for_Driver_Compilation_and_Install…

暗黑破坏神:不朽 PC/安卓/iOS版配置一览

暗黑破坏神:不朽作为一部PC移动数据互通的游戏,在发布前就备受大家期待,而最近也公布了具体的发布时间6月2日,那么,暗黑破坏神:不朽的 PC/安卓/iOS版需要什么样的配置呢?一起来看看吧。 暗黑破坏神&#…