MDIO/MDC(SMI)接口
转载:http://blog.chinaunix.net/uid-24148050-id-132863.html
The MDIO
interface is a simple, two-wire, serial interface to connect a
management entity and a managed PHY for the purposes of controlling the
PHY and gathering status from the PHY.
The two lines include the
MDC line [Management Data Clock], and the MDIO line [Management Data
Input/Output]. The clock is point-to-point, while the data line is a
bi-directional multi-drop interface.
The data line is Tri-state able and can drive 32 devices.
MDIO接口,MAC与PHY间的管理接口(MII是数据接口),有2根线:时钟线MDC,数据线MDIO(双向)
MDIO工作流程:
* Preamle(PRE) 在没有传输数据的空闲状态时,数据线MDIO处于高阻态(一直为1)。
* Start of Frame(ST) MAC驱动MDIO线,出现一个2bit的开始标识码(01)。
* Operation Code(OP) MAC驱动MDIO线,出现一个2bit数据来标识是读操作(10)还是写操作(01)。
* PHY Address(PHYAD) MAC驱动MDIO线,出现一个5bit数据标识PHY的地址。
* Reg Address(REGAD) MAC驱动MDIO线,出现一个5bitPHY寄存器地址。
* Turnaround(TA) 写操作的话,MAC驱动MDIO线,出现10
读操作的话,MDIO pin of MAC must be put in high-impedance state
在第二个周期,PHY驱动MDIO线,出现0
* Data MDIO串行读出/写入16bit的寄存器数据。
* MDIO恢复成空闲状态,同时MDIO进入高阻状态。
下面是PHY芯片 BCM5461 的一个例子:
2. PowerPC对MDIO的支持
PowerPC操作MDIO时,涉及以下寄存器:
MIIMCFG 配置寄存器
MIIMCOM 命令寄存器
MIIMADD 地址寄存器
MIIMCON 控制寄存器
MIIMSTAT 状态寄存器
MIIMIND 指示寄存器
以MPC8560举例,这些寄存器在CCSR中的位置如下:
2.1 MIIMCFG:配置寄存器
ResetMgmt: 用于重置MDIO模块
MgmtClockSet:时钟设置,是CCB的 2的n次方之一
2.2 MIIMCOM 命令寄存器
ReadCycle: 0->1 触发MDIO读时序
2.3 MIIMADD 地址寄存器
PHYaddr:PHY地址,共5bit,系统最多联31个PHY(地址0为保留)
REGaddr:寄存器地址,共5bit,一个PHY上最多32个寄存器地址(可以使用shadow value技术,访问更多的寄存器)
2.4 MIIMCON 控制寄存器
PHYcontrol:在写流程时,这里存放要写入寄存器的值
2.5 MIIMSTAT 状态寄存器
PHYstatus:读流程时,PHY reg的内容会放到此
2.6 MIIMIND 指示寄存器
NotVal:若置1,表示读流程结束,可以去读MIIMSTAT
Scan: 若置1,表示扫描流程进行中
Busy: 只有置0时,才能进行新的读写流程
3. linux中MDIO的实现
读写PHY寄存器时通过2个函数
phy_read()和phy_write(),
最终调用
int gfar_local_mdio_read(struct gfar_mii *regs, int mii_id, int regnum)
int gfar_local_mdio_write(struct gfar_mii *regs, int mii_id, int regnum, u16 value)
参数regs就是MDIO相关寄存器:
- struct gfar_mii {
- u32 miimcfg; /* 0x.520 - MII Management Config Register */
- u32 miimcom; /* 0x.524 - MII Management Command Register */
- u32 miimadd; /* 0x.528 - MII Management Address Register */
- u32 miimcon; /* 0x.52c - MII Management Control Register */
- u32 miimstat; /* 0x.530 - MII Management Status Register */
- u32 miimind; /* 0x.534 - MII Management Indicator Register */
- };
参数mii_id,就是PHY的id
参数regnum,就是寄存器地址
上代码,简单不解释
- int gfar_local_mdio_read(struct gfar_mii *regs, int mii_id, int regnum)
- {
- u16 value;
- /* Set the PHY address and the register address we want to read */
- gfar_write(®s->miimadd, (mii_id << 8) | regnum);
- /* Clear miimcom, and then initiate a read */
- gfar_write(®s->miimcom, 0);
- gfar_write(®s->miimcom, MII_READ_COMMAND);
- /* Wait for the transaction to finish */
- while (gfar_read(®s->miimind) & (MIIMIND_NOTVALID | MIIMIND_BUSY))
- cpu_relax();
- /* Grab the value of the register from miimstat */
- value = gfar_read(®s->miimstat);
- return value;
- }
- int gfar_local_mdio_write(struct gfar_mii *regs, int mii_id,
- int regnum, u16 value)
- {
- /* Set the PHY address and the register address we want to write */
- gfar_write(®s->miimadd, (mii_id << 8) | regnum);
- /* Write out the value we want */
- gfar_write(®s->miimcon, value);
- /* Wait for the transaction to finish */
- while (gfar_read(®s->miimind) & MIIMIND_BUSY)
- cpu_relax();
- return 0;
- }
MDIO/MDC(SMI)接口的更多相关文章
- MDIO/MDC(SMI)接口-leonwang202
ChinaUnix博客 http://blog.chinaunix.net/uid-24148050-id-132863.html
- SMI接口,SMI帧结构,MDC/MDIO
转载:http://blog.csdn.net/zyboy2000/article/details/7442464 SMI全称是串行管理接口(Serial Management Interface). ...
- (二)再议MII、RMII、GMII接口
概述: MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准.它包括一个数据接口和一个MAC ...
- 61.MII、RMII、GMII接口的详细介绍
概述: MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准.它包括一个数据接口和一个MAC和PHY之间的管 ...
- MII、RMII、GMII接口的详细介绍
转载:http://blog.csdn.net/reille/article/details/6312156 概述: MII (Media Independent Interface(介质无关接口)或 ...
- MII、RMII、GMII接口的详细介绍【转】
转自:https://www.cnblogs.com/geekite/p/5204512.html 概述: MII (Media Independent Interface(介质无关接口)或称为媒体独 ...
- 006 媒体独立接口(MII,Meida Independent Interface)
一.MII接口 MII接口Medium Independent Interface MII(Media Independent Interface)即媒体独立接口,MII接口是MAC与PHY连接的标准 ...
- RGMII,MII,GMI接口
简介 RGMII(Reduced Gigabit Media Independent Interface)是Reduced GMII(吉比特介质独立接口).GMII和RGMII均采用8位数据接口,工作 ...
- MII、GMII、RMII、SGMII、XGMII 接口区别
MII即媒体独立接口,也叫介质无关接口.它是IEEE-802.3定义的以太网行业标准.它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1). 数据接口包括分别用于发送器和接收器的两条独立信 ...
随机推荐
- 在ASM中移动数据文件
实验目的:在ASM存储环境下,要删除一个磁盘组,从而将磁盘组中的数据文件移动到另外一个磁盘组中. 查看数据文件存放的位置: SQL> select file#,name from v$dataf ...
- MVC中CheckBox
一.单个Checkbox 1.View文件 <%= Html.CheckBoxFor(model => model.IsNeverExpired)%> 2.生成的HTML为 < ...
- MFC DLL 资源模块句柄切换[转]
以前写MFC的DLL的时候,总会在自动生成的代码框架里看到提示,需要在每一个输出的函数开始添加上 AFX_MANAGE_STATE(AfxGetStaticModuleState()).一直不明白这样 ...
- Windows10输入法的切换
Alt+Shift 中⇒あ,あ⇒中 Shift 中⇒英,英⇒中 Alt+Caps Lock あ⇒カ,A⇒あ⇒カ Ctrl+Caps Loc ...
- 设计模式系列 1——StaticFactory(静态工厂),AbstractFactory(抽象工厂)
本文出自 代码大湿 代码大湿 本系列持续更新,敬请关注. 1 静态工厂 静态工厂介绍: 静态工厂模式可以实现接口封装隔离的原则.在客户端只知接口而不知实现的时候可以使用静态工厂模式. 源码请点击我 角 ...
- 编译arm64错误记录
响应2月底appstore 64位APP的上线要求,开始编译IOS arm64版本引擎库.编译arm64遇到一些问题,在此记录. 1. 数据类型的错误 __int64 相关,提示error: expe ...
- openstack instance snapshort
从下面的截图 高手应该能够看到openstack基于snapshort的 实例的 备份策略了!!!! 从下面某张截图你也能看到用openstack snapshort备份 也是 不太理想的,首先从“磁 ...
- 利用red5搭建一个简单的流媒体直播系统
http://blog.sina.com.cn/s/blog_51396f890102exmz.html 一.red5安装.设置. 这个过程就不多说了,参见http://blog.csdn.net/l ...
- UVALive 7457 Discrete Logarithm Problem (暴力枚举)
Discrete Logarithm Problem 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/D Description ...
- 生成Base58格式的UUID(Hibernate Base64格式的UUID续)
Base58简介 Base58采用的字符集合为“123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ”,从这不难看出,Base58是纯数 ...