Nền đầu tiên. Tôi đang phát triển trình điều khiển cho các thiết bị bảng điều khiển trò chơi Logitech. Đó là một bàn phím có màn hình trên đó. Trình điều khiển đang hoạt động tốt nhưng theo mặc định, thiết bị được xử lý bởi HID. Để ngăn HID tiếp quản thiết bị trước trình điều khiển của tôi, tôi có thể đưa vào danh sách đen trong hid-core.c. Điều này hoạt động nhưng không phải là giải pháp tốt nhất vì tôi đang làm việc với nhiều người và tất cả chúng ta phải tiếp tục vá mô-đun HID đang trở thành một việc vặt, đặc biệt là vì nó thường liên quan đến việc xây dựng lại initramfs và như vậy.
Tôi đã thực hiện một số nghiên cứu về vấn đề này và tôi đã tìm thấy bài đăng danh sách gửi thư này , cuối cùng tôi đã đưa tôi đến bài viết này trên LWN . Điều này mô tả một cơ chế để ràng buộc các thiết bị với trình điều khiển cụ thể trong thời gian chạy. Điều này có vẻ như chính xác những gì tôi cần.
Vì vậy, tôi đã thử nó. Tôi đã có thể hủy liên kết bàn phím từ HID. Điều này làm việc và như mong đợi tôi không thể gõ vào nó nữa. Nhưng khi tôi cố gắng liên kết nó với trình điều khiển của chúng tôi, tôi gặp "lỗi: không có thiết bị nào như vậy" và hoạt động không thành công.
Vì vậy, câu hỏi của tôi là: Làm thế nào để tôi sử dụng các hoạt động liên kết / hủy liên kết kernel để sao chép những gì xảy ra khi bạn đưa vào danh sách đen một thiết bị HID trong hid-core và cung cấp trình điều khiển của riêng bạn? - đó là - để thay thế sự cần thiết phải vá hid-core.c mọi lúc?
Nguồn tài xế của chúng tôi có tại đây: https://github.com/ali1234/lg4l