Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Включение/выключение питания USB
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
shamrel
Доброго Здоровья!
Имеется плата на AM3359 ( на основе Beagle Bone Black) с запущенным linux 3.12, в качестве файловой системы использован слегка модифицированный линукс Angstrom.
На USB1 запаян FT2232H. Стоит задача включать/выключать питание USB, для перезапуска FT2232H чипа (+ кое какая перефирия питается от +5В USB.).
Начальные условия:
CODE
# lsusb
Bus 001 Device 002: ID 0403:6010 Future Technology Devices International, Ltd FT2232C Dual USB-UART/FIFO IC
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

# ls /sys/bus/usb/devices/
1-0:1.0 1-1 1-1:1.0 1-1:1.1 2-0:1.0 usb1 usb2

Мои мытарства.
Способ N1. Пытаемся воспользоваться старым приемом, записать в /sys/bus/usb/devices/usb1/power/level значение "suspend".
Говорит, что инвалид аргумент, кроме того, радостно сообщает, что " WARNING! power/level is deprecated; use power/control instead".
Пробуем с power/control -- тоже самое. Лезем в документацию и исходники, и выясняем, что теперь туда можно записать только значения
"on" и "auto".

Способ N2.. На импортных форумах рекомендуют для отключения/включения питания отбиндить, а затем заново забиндить устройство.
Пытаюсь сделать это так:
CODE

echo '1-0:1.0' > /sys/bus/usb/drivers/usb/unbind
echo '1-1' > /sys/bus/usb/drivers/usb/unbind
echo '1-1:1.0' > /sys/bus/usb/drivers/usb/unbind
echo '1-1:1.1' > /sys/bus/usb/drivers/usb/unbind

На все потуги ответ один: sh: write error: No such device
До бинда дело не доходит.

Как отключить питание на линии USB?

Lagman
http://sysadm.pp.ua/linux/usb.html
В комментариях тоже полезное есть.
shamrel
Цитата(Lagman @ Oct 28 2014, 17:50) *
[url="http://electronix.ru/redirect.php?http://sysadm.pp.ua/linux/usb.html"]http://sysadm.pp.ua/linux/usb.html[/url]
В комментариях тоже полезное есть.

Спасибо за помощь, но нет.
Цитата
echo "0" > /sys/bus/usb/devices/2-1/power/autosuspend
echo "auto" > /sys/bus/usb/devices/2-1/power/level

В этих файлах и так эти значения по умолчанию.
Во все писаемые файлы из директории power уже писал все что угодно, и по исходникам смотрел, что туда вообще писать можно.
CODE
# ls -l /sys/bus/usb/devices/1-1/power/
-r--r--r-- 1 root root 4096 Oct 29 10:40 active_duration
-rw-r--r-- 1 root root 4096 Oct 29 10:32 autosuspend
-rw-r--r-- 1 root root 4096 Oct 29 10:32 autosuspend_delay_ms
-r--r--r-- 1 root root 4096 Oct 29 10:33 connected_duration
-rw-r--r-- 1 root root 4096 Oct 29 10:33 control
-rw-r--r-- 1 root root 4096 Oct 29 10:32 level
-rw-r--r-- 1 root root 4096 Oct 29 10:40 persist
-r--r--r-- 1 root root 4096 Oct 29 10:40 runtime_active_time
-r--r--r-- 1 root root 4096 Oct 29 10:40 runtime_status
-r--r--r-- 1 root root 4096 Oct 29 10:40 runtime_suspended_time
-rw-r--r-- 1 root root 4096 Oct 29 10:40 wakeup
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_abort_count
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_active
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_active_count
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_count
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_expire_count
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_last_time_ms
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_max_time_ms
-r--r--r-- 1 root root 4096 Oct 29 10:40 wakeup_total_time_ms

Да, эти же манипуляции проводил и с /sys/bus/usb/devices/usb1/power/
Проверил саму физическую возможность отключения питания. В device tree ножку, отвечающую за USB0_DRVVBUS,
объявил как GPIO. в результате в "ручном" режиме питание отключается, однако при загрузке, естественно, ошибка с
VBUS. Ну, и конечно, USB нормально не работает.


shamrel
Один из способов снять напряжение с VBUS:

CODE
для USB1:
devmem2 0x47401460 b 0x00
devmem2 0x47401460 b 0x01

для USB2:
devmem2 0x47401c60 b 0x00
devmem2 0x47401c60 b 0x01


Но это же не красиво. sad.gif
Ну как же так?!
Хочется пользоваться драйвером, и не хочется верить, что с обновлением ядра сломали удобный механизм.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.