ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Отключить питание на dm9000  (Прочитано 3989 раз)

0 Пользователей и 1 Гость просматривают эту тему.

laborer

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 29
Отключить питание на dm9000
« : 12 Января, 2012, 17:00:18 »

Может кто подскажет чего по теме?
Имеется ввиду такая ситуация: ethernet во время разработки и отладки был очень кстати, а в законченном устройстве он не нужен.
Хочется для экономии батарейки полностью "обесточить" этот чип. Нашёл в drivers/net/dm9000.c
static void
dm9000_shutdown(struct net_device *dev)
{
board_info_t *db = (board_info_t *) dev->priv;

/* RESET device */
dm9000_phy_write(dev, 0, MII_BMCR, BMCR_RESET); /* PHY RESET */
iow(db, DM9000_GPR, 0x01); /* Power-Down PHY */
iow(db, DM9000_IMR, IMR_PAR); /* Disable all interrupt */
iow(db, DM9000_RCR, 0x00); /* Disable RX */
}

Вроде бы управление энергосбережением есть, но не совсем ясно как им пользоваться.
Сие работать не хочет
Цитировать
# echo 1 >  /sys/devices/platform/dm9000.0/power/state
sh: write error: Invalid argument

Подозреваю, что питание будет сниматься при выгрузке модуля dm9000. А для этого модуль надо сперва загрузить.
Как то некрасиво получается: модуль не использую, но приходится дёргать его туда-сюда.

А может достаточно модуль не загружать или даже не описывать его в файле tion270.c?
Мне не ясно, в каком состоянии микросхема оказывается после загрузки линукса.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Отключить питание на dm9000
« Ответ #1 : 12 Января, 2012, 17:47:19 »

А ifdown eth0 не вызывает в результате dm9000_shutdown?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Отключить питание на dm9000
« Ответ #2 : 12 Января, 2012, 17:59:21 »

Кроме того, есть 11-тый бит BMCR (power down), см. 9.11.1 Power Down Mode в описании DM9000
Записан