Commit 4e974c12 authored by Kees Cook's avatar Kees Cook Committed by Dmitry Torokhov

Input: convert autorepeat timer to use timer_setup()

In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 5aeaa3e6
...@@ -76,7 +76,7 @@ static void input_start_autorepeat(struct input_dev *dev, int code) ...@@ -76,7 +76,7 @@ static void input_start_autorepeat(struct input_dev *dev, int code)
{ {
if (test_bit(EV_REP, dev->evbit) && if (test_bit(EV_REP, dev->evbit) &&
dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] && dev->rep[REP_PERIOD] && dev->rep[REP_DELAY] &&
dev->timer.data) { dev->timer.function) {
dev->repeat_key = code; dev->repeat_key = code;
mod_timer(&dev->timer, mod_timer(&dev->timer,
jiffies + msecs_to_jiffies(dev->rep[REP_DELAY])); jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]));
...@@ -179,9 +179,9 @@ static void input_pass_event(struct input_dev *dev, ...@@ -179,9 +179,9 @@ static void input_pass_event(struct input_dev *dev,
* dev->event_lock here to avoid racing with input_event * dev->event_lock here to avoid racing with input_event
* which may cause keys get "stuck". * which may cause keys get "stuck".
*/ */
static void input_repeat_key(unsigned long data) static void input_repeat_key(struct timer_list *t)
{ {
struct input_dev *dev = (void *) data; struct input_dev *dev = from_timer(dev, t, timer);
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&dev->event_lock, flags); spin_lock_irqsave(&dev->event_lock, flags);
...@@ -1784,7 +1784,7 @@ struct input_dev *input_allocate_device(void) ...@@ -1784,7 +1784,7 @@ struct input_dev *input_allocate_device(void)
device_initialize(&dev->dev); device_initialize(&dev->dev);
mutex_init(&dev->mutex); mutex_init(&dev->mutex);
spin_lock_init(&dev->event_lock); spin_lock_init(&dev->event_lock);
init_timer(&dev->timer); timer_setup(&dev->timer, NULL, 0);
INIT_LIST_HEAD(&dev->h_list); INIT_LIST_HEAD(&dev->h_list);
INIT_LIST_HEAD(&dev->node); INIT_LIST_HEAD(&dev->node);
...@@ -2047,8 +2047,7 @@ static void devm_input_device_unregister(struct device *dev, void *res) ...@@ -2047,8 +2047,7 @@ static void devm_input_device_unregister(struct device *dev, void *res)
*/ */
void input_enable_softrepeat(struct input_dev *dev, int delay, int period) void input_enable_softrepeat(struct input_dev *dev, int delay, int period)
{ {
dev->timer.data = (unsigned long) dev; dev->timer.function = (TIMER_FUNC_TYPE)input_repeat_key;
dev->timer.function = input_repeat_key;
dev->rep[REP_DELAY] = delay; dev->rep[REP_DELAY] = delay;
dev->rep[REP_PERIOD] = period; dev->rep[REP_PERIOD] = period;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment