我在MDIO总线上有多个设备(一个AR8035物理层和6个DP83849IFVS双物理层)。总线连接到带有Linux4.14.40的AM335x SoC。我认为AR8035的Davinchi_mdio会扫描总线并找到所有设备并附加驱动程序。我怎样通过mdio进入这辆巴士?我想写独立的(不是PHY驱动程序)内核模块,可以简单地访问mdio总线?我该怎么做呢?我想用phy_write/phy_read来做这件事,但是我不能从我的内核模块中获得结构phy_device*。如何从接口的名称("eth0")获取结构phy_device*。它在锁/互斥方面会安全吗?
发布于 2020-08-13 00:43:20
如果你已经有了一个用于MDIO控制器的子系统,那么我可以考虑实现一个用于MDIO接口的UIO驱动程序,它处理读写操作。
与乱七八糟的内核驱动程序相比,UIO驱动程序是安全的,完全控制将由使用该UIO的用户应用程序完成。
*每个UIO设备通过一个设备文件和多个sysfs属性文件进行访问。第一个设备的设备文件名为/dev/uio0,后续设备的名称为/dev/uio1、/dev/uio2,依此类推。
/dev/uioX用于访问卡的地址空间。只需使用mmap()来访问卡的寄存器或RAM位置。
通过从/dev/uioX读取来处理中断。一旦中断发生,/dev/uioX的阻塞read()将立即返回。*
https://stackoverflow.com/questions/63335496
复制相似问题