为了调用我的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/驱动器/usbhid/unbind‘”
尽管如此,分发驱动程序的标准实践是什么?我也要打包这条规则吗?有什么办法让我自己的司机优先于usbhid?
发布于 2018-08-15 07:23:24
内核根据MODULE_DEVICE_TABLEs为每个设备选择驱动程序,HID设备表被认为比一般的USB设备表更具体,所以如果您的设备声称USB设备类,那么您的驱动程序也应该包括一个HID类MODULE_DEVICE_TABLE。
与基于泛型类的匹配相比,匹配算法更倾向于特定的匹配,因此如果设备表条目中包含一些它特有的USB或HID设备属性,则您的驱动程序应该获得比通用usbhid驱动程序更高的优先级。
如果您的idVendor和idProduct标识符实际上都是0 0xffff,那么我猜您正在处理的是一个还没有适当的USB供应商/设备标识符的原型设备。你会想解决这个问题的。
https://stackoverflow.com/questions/51858074
复制相似问题