shamrel 0 28 октября, 2014 Опубликовано 28 октября, 2014 · Жалоба Доброго Здоровья! Имеется плата на AM3359 ( на основе Beagle Bone Black) с запущенным linux 3.12, в качестве файловой системы использован слегка модифицированный линукс Angstrom. На USB1 запаян FT2232H. Стоит задача включать/выключать питание USB, для перезапуска FT2232H чипа (+ кое какая перефирия питается от +5В USB.). Начальные условия: # 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.. На импортных форумах рекомендуют для отключения/включения питания отбиндить, а затем заново забиндить устройство. Пытаюсь сделать это так: 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 1 28 октября, 2014 Опубликовано 28 октября, 2014 · Жалоба http://sysadm.pp.ua/linux/usb.html В комментариях тоже полезное есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 29 октября, 2014 Опубликовано 29 октября, 2014 · Жалоба [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 уже писал все что угодно, и по исходникам смотрел, что туда вообще писать можно. # 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 0 31 октября, 2014 Опубликовано 31 октября, 2014 · Жалоба Один из способов снять напряжение с VBUS: для USB1: devmem2 0x47401460 b 0x00 devmem2 0x47401460 b 0x01 для USB2: devmem2 0x47401c60 b 0x00 devmem2 0x47401c60 b 0x01 Но это же не красиво. :( Ну как же так?! Хочется пользоваться драйвером, и не хочется верить, что с обновлением ядра сломали удобный механизм. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться