zynq平台 Linux系统 phy 88e1512驱动配置
88e1512和88e1510是一个系列的phy,采用marvell的通用phy驱动,驱动源码路径:\u-boot\drivers\net\phy\marvell.c
如上图所示,ETH2的工作模式为RGMII TO SGMII,SGMII与交换芯片bcm5396相连。设备树配置为RGMII模式,如下:
&gem0 {status = "okay";phy-mode = "rgmii-id";phy-handle = <ðernet_phy0>;ethernet_phy0: ethernet-phy@0 {reg = <0>;device_type = "ethernet-phy";};
};
查看芯片手册Page 18 – Register 20,配置工作模式为RGMII (System mode) to SGMII (Media mode)。
读写88e1512寄存器,先将要操作的Page number写入Register 22,再配置相应的寄存器。
88e1512驱动配置步骤:
- 配置工作模式为100,RGMII (System mode) to SGMII (Media mode)。
- 所有寄存器配置完成后,将Page Address配置为1,PHY切换至Fiber Page,否则MAC获取的是PHY的Copper Page的link状态,无法获取到Fiber Page的link状态。
- 关闭自协商,强制link为千兆全双工
static int m88e1518_config(struct phy_device *phydev) {u16 reg;int temp_addr;/** As per Marvell Release Notes - Alaska 88E1510/88E1518/88E1512* /88E1514 Rev A0, Errata Section 3.1*//* EEE initialization */phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1118_PHY_PAGE, 0x00ff);phy_write(phydev, MDIO_DEVAD_NONE, 17, 0x214B);phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2144);phy_write(phydev, MDIO_DEVAD_NONE, 17, 0x0C28);phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2146);phy_write(phydev, MDIO_DEVAD_NONE, 17, 0xB233);phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x214D);phy_write(phydev, MDIO_DEVAD_NONE, 17, 0xCC0C);phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2159);phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1118_PHY_PAGE, 0x0000);/* SGMII-to-Copper mode initialization */if (phydev->interface == PHY_INTERFACE_MODE_SGMII ||phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {/* Select page 18 */phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1118_PHY_PAGE, 18);/* In reg 20, write MODE[2:0] = 0x1 (SGMII to Copper) */if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {m88e1518_phy_writebits(phydev, MIIM_88E151x_GENERAL_CTRL,0, 3, MIIM_88E151x_MODE_SGMII);} else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {/* In reg 20, write MODE[2:0] = 0x4 (RGMII to SGMII) */m88e1518_phy_writebits(phydev, MIIM_88E151x_GENERAL_CTRL,0, 3, MII_88E151x_MODE_RGMII_TO_SGMII);}/* PHY reset is necessary after changing MODE[2:0] */m88e1518_phy_writebits(phydev, MIIM_88E151x_GENERAL_CTRL,MIIM_88E151x_RESET_OFFS, 1, 1);/* Reset page selection */phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1118_PHY_PAGE, 0);udelay(100);}if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {reg = phy_read(phydev, MDIO_DEVAD_NONE,MIIM_88E1111_PHY_EXT_SR);reg &= ~(MIIM_88E1111_HWCFG_MODE_MASK);reg |= MIIM_88E1111_HWCFG_MODE_SGMII_NO_CLK;reg |= MIIM_88E1111_HWCFG_FIBER_COPPER_AUTO;phy_write(phydev, MDIO_DEVAD_NONE,MIIM_88E1111_PHY_EXT_SR, reg);}if (phy_interface_is_rgmii(phydev)) {phy_write(phydev, MDIO_DEVAD_NONE, MII_MARVELL_PHY_PAGE, 2);reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_88E151x_PHY_MSCR);reg &= ~MIIM_88E151x_RGMII_RXTX_DELAY;if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID)reg |= MIIM_88E151x_RGMII_RXTX_DELAY;else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID)reg |= MIIM_88E151x_RGMII_RX_DELAY;else if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)reg |= MIIM_88E151x_RGMII_TX_DELAY;phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E151x_PHY_MSCR, reg);phy_write(phydev, MDIO_DEVAD_NONE, MII_MARVELL_PHY_PAGE, 0);}phy_write(phydev, MDIO_DEVAD_NONE, MII_MARVELL_PHY_PAGE, MII_MARVELL_FIBER_PAGE);phydev->autoneg = AUTONEG_DISABLE;phydev->speed = SPEED_1000;phydev->duplex = DUPLEX_FULL;puts("phy_interface_is_rgmii out!!!!!!!!\n");/* soft reset */phy_reset(phydev);genphy_config_aneg(phydev);//genphy_restart_aneg(phydev);return 0; }
zynq平台 Linux系统 phy 88e1512驱动配置相关推荐
- linux网卡驱动离线安装_新装Linux系统没有网卡驱动的解决办法和步骤
刚安装的linux系统没有网卡驱动,下面给出我的解决方法: (机器系统是RHEL5.3) 首先说明几个命令: #lsmod --显示已载入系统的模块. 执行lsmod指令,会列出所有已载入系统的模块. ...
- 赛灵思运行linux,Zynq下linux系统搭建
文章来源:AI加速微信公众号(微信号:AIspeedup) Zynq器件将arm和FPGA结合,利用了两者各自的优势,arm可以实现灵活的控制,而FPGA部分可以实现算法加速,这大大扩展了zynq的应 ...
- 低配置系统安装 linux,Linux系统的安装和配置
Linux系统的安装和配置 更新时间:2006年10月24日 00:00:00 作者: Linux,在今天的广大电脑玩家耳中已经不再是那个曾经陌生又遥远的名字,大家提起Linux时,不再是把它当做 ...
- zynq linux环境移植,ZYNQ 7030 Linux 系统移植
ZYNQ 7030 Linux系统移植 手上有一块 ZYNQ-7030的演示板,是仿照Xilinx Zedboard设计的,但是与Zedboard又有所不同,因此花时间移植一下Linux系统.记录下这 ...
- Linux系统下adb驱动安装步骤 及 问题总结
Linux系统下adb驱动安装步骤 及 问题总结 一.安装ADB工具 sudo apt-get update sudo apt-get install android-tools-adb 二.adb驱 ...
- linux 键盘驱动下载,嵌入式Linux系统的键盘驱动实现
嵌入式Linux系统的键盘驱动实现1引言 Linux由于其具有内核强大且稳定,易于扩展和裁减,丰富的硬件支持等诸多优点,在嵌入式系统中得到了广泛的应用.很多嵌入式Linux系统,特别是一些具有与用户强 ...
- 嵌入式Linux系统中打印机驱动的移植
一.开发环境 硬件环境:DM365 打印机型号:HP P1007 虚拟机系统:Red Hat Enterprise Linux 5 交叉编译环境:Ti交叉编译环境安装包 二.详细步骤 1.下载Ghos ...
- Linux系统中FTP的配置(图文详解-全)
Linux系统中FTP的配置 二. 把安全级别调低 #vi /etc/selinux/config 注意:在RHEL4三.FTP软件包 #mount /d ...
- Linux系统的目录绑定配置
Linux系统的目录绑定配置 一.源目录与目标目录情况 1.源目录文件及inode 2.目标目录的文件及inode 二.将两个目录进行绑定 1.moun --bind进行绑定 2.检查绑定后的两个目录 ...
最新文章
- HDLBits 系列(35)Lemmings Game
- 太原益学领军2021年高考成绩查询,益学领军 | 2020寒假高三拼命班火爆进行中
- Java instanceof 关键字【复习】
- android rfid 数据解析_手持机是什么?RFID手持机是什么?
- Python机器学习笔记:XgBoost算法(亲测)
- 使用JAXB将XML Schema绑定到Java类
- [Java基础]模块化概述
- get和post的联系与区别
- 【python】面向对象类的继承
- 3.4.1 - Numeric Types
- Unix环境下的编程,所涉及的主要c语言知识
- hdu 1007 Quoit Design(最近点对)
- XML参考 :XmlReader 详解、实例(3)-- 读取XML节点和属性名称
- SpringBoot 中 get/post 请求处理方式,以及requestboy为Json时的处理
- 如何改计算机二级照片大小,怎么修改照片大小内存,尺寸
- 极坐标格式下的二维傅里叶变换与逆变换推导
- webpack4打包js
- BZOJ1750: [Usaco2005 qua]Apple Catching
- java groovy集成_java与Groovy的整合
- ArcGIS 制图搭配:文字、比例尺等大小