aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorJiri Slaby <jirislaby@gmail.com>2008-03-19 16:55:04 -0400
committerJiri Kosina <jkosina@suse.cz>2008-04-22 05:34:57 -0400
commit1d1bdd20008416a744c0c844e231e7ba69c11699 (patch)
tree9b1b1cd36ed6e207402a28613216e514c3783dc8 /drivers/hid
parent1b184cf37f5cf098f07725b483a2055e95725476 (diff)
HID: move wait from hid to usbhid
Since only place where this is used is usbhid, move it there. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/usbhid/hid-core.c16
-rw-r--r--drivers/hid/usbhid/usbhid.h3
2 files changed, 10 insertions, 9 deletions
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 120b49d2b4a6..f6a5d8930348 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -341,7 +341,7 @@ static void hid_irq_out(struct urb *urb)
341 if (usbhid->outhead != usbhid->outtail) { 341 if (usbhid->outhead != usbhid->outtail) {
342 if (hid_submit_out(hid)) { 342 if (hid_submit_out(hid)) {
343 clear_bit(HID_OUT_RUNNING, &usbhid->iofl); 343 clear_bit(HID_OUT_RUNNING, &usbhid->iofl);
344 wake_up(&hid->wait); 344 wake_up(&usbhid->wait);
345 } 345 }
346 spin_unlock_irqrestore(&usbhid->outlock, flags); 346 spin_unlock_irqrestore(&usbhid->outlock, flags);
347 return; 347 return;
@@ -349,7 +349,7 @@ static void hid_irq_out(struct urb *urb)
349 349
350 clear_bit(HID_OUT_RUNNING, &usbhid->iofl); 350 clear_bit(HID_OUT_RUNNING, &usbhid->iofl);
351 spin_unlock_irqrestore(&usbhid->outlock, flags); 351 spin_unlock_irqrestore(&usbhid->outlock, flags);
352 wake_up(&hid->wait); 352 wake_up(&usbhid->wait);
353} 353}
354 354
355/* 355/*
@@ -391,7 +391,7 @@ static void hid_ctrl(struct urb *urb)
391 if (usbhid->ctrlhead != usbhid->ctrltail) { 391 if (usbhid->ctrlhead != usbhid->ctrltail) {
392 if (hid_submit_ctrl(hid)) { 392 if (hid_submit_ctrl(hid)) {
393 clear_bit(HID_CTRL_RUNNING, &usbhid->iofl); 393 clear_bit(HID_CTRL_RUNNING, &usbhid->iofl);
394 wake_up(&hid->wait); 394 wake_up(&usbhid->wait);
395 } 395 }
396 spin_unlock_irqrestore(&usbhid->ctrllock, flags); 396 spin_unlock_irqrestore(&usbhid->ctrllock, flags);
397 return; 397 return;
@@ -399,7 +399,7 @@ static void hid_ctrl(struct urb *urb)
399 399
400 clear_bit(HID_CTRL_RUNNING, &usbhid->iofl); 400 clear_bit(HID_CTRL_RUNNING, &usbhid->iofl);
401 spin_unlock_irqrestore(&usbhid->ctrllock, flags); 401 spin_unlock_irqrestore(&usbhid->ctrllock, flags);
402 wake_up(&hid->wait); 402 wake_up(&usbhid->wait);
403} 403}
404 404
405void usbhid_submit_report(struct hid_device *hid, struct hid_report *report, unsigned char dir) 405void usbhid_submit_report(struct hid_device *hid, struct hid_report *report, unsigned char dir)
@@ -478,8 +478,9 @@ int usbhid_wait_io(struct hid_device *hid)
478{ 478{
479 struct usbhid_device *usbhid = hid->driver_data; 479 struct usbhid_device *usbhid = hid->driver_data;
480 480
481 if (!wait_event_timeout(hid->wait, (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl) && 481 if (!wait_event_timeout(usbhid->wait,
482 !test_bit(HID_OUT_RUNNING, &usbhid->iofl)), 482 (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl) &&
483 !test_bit(HID_OUT_RUNNING, &usbhid->iofl)),
483 10*HZ)) { 484 10*HZ)) {
484 dbg_hid("timeout waiting for ctrl or out queue to clear\n"); 485 dbg_hid("timeout waiting for ctrl or out queue to clear\n");
485 return -1; 486 return -1;
@@ -869,8 +870,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf)
869 goto fail; 870 goto fail;
870 } 871 }
871 872
872 init_waitqueue_head(&hid->wait); 873 init_waitqueue_head(&usbhid->wait);
873
874 INIT_WORK(&usbhid->reset_work, hid_reset); 874 INIT_WORK(&usbhid->reset_work, hid_reset);
875 setup_timer(&usbhid->io_retry, hid_retry_timeout, (unsigned long) hid); 875 setup_timer(&usbhid->io_retry, hid_retry_timeout, (unsigned long) hid);
876 876
diff --git a/drivers/hid/usbhid/usbhid.h b/drivers/hid/usbhid/usbhid.h
index 0023f96d4294..62d2d7c925bd 100644
--- a/drivers/hid/usbhid/usbhid.h
+++ b/drivers/hid/usbhid/usbhid.h
@@ -28,6 +28,7 @@
28#include <linux/slab.h> 28#include <linux/slab.h>
29#include <linux/list.h> 29#include <linux/list.h>
30#include <linux/timer.h> 30#include <linux/timer.h>
31#include <linux/wait.h>
31#include <linux/workqueue.h> 32#include <linux/workqueue.h>
32#include <linux/input.h> 33#include <linux/input.h>
33 34
@@ -77,7 +78,7 @@ struct usbhid_device {
77 unsigned long stop_retry; /* Time to give up, in jiffies */ 78 unsigned long stop_retry; /* Time to give up, in jiffies */
78 unsigned int retry_delay; /* Delay length in ms */ 79 unsigned int retry_delay; /* Delay length in ms */
79 struct work_struct reset_work; /* Task context for resets */ 80 struct work_struct reset_work; /* Task context for resets */
80 81 wait_queue_head_t wait; /* For sleeping */
81}; 82};
82 83
83#define hid_to_usb_dev(hid_dev) \ 84#define hid_to_usb_dev(hid_dev) \