]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/input/input-polldev.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus
[mirror_ubuntu-jammy-kernel.git] / drivers / input / input-polldev.c
index b773d4c756a61333d1e5d65ae5cc282cbe01815b..490918a5d1922789f1f206c2746579c6c78a7009 100644 (file)
@@ -60,10 +60,15 @@ static void input_polled_device_work(struct work_struct *work)
 {
        struct input_polled_dev *dev =
                container_of(work, struct input_polled_dev, work.work);
+       unsigned long delay;
 
        dev->poll(dev);
-       queue_delayed_work(polldev_wq, &dev->work,
-                          msecs_to_jiffies(dev->poll_interval));
+
+       delay = msecs_to_jiffies(dev->poll_interval);
+       if (delay >= HZ)
+               delay = round_jiffies_relative(delay);
+
+       queue_delayed_work(polldev_wq, &dev->work, delay);
 }
 
 static int input_open_polled_device(struct input_dev *input)
@@ -88,7 +93,7 @@ static void input_close_polled_device(struct input_dev *input)
 {
        struct input_polled_dev *dev = input->private;
 
-       cancel_rearming_delayed_workqueue(polldev_wq, &dev->work);
+       cancel_delayed_work_sync(&dev->work);
        input_polldev_stop_workqueue();
 }