tizen 2.3.1 release
[kernel/linux-3.0.git] / drivers / input / joystick / walkera0701.c
index 4dfa1ee..f8f892b 100644 (file)
@@ -196,6 +196,7 @@ static void walkera0701_close(struct input_dev *dev)
        struct walkera_dev *w = input_get_drvdata(dev);
 
        parport_disable_irq(w->parport);
+       hrtimer_cancel(&w->timer);
 }
 
 static int walkera0701_connect(struct walkera_dev *w, int parport)
@@ -224,6 +225,9 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
        if (parport_claim(w->pardevice))
                goto init_err1;
 
+       hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+       w->timer.function = timer_handler;
+
        w->input_dev = input_allocate_device();
        if (!w->input_dev)
                goto init_err2;
@@ -254,8 +258,6 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
        if (err)
                goto init_err3;
 
-       hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
-       w->timer.function = timer_handler;
        return 0;
 
  init_err3:
@@ -271,7 +273,6 @@ static int walkera0701_connect(struct walkera_dev *w, int parport)
 
 static void walkera0701_disconnect(struct walkera_dev *w)
 {
-       hrtimer_cancel(&w->timer);
        input_unregister_device(w->input_dev);
        parport_release(w->pardevice);
        parport_unregister_device(w->pardevice);