我有一个运行 linux 内核版本 2.6.30 的 armv9 SOC,我需要处理一个可以连接到多个 PHY 设备的 MAC 层。我可以通过设置一些 GPIO 启用一个来选择实际连接的设备。因此,任何时候,只有一个 PHY 与以太网层进行了实质性连接(在此期间,所有其他 PHY 对 MDIO 和 MII/GMII 总线呈现高阻抗,因此对两者都没有影响)。
我的问题是关于如何在 linux 内核层中正确处理这个问题。我找到了很多不同的方法来解决这个问题,但它很脏而且处理方式不漂亮,因此我在 PHY/MAC 驱动程序中陷入了丑陋的变通方法。
我想我应该重新启动 MAC 层 PHY 的“重新检测”,就像插入 MAC 模块时所做的那样。当我插入 MAC 层模块时,它会导致实际的有线 PHY 探测,并且正确的驱动程序由上层 MAC 层驱动程序加载。
您能否建议我思考在哪里处理内核层以及在我的特定情况下我应该如何执行要调用的检测例程以及我可以在 MAC 层中找到她的位置。
谢谢