- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交换芯片BCM53118如何简单设置某个寄存器
交换芯片BCM53118如何简单设置某个寄存器
PHY管理接口(MDIO)
对吉比特以太网而言,串行通信总线称为管理数据输入输出 MDIO 。该总线由IEEE通过以太网标准IEEE 802.3的若干条款加以定义。MDIO是一种简单的双线串行接口,将管理器件 如MAC控制器、微处理器 与具备管理功能的收发器 如多端口吉比特以太网收发器或 10GbE XAUI收发器 相连接,从而控制收发器并从收发器收集状态信息。可收集的信息包括链接状态、传输速度与选择、断电、低功率休眠状态、TX/RX模式选择、自动协商控制、环回模式控制等。除了拥有 IEEE 要求的功能之外,收发器厂商还可添加更多的信息收集功能。
MDC是管理数据的时钟输入,最高速率可达8.3MHz。MDIO是管理数据的输入输出双向接口,数据是与MDC时钟同步的。MDIO的工作流程为:
MDIO接口在没有传输数据的空闲状态(IDLE)数据线MDIO处于高阻态。
MDIO出现一个2bit的开始标识码 01 一个读/写操作开始。
MDIO出现一个2bit数据来标识是读操作 10 还是写操作 01 。
MDIO出现一个5bit数据标识PHY的地址。
MDIO出现一个5bitPHY寄存器地址。
MDIO需要2个时钟的访问时间。
MDIO串行读出/写入16bit的寄存器数据。
MDIO恢复成IDLE状态,同时MDIO进入高阻状态。
通过MDIO接口访问。
?2009/08/31:找到了针对硬件平台的MDIO接口访问函数,直接调用即可。
不过遇到了一个编译的错误:relocation?truncated?to?fit?:?R_MIPS_,查找了半天,才发现内核代码里MDIO的访问函数声明是static,当然外部不能访问了。把static去掉顺利编译通过。
谢谢同事的耐心讲解。
#define BCM53XX_PHY_ADDR???0x1E #define BCM53XX_REG_MII_PAGE??0x10???#define BCM53XX_REG_MII_ADDR??0x11???#define BCM53XX_REG_MII_DATA0??0x18???#define BCM53XX_REG_MII_DATA1??0x19#define BCM53XX_REG_MII_DATA2??0x1a#define BCM53XX_REG_MII_DATA3??0x1b#define BCM53XX_REG_MII_PAGE_ENABLE??1#define BCM53XX_REG_MII_ADDR_WRITE??1#define BCM53XX_REG_MII_ADDR_READ??2
int bcm53XX_reg struct net_device *dev, __u8 page, __u8 reg, __u8 op int i 100; mdio_write dev, BCM53XX_PHY_ADDR, BCM53XX_REG_MII_PAGE,?? page 8 | BCM53XX_REG_MII_PAGE_ENABLE ; mdio_write dev, BCM53XX_PHY_ADDR, BCM53XX_REG_MII_ADDR,?? reg 8 | op ; while i-- if mdio_read dev, BCM53XX_PHY_ADDR, BCM53XX_REG_MII_ADDR 3 0 return 0; return 0;
int bcm53xx_reg_write64 struct net_device *dev, __u8 page, __u8 reg, uint64_t value mdio_write dev, BCM53XX_PHY_ADDR, BCM53XX_REG_MII_DATA0, int value 0xffff ;??mdio_write dev, BCM53XX_PHY_ADDR, BCM53XX_REG_MII_DATA1, int value 16 0xffff ;??mdio_write dev, BCM53XX_PHY_ADDR, BCM53XX_REG_MII_DATA2, int value 32 0xffff ;??mdio_write dev, BCM53XX_PHY_ADDR, BCM53XX_REG_MII_DATA3, int value 48 0xffff ; if bcm53xx_reg dev, page, reg, BCM53XX_REG_MII_ADDR_WRITE return -1;
文档评论(0)