Lines Matching defs:hiddev

23 #include <linux/hiddev.h>
44 struct hiddev *hiddev;
143 struct hiddev *hiddev = hid->hiddev;
147 spin_lock_irqsave(&hiddev->list_lock, flags);
148 list_for_each_entry(list, &hiddev->list, node) {
157 spin_unlock_irqrestore(&hiddev->list_lock, flags);
159 wake_up_interruptible(&hiddev->wait);
163 * This is where hid.c calls into hiddev to pass an event that occurred over
221 spin_lock_irqsave(&list->hiddev->list_lock, flags);
223 spin_unlock_irqrestore(&list->hiddev->list_lock, flags);
225 mutex_lock(&list->hiddev->existancelock);
226 if (!--list->hiddev->open) {
227 if (list->hiddev->exist) {
228 hid_hw_close(list->hiddev->hid);
229 hid_hw_power(list->hiddev->hid, PM_HINT_NORMAL);
231 mutex_unlock(&list->hiddev->existancelock);
232 kfree(list->hiddev);
238 mutex_unlock(&list->hiddev->existancelock);
244 static int __hiddev_open(struct hiddev *hiddev, struct file *file)
249 lockdep_assert_held(&hiddev->existancelock);
256 list->hiddev = hiddev;
258 if (!hiddev->open++) {
259 error = hid_hw_power(hiddev->hid, PM_HINT_FULLON);
263 error = hid_hw_open(hiddev->hid);
268 spin_lock_irq(&hiddev->list_lock);
269 list_add_tail(&list->node, &hiddev->list);
270 spin_unlock_irq(&hiddev->list_lock);
277 hid_hw_power(hiddev->hid, PM_HINT_NORMAL);
279 hiddev->open--;
291 struct hiddev *hiddev;
299 hiddev = hid->hiddev;
301 mutex_lock(&hiddev->existancelock);
302 res = hiddev->exist ? __hiddev_open(hiddev, file) : -ENODEV;
303 mutex_unlock(&hiddev->existancelock);
339 prepare_to_wait(&list->hiddev->wait, &wait, TASK_INTERRUPTIBLE);
346 if (!list->hiddev->exist) {
359 finish_wait(&list->hiddev->wait, &wait);
364 finish_wait(&list->hiddev->wait, &wait);
416 poll_wait(file, &list->hiddev->wait, wait);
419 if (!list->hiddev->exist)
427 static noinline int hiddev_ioctl_usage(struct hiddev *hiddev, unsigned int cmd, void __user *user_arg)
429 struct hid_device *hid = hiddev->hid;
566 static noinline int hiddev_ioctl_string(struct hiddev *hiddev, unsigned int cmd, void __user *user_arg)
568 struct hid_device *hid = hiddev->hid;
597 struct hiddev *hiddev = list->hiddev;
610 mutex_lock(&hiddev->existancelock);
611 if (!hiddev->exist) {
616 hid = hiddev->hid;
685 r = hiddev_ioctl_string(hiddev, cmd, user_arg);
690 hiddev->initialized = true;
793 if (!hiddev->initialized) {
795 hiddev->initialized = true;
797 r = hiddev_ioctl_usage(hiddev, cmd, user_arg);
843 mutex_unlock(&hiddev->existancelock);
866 .name = "hiddev%d",
873 * This is where hid.c calls us to connect a hid device to the hiddev driver
877 struct hiddev *hiddev;
893 if (!(hiddev = kzalloc(sizeof(struct hiddev), GFP_KERNEL)))
896 init_waitqueue_head(&hiddev->wait);
897 INIT_LIST_HEAD(&hiddev->list);
898 spin_lock_init(&hiddev->list_lock);
899 mutex_init(&hiddev->existancelock);
900 hid->hiddev = hiddev;
901 hiddev->hid = hid;
902 hiddev->exist = 1;
906 hid->hiddev = NULL;
907 kfree(hiddev);
915 hiddev->initialized = hid->quirks & HID_QUIRK_NO_INIT_REPORTS;
917 hiddev->minor = usbhid->intf->minor;
923 * This is where hid.c calls us to disconnect a hiddev device from the
929 struct hiddev *hiddev = hid->hiddev;
934 mutex_lock(&hiddev->existancelock);
935 hiddev->exist = 0;
937 if (hiddev->open) {
938 hid_hw_close(hiddev->hid);
939 wake_up_interruptible(&hiddev->wait);
940 mutex_unlock(&hiddev->existancelock);
942 mutex_unlock(&hiddev->existancelock);
943 kfree(hiddev);