realtek phy 8211fs相关配置(phy芯片更改)
最近有需求进行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芯片更改)相关推荐
- 以太网交换芯片及PHY处理相关
以太网交换芯片及PHY处理相关 以太网交换芯片 下图为Microchip公司的一款产品,即就是Ethernet Switch. 请参考:https://www.microchip.com/wwwpro ...
- 企业项目学习准备阶段——Rhel6.5版本无图形虚拟机封装过程及相关配置
本文以本地安装的方式进行介绍 1.打开虚拟机管理器,新建虚拟机 virt-manager 这里注意,大小设置为512M可进行无图形安装 选择第一项 选择[skip] 等待安装完成后reoot,然后登陆 ...
- 【Datasheet】PHY KSZ9031千兆网络芯片解读
1.特性 具有RGMII支持的千兆以太网收发器,单芯片10/100/1000Mbps以太网收发器,适用于IEEE 802.3应用:广泛应用于网络服务器.宽带网关.IPTV.游戏主机等: 工作电压: - ...
- Pycharm的相关配置:改字体样式和大小、更改图片背景、更改控制台输出的字体颜色
文章目录 Pycharm的相关配置:改字体样式和大小.更改图片背景.更改控制台输出的字体颜色 一.pycharm更改字体样式和大小 二.pycharm更改图片背景 三.pycharm更改控制台输出的字 ...
- PHY驱动调试之 --- PHY控制器驱动(二)
1. 前言 内核版本:linux 4.9.225,以freescale为例. 2. 概述 PHY芯片为OSI的最底层-物理层(Physical Layer),通过MII/GMII/RMII/SGMII ...
- TIC12400相关配置-笔记
目录 一. datasheet中的相关介绍 二. SPI相关知识 2.1 基础知识 2.2 TIC12400_SPI相关 三. 相关寄存器配置(部分) 3.1 寄存器功能简述 3.2 测试代码中的相关 ...
- Tomcat是什么:Tomcat与Java技、Tomcat与Web应用以及Tomcat基本框架及相关配置
1.Tomcat是什么 Apache Tomcat是由Apache Software Foundation(ASF)开发的一个开源Java WEB应用服务器. 类似功能的还有:Jetty ...
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”...
windows 2008下IIS7 安装ASP.NET 遇到如下错误: <!--[endif]--> HTTP 错误 500.19 - Internal Server Error 无法访 ...
- win7配置计算机失败还原更改,win7配置失败如何处理?win7配置失败还原更改教程...
win7配置失败如何处理?电脑开机之后,出现"配置windows失败,还原更新,请勿关机"提示,这是怎么回事呢?出现"配置失败还原更改"导致循环无法进入桌面,遇 ...
最新文章
- 【Unity3D】 KeyCode 键码
- JavaScript 精粹 基础 进阶(4)对象
- 梯度下降和随机梯度下降_梯度下降和链链接系统
- 《蛋白质女孩》的一句台词
- 直方图 帕累托图_如何发现现象背后的关键因素?帕累托图,质量管理的利器...
- ie浏览器怎么取消代理浏览器_微软和IE渐行渐远,IE浏览器终将成为回忆
- promise 为什么出现
- OpenGL入门笔记(六)
- 局域网传输文件_WinXP系统电脑局域网传输文件的操作方法
- html中半透明效果,CSS半透明效果的属性和场景
- RestClientException: Could not extract response: no suitable HttpMessageConverter found for response
- 尚学堂马士兵Oracle教程 笔记
- 三角形周长最短问题_「初中数学」从三角形周长的最值问题说说解题策略
- 学习笔记——Parallel Scavenge和Parallel Old
- UCenter 1.6 数据字典
- 蓝桥杯——原理图,与非门,或非门
- 什么是情商高?说你“情商低”的人,都是在控制你!如何提高情商?情商怎么提高?怎么提高情商 ?不会说话情商低怎么办?
- java(Vue+SpringBoot)实现头像上传功能
- uniapp 真机调试onReachBottom不生效
- pairproject总结和结果