aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/usbhid/hiddev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hid/usbhid/hiddev.c')
-rw-r--r--drivers/hid/usbhid/hiddev.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c
index 774bd701dae0..0e06368d1fbb 100644
--- a/drivers/hid/usbhid/hiddev.c
+++ b/drivers/hid/usbhid/hiddev.c
@@ -47,16 +47,6 @@
47#endif 47#endif
48#define HIDDEV_BUFFER_SIZE 2048 48#define HIDDEV_BUFFER_SIZE 2048
49 49
50struct hiddev {
51 int exist;
52 int open;
53 struct mutex existancelock;
54 wait_queue_head_t wait;
55 struct hid_device *hid;
56 struct list_head list;
57 spinlock_t list_lock;
58};
59
60struct hiddev_list { 50struct hiddev_list {
61 struct hiddev_usage_ref buffer[HIDDEV_BUFFER_SIZE]; 51 struct hiddev_usage_ref buffer[HIDDEV_BUFFER_SIZE];
62 int head; 52 int head;
@@ -690,6 +680,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
690 680
691 case HIDIOCINITREPORT: 681 case HIDIOCINITREPORT:
692 usbhid_init_reports(hid); 682 usbhid_init_reports(hid);
683 hiddev->initialized = true;
693 r = 0; 684 r = 0;
694 break; 685 break;
695 686
@@ -791,6 +782,10 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
791 case HIDIOCGUSAGES: 782 case HIDIOCGUSAGES:
792 case HIDIOCSUSAGES: 783 case HIDIOCSUSAGES:
793 case HIDIOCGCOLLECTIONINDEX: 784 case HIDIOCGCOLLECTIONINDEX:
785 if (!hiddev->initialized) {
786 usbhid_init_reports(hid);
787 hiddev->initialized = true;
788 }
794 r = hiddev_ioctl_usage(hiddev, cmd, user_arg); 789 r = hiddev_ioctl_usage(hiddev, cmd, user_arg);
795 break; 790 break;
796 791
@@ -911,6 +906,15 @@ int hiddev_connect(struct hid_device *hid, unsigned int force)
911 kfree(hiddev); 906 kfree(hiddev);
912 return -1; 907 return -1;
913 } 908 }
909
910 /*
911 * If HID_QUIRK_NO_INIT_REPORTS is set, make sure we don't initialize
912 * the reports.
913 */
914 hiddev->initialized = hid->quirks & HID_QUIRK_NO_INIT_REPORTS;
915
916 hiddev->minor = usbhid->intf->minor;
917
914 return 0; 918 return 0;
915} 919}
916 920