Запретить 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_TABLE
s. Таблица устройств HID считается более конкретной, чем общая таблица устройств USB, поэтому, если ваше устройство запрашивает класс устройств USB HID, то ваш драйвер, вероятно, должен также включать класс HID MODULE_DEVICE_TABLE.
Алгоритм сопоставления предпочитает конкретные совпадения по сравнению с общими на основе классов, поэтому, если ваша запись в таблице устройств содержит некоторые уникальные атрибуты устройства USB или HID, ваш драйвер должен получить приоритет над общим usbhid
Водитель.
Если ваши идентификаторы idVendor и idProduct на самом деле оба равны 0xffff, то я предполагаю, что вы имеете дело с прототипом устройства, у которого пока нет надлежащих идентификаторов USB-производителя / устройства. Вы хотите исправить это.