我试图激活Linux phyless以太网驱动程序。网上没有太多的信息。我正在使用基于ARM的Linux内核SOC连接到1GBPS RGMII端口,而没有真正的PHY。来了解Linux有固定的phy支持。一些文件使用了fixed_phy_add函数。但是仍然不清楚如何激活。任何形式的帮助或指针在这里都会有帮助。如何激活phyless linux以太网驱动程序
1
A
回答
1
是的。我刚刚为我们的董事会做了这件事。真正让我困惑的是,在固定的mdio总线被激活之前,你需要添加固定的phy。因此,无论您是需要在平台初始化代码中尽早添加它,还是像我一样将它添加到固定的mdio代码中(当然,这只是为了让事情有效)。这个补丁为我做了。
diff --git a/drivers/net/phy/fixed.c b/drivers/net/phy/fixed.c
index ba55adf..7013ef0 100644
--- a/drivers/net/phy/fixed.c
+++ b/drivers/net/phy/fixed.c
@@ -203,11 +203,24 @@ err_regs:
}
EXPORT_SYMBOL_GPL(fixed_phy_add);
+static struct fixed_phy_status fixed_phy_status = {
+ .link = 1,
+ .speed = 100,
+ .duplex = 0,
+};
+
static int __init fixed_mdio_bus_init(void)
{
struct fixed_mdio_bus *fmb = &platform_fmb;
int ret;
+ ret = fixed_phy_add(PHY_POLL, 0, &fixed_phy_status);
+ if (ret < 0)
+ {
+ pr_err("could not add fixed phy.\n");
+ return ret;
+ }
+
pdev = platform_device_register_simple("Fixed MDIO bus", 0, NULL, 0);
if (IS_ERR(pdev)) {
ret = PTR_ERR(pdev);
下一步是在你的驱动程序才能使用此PHY,应该足够使用固定0名:00作为PHY的名字,当你看它(的:00是固定的PHY ID在上面的 fixed_phy_add)
snprintf(phy_id, sizeof(slave_data->phy_id), PHY_ID_FMT, "fixed-0", 0);
0,那么你的驱动已经有phy_connect应该找到固定的PHY和它应该工作 只要固定配置的另一侧(开关匹配我们的情况下):
phy_connect(ndev, phy_id, &_adjust_link, phy_if);
应该有一种方法可以使所有这些工作都与设备树一起工作,但是还没有人能够在那里获得,AFAICS。
祝你好运。
相关问题
- 1. 如何在Android上启用以太网over USB驱动程序?
- 2. Linux网络设备驱动程序
- 3. linux网络驱动程序--- net_device_ops
- 4. linux网络驱动程序的问题
- 5. 帮助调试FreeBSD驱动程序(以太网问题)
- 6. ethercat模块的以太网驱动程序
- 7. 以太网驱动程序无法在linaro 3.1版上工作
- 8. NDIS 6.x以太网桥驱动程序
- 9. 以太网驱动程序 - 不使用DMA?
- 10. Wireshark初学者,捕获以太网驱动程序
- 11. U-Boot上的以太网驱动程序API
- 12. Linux如何测试PCIe驱动程序?
- 13. 如何激活TCP在linux
- 14. C#谈话以太网卡驱动程序
- 15. 访问Linux驱动程序
- 16. linux如何用相同的驱动程序驱动多个网卡?
- 17. Linux设备驱动程序
- 18. Linux TTY和驱动程序
- 19. 如何取消激活LVM2物理卷以移除驱动器?
- 20. Windows驱动程序编程或Linux驱动程序编程?
- 21. I2C linux驱动程序
- 22. 以太网交换机设备驱动
- 23. Linux驱动程序和device.h
- 24. Linux SPI驱动程序crasj
- 25. 学习linux驱动程序
- 26. Linux驱动程序phys_mem_access_prot undefined
- 27. 嵌入式Linux的Linux驱动程序
- 28. 使用驱动程序内部的驱动程序的Linux
- 29. 如何在Linux中检查以太网?
- 30. 如何使用android/linux电源驱动程序注册设备驱动程序?
fixed_mdio_bus_init不是将固定phy添加到系统的最佳位置。这应该是特定于电路板的代码。添加的行应该放在你的电路板初始化中。以/arch/m68k/platform/coldfire/m5272.c为例。 – spearson
我知道。但我的董事会使用devicetree,并没有固定phys的devicetree支持。即使有,它也需要提前添加,因为在调用固定的phy初始化例程之前phys需要存在,所以以后不能添加它们。最简单的方法是将其明确添加到fixed_mdio_bus_init中。现在我想到了为什么不只是为固定的phys数添加一个配置参数,而不是将这些东西放在board文件中? – slobobaby