Jump to content

    

Включение/выключение питания USB

Доброго Здоровья!

Имеется плата на 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?

 

 

Share this post


Link to post
Share on other sites
[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 нормально не работает.

 

 

 

Share this post


Link to post
Share on other sites

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

 

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

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

 

Но это же не красиво. :(

Ну как же так?!

Хочется пользоваться драйвером, и не хочется верить, что с обновлением ядра сломали удобный механизм.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this