USB-драйвер для Linux: проверка уже подключенных устройств - PullRequest
0 голосов
/ 13 июня 2010

Я пишу драйвер USB и у меня возникла проблема.Когда я извлекаю драйвер с устройством, уже подключенным до этого, функция зонда не вызывается.Он вызывается только после того, как я отключил устройство и снова подключил его.Я хочу, чтобы он работал, когда я запускаю свой компьютер с уже подключенным устройством.

Может кто-нибудь помочь мне?

Ответы [ 3 ]

0 голосов
/ 31 июля 2010

"Или это может быть связано с тем, что ваше устройство уже связано с устройством, которое выгружается, когда устройство отключено (вы можете проверить это, управляя наличием символической ссылки на драйвер в соответствующем / sys / bus / usb / xxxxx каталог) "

А если есть символическая ссылка?

0 голосов
/ 16 мая 2014

Это можно решить, написав правильное правило udev для вашего устройства. Посмотрите примеры в /etc/udev/rules.d/

0 голосов
/ 22 июня 2010

Из Документации / driver-model / binding.txt:

При добавлении нового устройства список драйверов шины перебирается найти тот, который поддерживает это. Чтобы определить это, устройство Идентификатор устройства должен совпадать с одним из идентификаторов устройства, которые драйвер поддерживает. Формат и семантика для сравнения идентификаторов зависят от шины.

Из того же источника:

Процесс практически идентичен при добавлении нового драйвера. Список устройств шины перебирается, чтобы найти соответствие. приборы которые уже есть драйвер пропускаются. Все устройства повторяются более того, чтобы связать как можно больше устройств с драйвером.

Похоже, у вас возникла проблема с сопоставлением идентификаторов, которая в вашем случае связана с шиной USB, см. Функцию usb_device_match в drivers / usb / core / driver.c.

Или, возможно, ваше устройство уже связано с устройством, которое выгружается, когда устройство отключено (вы можете проверить это, контролируя наличие символической ссылки на драйвер в соответствующем / sys / bus / usb / xxxxx каталог)

...