diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 15:57:44 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 15:57:44 -0500 |
commit | 6e5565f949af1322f8f3d3f43d044645ae448499 (patch) | |
tree | 92868f6d3dcc6c105a0d35f9412f75c07139402e /drivers/input/input-polldev.c | |
parent | e5a9e8e6890d9b9c7a0f25b03ffdaf28614a9a4c (diff) | |
parent | 03366e7b9bf1544cb0b98f1a5cd6d340654f486a (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (34 commits)
Input: i8042 - non-x86 build fix
Input: pxa27x_keypad - also enable on PXA3xx
Input: pxa27x_keypad - add debounce_interval to the keypad platform data
Input: pxa27x_keypad - use device resources for I/O memory mapping and IRQ
Input: pxa27x_keypad - enable rotary encoders and direct keys
Input: pxa27x_keypad - introduce pxa27x_keypad_config()
Input: pxa27x_keypad - introduce driver structure and use KEY() to define matrix keys
Input: pxa27x_keypad - remove pin configuration from the driver
Input: pxa27x_keypad - rename the driver (was pxa27x_keyboard)
Input: constify function pointer tables (seq_operations)
Input: i8042 - add Fujitsu-Siemens Amilo Pro 2010 to nomux list
Input: i8042 - enable DMI quirks on x86-64
Input: i8042 - add Dritek quirk for Acer Aspire 9110
Input: add input event to APM event bridge
Input: mousedev - use BIT_MASK instead of BIT
Input: remove duplicate includes
Input: remove cdev from input_dev structure
Input: remove duplicated headers in drivers/char/keyboard.c
Input: i8042 - add Dritek keyboard extension quirk
Input: add Tosa keyboard driver
...
Diffstat (limited to 'drivers/input/input-polldev.c')
-rw-r--r-- | drivers/input/input-polldev.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/input/input-polldev.c b/drivers/input/input-polldev.c index 92b359894e..490918a5d1 100644 --- a/drivers/input/input-polldev.c +++ b/drivers/input/input-polldev.c | |||
@@ -60,17 +60,21 @@ static void input_polled_device_work(struct work_struct *work) | |||
60 | { | 60 | { |
61 | struct input_polled_dev *dev = | 61 | struct input_polled_dev *dev = |
62 | container_of(work, struct input_polled_dev, work.work); | 62 | container_of(work, struct input_polled_dev, work.work); |
63 | unsigned long delay; | ||
63 | 64 | ||
64 | dev->poll(dev); | 65 | dev->poll(dev); |
65 | queue_delayed_work(polldev_wq, &dev->work, | 66 | |
66 | msecs_to_jiffies(dev->poll_interval)); | 67 | delay = msecs_to_jiffies(dev->poll_interval); |
68 | if (delay >= HZ) | ||
69 | delay = round_jiffies_relative(delay); | ||
70 | |||
71 | queue_delayed_work(polldev_wq, &dev->work, delay); | ||
67 | } | 72 | } |
68 | 73 | ||
69 | static int input_open_polled_device(struct input_dev *input) | 74 | static int input_open_polled_device(struct input_dev *input) |
70 | { | 75 | { |
71 | struct input_polled_dev *dev = input->private; | 76 | struct input_polled_dev *dev = input->private; |
72 | int error; | 77 | int error; |
73 | unsigned long ticks; | ||
74 | 78 | ||
75 | error = input_polldev_start_workqueue(); | 79 | error = input_polldev_start_workqueue(); |
76 | if (error) | 80 | if (error) |
@@ -79,10 +83,8 @@ static int input_open_polled_device(struct input_dev *input) | |||
79 | if (dev->flush) | 83 | if (dev->flush) |
80 | dev->flush(dev); | 84 | dev->flush(dev); |
81 | 85 | ||
82 | ticks = msecs_to_jiffies(dev->poll_interval); | 86 | queue_delayed_work(polldev_wq, &dev->work, |
83 | if (ticks >= HZ) | 87 | msecs_to_jiffies(dev->poll_interval)); |
84 | ticks = round_jiffies(ticks); | ||
85 | queue_delayed_work(polldev_wq, &dev->work, ticks); | ||
86 | 88 | ||
87 | return 0; | 89 | return 0; |
88 | } | 90 | } |
@@ -91,7 +93,7 @@ static void input_close_polled_device(struct input_dev *input) | |||
91 | { | 93 | { |
92 | struct input_polled_dev *dev = input->private; | 94 | struct input_polled_dev *dev = input->private; |
93 | 95 | ||
94 | cancel_rearming_delayed_workqueue(polldev_wq, &dev->work); | 96 | cancel_delayed_work_sync(&dev->work); |
95 | input_polldev_stop_workqueue(); | 97 | input_polldev_stop_workqueue(); |
96 | } | 98 | } |
97 | 99 | ||