gpt4 book ai didi

linux - 如何激活 phyless linux 以太网驱动程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:22 25 4
gpt4 key购买 nike

我试图激活 Linux phyless 以太网驱动程序。网上资料不多。我正在使用基于 ARM 的 Linux 内核 SOC 背靠背连接到 1GBPS RGMII 端口,而没有真正的 PHY。知道 Linux 有固定的 phy 支持。一些文件使用了 fixed_phy_add 函数。但仍然不清楚如何激活。任何类型的帮助或指示都会在这里真正提供帮助。

最佳答案

是的。我刚刚为我们的董事会做了这个。真正让我困惑的是你需要在激活固定的 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,当你查找它时,使用名称 fixed-0:00 作为 phy 名称应该就足够了(:00 是固定的 phy id 0fixed_phy_add 上面)

snprintf(phy_id, sizeof(slave_data->phy_id), PHY_ID_FMT, "fixed-0", 0);

那么你的驱动程序已经拥有的 phy_connect 应该可以找到固定的 phy 并且它应该可以工作只要固定配置与另一侧匹配(在我们的例子中是一个开关):

phy_connect(ndev, phy_id, &_adjust_link, phy_if);

应该有一种方法可以让所有这些都与设备树一起工作,但还没有人做到这一点,AFAICS。

祝你好运。

关于linux - 如何激活 phyless linux 以太网驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21108274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com