Input: polldev - immediately poll device upon opening
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 3 Aug 2011 05:22:46 +0000 (22:22 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 9 Aug 2011 08:32:45 +0000 (01:32 -0700)
To allow open/ioctl(EVIOCGABS)/close use pattern for polled devices read
the device in context of open() call instead of offloading the first read
to a workqueue. This will ensure that once call to open() returns device
would have cached reasonably recent axis values that can be retrieved via
appropriate ioctl.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/input-polldev.c

index b1aabde87523176f17ce0896e98403d4fda6f0a1..b253973881b82f69e7eaaa82c73cdc07fe843f22 100644 (file)
@@ -49,8 +49,10 @@ static int input_open_polled_device(struct input_dev *input)
                dev->open(dev);
 
        /* Only start polling if polling is enabled */
-       if (dev->poll_interval > 0)
-               queue_delayed_work(system_freezable_wq, &dev->work, 0);
+       if (dev->poll_interval > 0) {
+               dev->poll(dev);
+               input_polldev_queue_work(dev);
+       }
 
        return 0;
 }