2011-01-31 137 views
1

我在OMAP ARM(OMAP-L138)上运行嵌入式Linux。以太网控制器连接到外部PHY芯片。一切工作正常,除了在某些情况下,我想省电和断电PHY(但不暂停整个系统)。关闭以太网PHY

我知道Linux可以很容易地暂停PHY,因为当我把整个系统置于暂停状态时,PHY确实会关闭电源。

但是,我想要做的就是通过用户空间应用程序打开和关闭PHY,并根据需要打开和关闭PHY。

我该如何做到这一点?我对linux相当陌生,我可以用C编写用户空间应用程序来打开设备驱动程序并访问它们。

PHY通过MII接口连接,但在/ dev /下看不到mii? (即用于访问i2c驱动程序,我一直在做fd = open(“/ dev/i2c-0”,O_RDWR);)mii驱动程序在哪里保存?我怎样才能访问它?如果我只能通过mii驱动程序读取和写入一些寄存器到PHY芯片,那么我认为它很容易实现。

谢谢。

+0

我没有具体的答案给你,但是ethtool可以做你想做的事情(虽然我找不到合适的选择)。据我所知,这取决于设备驱动程序是否在挂起时关闭电源-to-RAM。你可能会很幸运,发现有一个ioctl可以做你想做的事,但是再次,它取决于设备驱动程序。 – 2011-01-31 05:35:28

回答

2

查找任何驱动程序运行PHY的源代码(通过查看活动内核配置,查看内核消息,猜测或grepping)并通读它。

看看它是否支持这个。看看它是否支持一种方法来告诉它。如果是这样,学会使用它。

如果不是这样,并且您从数据表中了解到硬件支持它,请添加一种机制,作为现有电源控制方案的一部分,或者单独使用freehaded。 sysfs中的一个节点似乎是当前流行的通用接口,用于告诉内核简单的开/关选项设置,以/ proc稍微老一点的方式进行。

这也是有一个(或几个)“正确”的解决方案的地方之一,它可以让你的代码上游,还有很多更有争议的解决方案,你可能会为自己的工作目的很快,特别是如果他们使用你已经熟悉的机制。这是一个基于你工作的目的和未来的判断。