Jump to content

    
Sign in to follow this  
shamrel

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

Recommended Posts

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this