为了调用我的USB驱动程序的_probe函数,我需要防止usbhid首先声明它。为此,我编写了一个UDEV规则来解除设备绑定。
SUBSYSTEM ==“ usb”,DRIVER ==“ usbhid”,ATTRS {idVendor} ==“ ffff”, ATTRS {idProduct} ==“ ffff”,RUN =“ / bin / sh -c'echo -n $ id:1.0> / sys / bus / usb / drivers / usbhid / unbind'“
虽然可行,但分发驱动程序的标准做法是什么?我也必须打包此规则吗?我自己的驱动程序有什么办法可以优先于usbhid?
答案 0 :(得分:0)
内核根据MODULE_DEVICE_TABLE
为每个设备选择驱动程序。 HID设备表被认为比通用USB设备表更具体,因此,如果您的设备声明USB HID设备类,则您的驱动程序也可能也应包括HID类MODULE_DEVICE_TABLE。
与一般的基于类的匹配算法相比,匹配算法更倾向于进行特定的匹配,因此,如果您的设备表条目包含一些唯一的USB或HID设备属性,则驱动程序应优先于一般的usbhid
驱动程序。
如果您的idVendor和idProduct标识符实际上都是0xffff,那么我猜您正在处理的原型设备尚不具有正确的USB供应商/设备标识符。您将要解决该问题。