HID: fix hiddev's use of usb_find_interface
My macbook infrared remote control was broken by commit bd25f4dd6972755579d0ea50d1a5ace2e9b00d1a ("HID: hiddev: use usb_find_interface, get rid of BKL"). This device appears in dmesg as: apple 0003:05AC:8242.0001: hiddev0,hidraw0: USB HID v1.11 Device [Apple Computer, Inc. IR Receiver] on usb-0000:00:1d.2-1/input0 It stopped working as lircd was getting ENODEV when opening /dev/usb/hiddev0. AFAICS hiddev_driver is a dummy driver so usb_find_interface(&hiddev_driver) does not find anything. The device is associated with the usbhid driver, so let's do usb_find_interface(&hid_driver) instead. $ ls -l /sys/devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/usb/hiddev0/device/driver lrwxrwxrwx 1 root root 0 2010-09-12 16:28 /sys/devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/usb/hiddev0/device/driver -> ../../../../../../bus/usb/drivers/usbhid Signed-off-by: Guillaume Chazarain <guichaz@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
eaca138620
commit
8fe294caf8
@ -1446,6 +1446,11 @@ static const struct hid_device_id hid_usb_table[] = {
|
||||
{ }
|
||||
};
|
||||
|
||||
struct usb_interface *usbhid_find_interface(int minor)
|
||||
{
|
||||
return usb_find_interface(&hid_driver, minor);
|
||||
}
|
||||
|
||||
static struct hid_driver hid_usb_driver = {
|
||||
.name = "generic-usb",
|
||||
.id_table = hid_usb_table,
|
||||
|
@ -270,7 +270,7 @@ static int hiddev_open(struct inode *inode, struct file *file)
|
||||
struct hiddev *hiddev;
|
||||
int res;
|
||||
|
||||
intf = usb_find_interface(&hiddev_driver, iminor(inode));
|
||||
intf = usbhid_find_interface(iminor(inode));
|
||||
if (!intf)
|
||||
return -ENODEV;
|
||||
hid = usb_get_intfdata(intf);
|
||||
|
@ -42,6 +42,7 @@ void usbhid_submit_report
|
||||
(struct hid_device *hid, struct hid_report *report, unsigned char dir);
|
||||
int usbhid_get_power(struct hid_device *hid);
|
||||
void usbhid_put_power(struct hid_device *hid);
|
||||
struct usb_interface *usbhid_find_interface(int minor);
|
||||
|
||||
/* iofl flags */
|
||||
#define HID_CTRL_RUNNING 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user