2011-01-31 64 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稍微老一點的方式進行。

這也是有一個(或幾個)「正確」的解決方案的地方之一,它可以讓你的代碼上游,還有很多更有爭議的解決方案,你可能會爲自己的工作目的很快,特別是如果他們使用你已經熟悉的機制。這是一個基於你工作的目的和未來的判斷。