Запретить usbhid требовать устройства

Для того чтобы функция _probe моего USB-драйвера была вызвана, мне нужно сначала запретить usbhid запрашивать ее. Для этого я написал правило UDEV, которое отменяет привязку устройства.

SUBSYSTEM == "usb", DRIVER == "usbhid", ATTRS {idVendor} == "ffff", ATTRS {idProduct} == "ffff", RUN = "/ bin / sh -c 'echo -n $ id: 1.0> / sys / bus / usb / drivers / usbhid / unbind '"

Пока это работает, какова стандартная практика для распределения драйверов? Должен ли я также упаковать это правило? Есть ли способ для моего собственного драйвера иметь приоритет над usbhid?

1 ответ

Ядро выбирает драйверы для каждого устройства на основе MODULE_DEVICE_TABLEs. Таблица устройств HID считается более конкретной, чем общая таблица устройств USB, поэтому, если ваше устройство запрашивает класс устройств USB HID, то ваш драйвер, вероятно, должен также включать класс HID MODULE_DEVICE_TABLE.

Алгоритм сопоставления предпочитает конкретные совпадения по сравнению с общими на основе классов, поэтому, если ваша запись в таблице устройств содержит некоторые уникальные атрибуты устройства USB или HID, ваш драйвер должен получить приоритет над общим usbhid Водитель.

Если ваши идентификаторы idVendor и idProduct на самом деле оба равны 0xffff, то я предполагаю, что вы имеете дело с прототипом устройства, у которого пока нет надлежащих идентификаторов USB-производителя / устройства. Вы хотите исправить это.

Другие вопросы по тегам