我最近学习了Linux phy驱动程序,我有一些问题需要帮助。
例如:我的以太网phy是Marvell Alaska 88E1548
如何知道内核是否支持此phy?
我在driver/net/phy(https://github.com/torvalds/linux/blob/v4.18/drivers/net/phy/marvell.c)中发现了marvell.c,但没有定义88E1548,这意味着marvell.c不支持88E1548?还是通用驱动器?
如果当前内核不支持88E1548,我如何找到这个phy驱动程序并移植到内核?
谢谢你~
最佳答案
移植PYS的一般步骤是寻找完全或部分相容的现有物理,如http://git.emacinc.com/Linux-Kernel/linux-emac/commit/819ec8e1f349f73bdf65bf33a364538e59007a9a
根据数据表和产品简介(https://www.marvell.com/transceivers/assets/Marvell-Alaska-88E1548-48P-Product-Brief.pdf,https://www.marvell.com/documents/ymlgvtjaejhhxflojtro/),88E1548具有比88E1545更广泛的功能。它结合了88E1543和88E1545的功能,但是寄存器名、通信协议,。。。完全相同。。。
在https://github.com/torvalds/linux/blob/v4.18/drivers/net/phy/marvell.c中,88 e1545被支持,而88 e1543不存在(可能兼容,没有时间在数据表中比较两者)。我不知道88E1548是否与早期的Marvell芯片兼容(我没有时间比较数据表…),88E1548肯定有其他功能。但是在阿拉斯加88E1548的产品简介中提到了完整的软件兼容性(https://www.marvell.com/transceivers/assets/Marvell-Alaska-88E1548-48P-Product-Brief.pdf)。。。
一般来说,要检查linux是否加载了阿拉斯加88E1548的驱动程序,请运行dmesg | grep 'Ethernet driver'
如果有正输出,则88E1548与此驱动程序中列出的某个设备兼容,如果不兼容,则设备尚未完全支持。。。