Primer fondo Estoy desarrollando un controlador para dispositivos de panel de juego Logitech. Es un teclado con una pantalla. El controlador funciona bien, pero por defecto el dispositivo es manejado por HID. Para evitar que HID se apodere del dispositivo antes que mi controlador, puedo ponerlo en la lista negra en hid-core.c. Esto funciona, pero no es la mejor solución, ya que estoy trabajando con varias personas y todos tenemos que seguir parcheando nuestro módulo HID, que se está convirtiendo en una tarea, especialmente porque a menudo implica la reconstrucción de initramfs y demás.
Investigué un poco sobre este problema y encontré esta publicación en la lista de correo , que finalmente me llevó a este artículo sobre LWN . Esto describe un mecanismo para vincular dispositivos a controladores específicos en tiempo de ejecución. Esto parece exactamente lo que necesito.
Entonces lo intenté. Pude desvincular el teclado de HID. Esto funcionó y, como era de esperar, ya no podía escribir en él. Pero cuando traté de vincularlo a nuestro controlador, recibí un "error: no existe tal dispositivo" y la operación falla.
Entonces, mi pregunta es: ¿Cómo uso las operaciones de vinculación / desvinculación del núcleo para replicar lo que sucede cuando pone en la lista negra un dispositivo HID en hid-core y proporciona su propio controlador? es decir, para reemplazar la necesidad de parchear hid-core.c todo el tiempo
La fuente de nuestro controlador está aquí: https://github.com/ali1234/lg4l