Перший фон. Я розробляю драйвер для пристроїв ігрових панелей Logitech. Це клавіатура з екраном на ній. Драйвер працює добре, але за замовчуванням пристрій обробляється HID. Щоб запобігти захопленню HID пристрою перед моїм драйвером, я можу передати його в чорний список у hid-core.c. Це працює, але це не найкраще рішення, оскільки я працюю з кількома людьми, і всі ми повинні продовжувати виправляти наш HID-модуль, який стає справою, тим більше, що це часто передбачає перебудову initramfs і подібних.
Я провів деякі дослідження з цієї проблеми, і знайшов цей пост у списку розсилки , який врешті-решт відвів мене до цієї статті на LWN . Тут описаний механізм прив’язки пристроїв до конкретних драйверів під час виконання. Це здається саме тим, що мені потрібно.
Отже, я спробував це. Мені вдалося від’єднати клавіатуру від HID. Це спрацювало, і, як і слід було очікувати, я більше не міг надрукувати його. Але коли я намагався прив’язати його до нашого драйвера, я отримую "помилку: такого пристрою немає", і операція завершується невдаче.
Отож, моє запитання таке: як я можу використовувати операції зв’язування / від’єднання ядра для реплікації того, що відбувається, коли ви перекладаєте чорний список пристрою HID у сховане ядро та постачаєте власний драйвер? - тобто - весь час замінювати необхідність виправлення hid-core.c?
Джерело нашого водія тут: https://github.com/ali1234/lg4l