LINUX.ORG.RU

USB otg порт на Allwinner A20

 , , ,


0

1

День добрый!

Есть железка на основе Olimex A20-SOM и на ней разведен USB OTG порт. Работал он исправно до тех пор, пока не понадобилось сделать загрузку с флешки по USB. U-boot 2015.04 (использовался на тот момент) еще не умел OTG на A20. Решено было обновить его до 2015.10. С ним флешечки видятся и плата грузится, но, как выяснилось, есть один большой косяк - если на этапе, когда u-boot сканирует USB в порт ничего не вставлено то вываливается сообщение:

starting USB...
USB0:   USB EHCI 1.00
USB1:   USB OHCI 1.0
USB2:   USB EHCI 1.00
USB3:   USB OHCI 1.0
USB4:   Port not available.

После чего уже в загруженой системе не определяются USB устройства, хотя вывод lsusb не пустой:

 /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=sw_hcd_host0/1p, 480M 

Если в u-boot не делать usb start то проблем с USB нет, значит проблемы в том, что u-boot делает с USB.

Можно ли как-то сказать ядру переинициализировать USB контроллер или еще каким макаром починить это?

Ядро sunxi-3.4, система Debian 8.

А если попробовать kexec-нуть ядро после этой кривой инициализации u-boot-ом, проблема остается?

SZT ★★★★★ ()
Последнее исправление: SZT (всего исправлений: 1 )
Ответ на: комментарий от Confucij

но kexec возможно не сделает то, что делает u-boot, и следовательно usb может начать нормально работать после этого

SZT ★★★★★ ()
Ответ на: комментарий от SZT

kexec usb контроллер и не сбросит.

Тут по-хорошему надо посмотреть в шитодат на A20, его вроде выкладывали и проверить код ведра который делает инициализацию usb хоста. Скорее всего что-то не вычищают.

Dark_SavanT ★★★★★ ()

Накостылял решение проблемы.

В коде u-boot для usb otg выкидывается ошибка, если в порт не воткнуто ничего и, видимо, в дальнейшем в таком случае не делается остановка контроллера, так как считается, наверное, что он и не запущен. Вызвал остановку контроллера перед выбрасыванием ошибки и все заработало как надо. Только еще вопрос - это бага или я чет не понимаю.

Confucij ()
Ответ на: комментарий от Confucij

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

Confucij ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.