自己做了个 D1s + LAN8720 的测试板,25MHz 时钟源来自 PG11(EPHY-25M),RMII 接口用到的数据线及复位脚全都是 PG 口。软件上用的是 Tina2.0 SDK,设备树和内核已按照手册配置好,其他占用了 PG 口的外设都删掉了,用 SD 卡启动系统。先不插网线,使用 ifconfig eth0 up 启动网卡,测量发现 CLKIN 的 25MHz 和 TXCK 的 50MHz 两个频率都可以正常输出,估计硬件设计没问题。
此时的日志:
root@TinaLinux:/# ifconfig eth0 up
libphy: 4500000.eth: probed
sunxi-gmac 4500000.eth eth0: eth0: Type(7) PHY ID 0007c0f1 at 0 IRQ poll (4500000.eth-0:00)
看起来一切正常。插入网线,网口的绿灯亮了,黄灯闪了几下,不到 1 秒就都熄灭,然后寄了。
此时的日志:
root@TinaLinux:/# Generic PHY 4500000.eth-0:00: Master/Slave resolution failed, maybe conflicting manual settings?
------------[ cut here ]------------
WARNING: CPU: 0 PID: 13 at drivers/net/phy/phy.c:716 phy_error+0xe/0x42
Modules linked in:
CPU: 0 PID: 13 Comm: kworker/0:1 Tainted: G W 5.4.61 #30
Workqueue: events_power_efficient phy_state_machine
sepc: ffffffe00028ade6 ra : ffffffe00028b676 sp : ffffffe00394fd90
gp : ffffffe00068c264 tp : ffffffe003930ac0 t0 : ffffffe0006994c8
t1 : 0000000000000001 t2 : 0000000000000000 s0 : ffffffe00394fdb0
s1 : ffffffe002f99000 a0 : ffffffe002f99000 a1 : 000000000000000a
a2 : 00000000000000e2 a3 : ffffffe000638c40 a4 : 0000000000000000
a5 : ffffffe003930ac0 a6 : 0000000000000001 a7 : 0000000000000001
s2 : ffffffe002f99000 s3 : ffffffffffffffbd s4 : 0000000000000000
s5 : 0000000000000000 s6 : 0000000000000005 s7 : ffffffe002f994f0
s8 : 0000000000000001 s9 : 0000000000000402 s10: 0000000000000000
s11: 0000000000000000 t3 : ffffffffffffffff t4 : 0000000000000000
t5 : 0000000000000008 t6 : ffffffe0006960b8
sstatus: 0000000200000120 sbadaddr: 0000000000000000 scause: 0000000000000003
---[ end trace 450cc8d4d24bd3a0 ]---
网上查了好久,国外 I.MX6 的用户碰到过这个问题,说是打了厂家补丁解决的。请问大佬们,全志上这个问题该怎么解决呢?
离线
请问你调出来了吗,我也碰到这个问题,现象一模一样。。。
调出来了,是内核驱动问题,phy驱动无论百兆还是千兆,都去读一个只有千兆口才有的寄存器,然后你要是装的是百兆口就寄了。直接屏蔽,运行正常。
离线