phy-MDC时钟修改

文章讨论了在更换电平转换芯片后通信未成功的问题,可能的原因是芯片在开漏模式下的速度限制。为解决问题,建议将内核PHY的MDC时钟降低到2M以下,并将PHY的复位时间延长到30MS。文中详细说明了如何在IMX6QDL平台的设备树中修改ENET_MSCR寄存器的值来调整MDC时钟,并确认了相关驱动代码的匹配性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题分析:我们这边更换一种电平转换芯片,还是没调通。可能一个原因是这个芯片在开漏模式下速速最高到2M有关,您那边能帮忙协调一下,把内核PHY的MDC时钟改为2M以下,另把PHY的复位时间由现在的13MS左右调整到30MS左右我们试一下

在imx6qdl.dtsi中有

#include <dt-bindings/clock/imx6qdl-clock.h>

在dt-bindings/clock/imx6qdl-clock.h中定义了各种时钟,用到什么时钟只需写入对应宏即可
在这里插入图片描述
IMX6QDL_CLK_ENET_REF 190
IMX6QDL_CLK_ENET 117
内存映射后的绝对地址
在这里插入图片描述
从Memory Maps 里面找到ENET的地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对应起来了
搜索MDC时钟,计算公式如下:
在这里插入图片描述
可以看到给的是25M时钟
在这里插入图片描述
在这里插入图片描述
所以ENET_MSCR寄存器的6-1应该写为15 10101 算得MDC为1.5M左右

原值为:0xd 1101 2.5M
改为: 0x15 10101 1.5M
ENET_MSCR=0x2A

drivers/net/ethernet/freescale/fec_main.c 中
在这里插入图片描述
在这里插入图片描述
都对上了,修改完成

這是目前的nvethernet.ko (ether_linux.c) 我使用RTL8211F,RGMII Phy 並且設定了Device tree、GPIO、Pinmux 但目前有個狀況,只要我設定MDIO ENABLE (nvidia,enable-input = <TEGRA_PIN_ENABLE>;) 就會導致開機時,無法進入系統 我嘗試移除nveth這個driver,雖然可以進入系統,但是並沒有產生eth0,所以此driver是必要存在的 請幫我檢查為啥MDIO設定成ENABLE,就會導致我的RTL8211F Phy出問題 DTS: eth0:ethernet@2310000 { status = "okay"; phy-mode = "rgmii-id"; phy-handle = <&phy>; nvidia,mac-addr-idx = <0>; nvidia,max-platform-mtu = <16383>; nvidia,pause_frames = <1>; nvidia,phy-reset-gpio = <&gpio TEGRA234_MAIN_GPIO(G, 5) 0>; mdio { compatible = "nvidia,eqos-mdio"; #address-cells = <1>; #size-cells = <0>; phy: phy@1 { reg = <1>; nvidia,phy-rst-pdelay-msec = <224>; /* msec */ nvidia,phy-rst-duration-usec = <10000>; /* usec */ interrupt-parent = <&gpio>; interrupts = <TEGRA234_MAIN_GPIO(G, 4) IRQ_TYPE_LEVEL_LOW>; }; }; }; nvpps { status = "okay"; compatible = "nvidia,tegra234-nvpps"; primary-emac = <&eth0>; sec-emac = <&eth0>; reg = <0x0 0xc6a0000 0x0 0x1000>; }; GPIO: gpio_main_default: default { gpio-input = < TEGRA234_MAIN_GPIO(G, 4) >; gpio-output-high = < TEGRA234_MAIN_GPIO(G, 5) >; }; Pinmux: (Tx、Rx、MDC/MDIO、Reset、Interrupt) eqos_txc_pe0 { nvidia,pins = "eqos_txc_pe0"; nvidia,function = "eqos"; nvidia,pull = <TEGRA_PIN_PULL_NONE>; nvidia,tristate = <TEGRA_PIN_DISABLE>; nvidia,enable-input = <TEGRA_PIN_DISABLE>; }; eqos_td0_pe1 { nvidia,pins = "eqos_td0_pe1"; nvidia,function = "eqos"; nvidia,pull = <TEGRA_PIN_PULL_NONE>; nvidia,tristate = <TEGRA_PIN_DISABLE>; nvidia,enable-input = <TEGRA_PIN_DISABLE>; }; eqos_td1_pe2 { nvidia,pins = "eqos_td1_pe2"; nvidia,function = "eqos"; nvidia,pull = <TEGRA_PIN_PULL_NONE>; nvidia,tristate = <TEGRA_PIN_DISABLE>; nvidia,enable-input = <TEGRA_PIN_DISABLE>; }; eqos_td2_pe3 { nvidia,pins = "eqos_td2_pe3"; nvidia,function = "eqos"; nv
最新发布
04-02
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极……星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值