Primo sfondo Sto sviluppando un driver per i dispositivi del pannello di gioco Logitech. È una tastiera con uno schermo. Il driver funziona bene, ma per impostazione predefinita il dispositivo è gestito da HID. Per impedire a HID di prendere il controllo del dispositivo prima del mio driver, posso inserirlo nella lista nera in hid-core.c. Funziona ma non è la soluzione migliore, dato che sto lavorando con diverse persone e tutti dobbiamo continuare a patchare il nostro modulo HID che sta diventando un lavoro ingrato, soprattutto perché spesso comporta la ricostruzione di initramfs e simili.
Ho fatto qualche ricerca su questo problema e ho trovato questo post della mailing list , che alla fine mi ha portato a questo articolo su LWN . Descrive un meccanismo per l'associazione di dispositivi a driver specifici in fase di esecuzione. Sembra esattamente quello di cui ho bisogno.
Quindi l'ho provato. Sono stato in grado di separare la tastiera da HID. Funzionava e, come previsto, non potevo più scriverci sopra. Ma quando ho provato a collegarlo al nostro driver ho ricevuto "errore: nessun dispositivo del genere" e l'operazione non riesce.
Quindi la mia domanda è: come posso usare le operazioni di bind / unbind del kernel per replicare cosa succede quando si inserisce nella blacklist un dispositivo HID in hid-core e si fornisce il proprio driver? - cioè - per sostituire la necessità di patchare hid-core.c in ogni momento?
La fonte del nostro driver è qui: https://github.com/ali1234/lg4l