LINUX.ORG.RU

Проблемы с внешним USB-хабом в ARM linux.

 , ,


0

2

Здравствуйте. Вдруг опытные люди найдутся?

Суть:

Устройство на основе SoC Allwinner F1C200s. Эта SoC имеет 1 USB OTG порт. Необходимо подключать как минимум клавиатуру и мышь, поэтому используется внешний USB хаб *4 на чипе HS8836A .

Любые USB устройства подключаются без ошибок, но в некоторых комбинациях работают неправильно.

Если подключить 2 USB Flash диска, то работают оба, но если любое из устройств USB клавиатура или мышь, то возникают проблемы, например:

1 случай. Подключаем USB Flash - работает (монтируется). Подключаем второй USB Flash - работают оба.

2 случай . Подключаем USB Flash - работает. Подключаем клавиатуру (мышь) : USB Flash работает, клавиатура (мышь) не работает, хотя определяется без ошибок.

3 случай. Подключаем клавиатуру (мышь) - работает. Любое второе подключенное устройство - не работает.

«не работает» - это значит, счетчик прерываний от контроллера USB (cat /proc/interrupts) не изменяется, если на подключенной вторым устройством клавиатуре (мыши) нажимать кнопки (двигать).

Похоже, второе подключенное устройство в случаях 2 и 3 не опрашивается правильно, даже если подключено без ошибок.

В F1C200s USB контроллер это Inventra MUSB HDRC (Highspeed Dual Role Controller ). Система собрана в Buildroot, init - BusyBox. Ядро 5.4.66 .

В другом устройстве на той же SoC внешний USB-хаб на чипе FE1.1s . Проблемы те же.

Я не знаю, что влияет на работу при подключении USB клавиатуры или мыши, в отличие от USB Flash:

- это «устройство ввода» - это «устройство HID» - это «устройство 'low speed' »

Вопрос, какой модуль в USB-фреймворке ядря linux фактически осуществляет опрос устройств? Core ? hub ? или драйвера (HID, SCSI ...) ? или контроллер на аппаратном уровне? Я попытался для локализации проблемы вставить в исходники ядра в драйвера ветки USB строки printk, в места, где упоминается 'poll', но так и не нашел место с циклом опроса.


Ответ на: комментарий от HE_KOT

Не следил, вполне возможно. Собственно, специфичного «для семейства» тут только драйвер MUSB HDRC. Гляну, чего там они наисправляли в 6.3, возможно, удастся перетащить изменения сюда. Спасибо.

r702
() автор топика

Не обещаю, что буду прав потому что на такое не натыкался, однако могу предположить

FE1.1s

Из даташита

It adopts Single Transaction Translator (STT) architecture to be more cost effective

А раз мышка low-speed устройство... Вероятно флешка просто не может работать в таком режиме.

HS8836A

Сходу хз что там, но на сайте с китайскими иероглифами увидел аббревиатуру STT.

Предлагаю для начала взять хаб получше.

Slavik763
()