Premier historique. Je développe un pilote pour les périphériques de console de jeu Logitech. C'est un clavier avec un écran dessus. Le pilote fonctionne bien mais par défaut, le périphérique est géré par HID. Afin d'empêcher HID de prendre le contrôle de l'appareil avant mon pilote, je peux le mettre sur liste noire dans hid-core.c. Cela fonctionne mais n'est pas la meilleure solution car je travaille avec plusieurs personnes et nous devons tous continuer à patcher notre module HID qui devient une corvée, d'autant plus qu'il implique souvent de reconstruire des initramfs et autres.
J'ai fait quelques recherches sur ce problème et j'ai trouvé ce message sur la liste de diffusion , qui m'a finalement conduit à cet article sur LWN . Ceci décrit un mécanisme pour lier des périphériques à des pilotes spécifiques lors de l'exécution. Cela semble être exactement ce dont j'ai besoin.
Alors je l'ai essayé. J'ai pu dissocier le clavier de HID. Cela a fonctionné et comme prévu, je ne pouvais plus taper dessus. Mais lorsque j'ai essayé de le lier à notre pilote, j'obtiens "erreur: aucun périphérique de ce type" et l'opération échoue.
Ma question est donc la suivante: comment utiliser les opérations de liaison / dissociation du noyau pour reproduire ce qui se passe lorsque vous mettez sur liste noire un périphérique HID dans hid-core et fournissez votre propre pilote? - c'est-à-dire - pour remplacer la nécessité de patcher hid-core.c tout le temps?
La source de notre pilote est ici: https://github.com/ali1234/lg4l