Если у вас есть usb 3.0 - тогда ядро использует драйвер xhci и не нуждается в драйверах uhci, ohci или ehci.В такой конфигурации у вас есть только один драйвер hci и один хост hci.Ранее в эпоху USB 2.0 существовало 2 возможных конфигурации:
- ehci с сопутствующим контроллером (ohci или uhci)
- ehci с транслятором транзакций (TT)
В первой ситуации вам нужно установить оба драйвера - например, ehci и uhci.Во втором требовался только выделенный драйвер ehci.
Так что в настоящее время, когда у вас есть только xhci - он регистрируется как единственный драйвер хоста usb в системе linux.Второе - это функция драйвера хоста для запроса чего-либо от usb-устройств, поэтому usb host генерирует любые запросы к устройствам и отвечает за поддержку ответов от устройства.Драйвер хоста xhci регистрирует свое прерывание и область памяти для обслуживания запроса.
Я думаю, что вам нужно взглянуть на эту проблему с точки зрения хоста (xhci), а не с точки зрения устройства, потому что хост является ведущим в USB-связи, и хост инициирует любые запросы.Устройство отвечает только на эти запросы.