2011-01-31 4 views
1

Я запускаю встроенный linux на OMAP ARM (OMAP-L138). Контроллер ethernet подключается к внешнему чипу PHY. Все работает нормально, за исключением некоторых обстоятельств, я хотел бы сэкономить энергию и мощность PHY (но не приостановить всю систему).Выключение ethernet PHY

Я знаю, что Linux может легко приостановить работу PHY, так как когда я поставил всю систему в состояние приостановки в состояние разгона, PHY действительно отключается.

Тем не менее, я хочу, чтобы это можно было сделать, чтобы включить и выключить PHY через приложение для пользовательского пространства, включив и выключив его по своему желанию.

Как это достичь? Я довольно новичок в Linux, и я могу писать приложения для пользователей в C, чтобы открывать драйверы устройств и получать к ним доступ.

PHY подключен через интерфейс MII, но я не вижу mii под/dev /? (то есть для доступа к драйверу i2c, я делал fd = open («/ dev/i2c-0», O_RDWR);) Где хранится mii драйвер? Как я могу получить к нему доступ? Если бы только я мог читать и записывать несколько регистров на чип PHY через драйвер mii, то я думаю, что это было бы легко достижимо.

Спасибо.

+0

У меня нет конкретного ответа для вас, но ethtool может делать то, что вы хотите (хотя я не могу найти подходящий вариант.) Насколько я знаю, это зависит от драйвера устройства, отключается ли он в режиме ожидания -в-ОЗУ. Вам может повезти и найти, что есть ioctl, чтобы делать то, что вы хотите, но опять же, это зависит от драйвера устройства. –

ответ

2

Найти исходный код в любом драйвере, работающем с PHY (либо в активной конфигурации ядра, либо в сообщениях ядра, либо в гадании, либо в режиме grepping) и прочитать его.

Посмотрите, поддерживает ли он это. Посмотрите, поддерживает ли он способ сообщить об этом. Если да, научитесь использовать его.

Если нет, и вы знаете из листов данных, что аппаратное обеспечение поддерживает его, добавьте механизм, либо как часть существующей схемы управления питанием, либо просто самостоятельно. Узел в sysfs, по-видимому, является в настоящее время универсальным интерфейсом vogue для описания простых параметров включения/выключения ядра, делая это в/proc немного более старым способом.

Это также одна из областей, где есть одно (или несколько) «правильных» решений, которые были бы приемлемы для получения вашего кода вверх по течению и много более противоречивых решений, которые вы, вероятно, можете получить для своих собственных цели довольно быстро, особенно если они используют механизмы, с которыми вы уже знакомы. Это решение, основанное на цели и будущем вашей работы.

Смежные вопросы