Lines Matching +full:poll +full:- +full:interval
18 #include <linux/input-polldev.h>
28 delay = msecs_to_jiffies(dev->poll_interval); in input_polldev_queue_work()
32 queue_delayed_work(system_freezable_wq, &dev->work, delay); in input_polldev_queue_work()
40 dev->poll(dev); in input_polled_device_work()
48 if (dev->open) in input_open_polled_device()
49 dev->open(dev); in input_open_polled_device()
52 if (dev->poll_interval > 0) { in input_open_polled_device()
53 dev->poll(dev); in input_open_polled_device()
64 cancel_delayed_work_sync(&dev->work); in input_close_polled_device()
66 if (dev->close) in input_close_polled_device()
67 dev->close(dev); in input_close_polled_device()
77 return sprintf(buf, "%d\n", polldev->poll_interval); in input_polldev_get_poll()
85 struct input_dev *input = polldev->input; in input_polldev_set_poll()
86 unsigned int interval; in input_polldev_set_poll() local
89 err = kstrtouint(buf, 0, &interval); in input_polldev_set_poll()
93 if (interval < polldev->poll_interval_min) in input_polldev_set_poll()
94 return -EINVAL; in input_polldev_set_poll()
96 if (interval > polldev->poll_interval_max) in input_polldev_set_poll()
97 return -EINVAL; in input_polldev_set_poll()
99 mutex_lock(&input->mutex); in input_polldev_set_poll()
101 polldev->poll_interval = interval; in input_polldev_set_poll()
103 if (input->users) { in input_polldev_set_poll()
104 cancel_delayed_work_sync(&polldev->work); in input_polldev_set_poll()
105 if (polldev->poll_interval > 0) in input_polldev_set_poll()
109 mutex_unlock(&input->mutex); in input_polldev_set_poll()
114 static DEVICE_ATTR(poll, S_IRUGO | S_IWUSR, input_polldev_get_poll,
123 return sprintf(buf, "%d\n", polldev->poll_interval_max); in input_polldev_get_max()
133 return sprintf(buf, "%d\n", polldev->poll_interval_min); in input_polldev_get_min()
155 * input_allocate_polled_device - allocate memory for polled device
168 dev->input = input_allocate_device(); in input_allocate_polled_device()
169 if (!dev->input) { in input_allocate_polled_device()
186 return devres->polldev == data; in devm_input_polldev_match()
192 struct input_polled_dev *polldev = devres->polldev; in devm_input_polldev_release()
195 __func__, dev_name(&polldev->input->dev)); in devm_input_polldev_release()
197 input_put_device(polldev->input); in devm_input_polldev_release()
204 struct input_polled_dev *polldev = devres->polldev; in devm_input_polldev_unregister()
207 __func__, dev_name(&polldev->input->dev)); in devm_input_polldev_unregister()
208 input_unregister_device(polldev->input); in devm_input_polldev_unregister()
218 * devm_input_allocate_polled_device - allocate managed polled device
253 polldev->input->dev.parent = dev; in devm_input_allocate_polled_device()
254 polldev->devres_managed = true; in devm_input_allocate_polled_device()
256 devres->polldev = polldev; in devm_input_allocate_polled_device()
264 * input_free_polled_device - free memory allocated for polled device
273 if (dev->devres_managed) in input_free_polled_device()
274 WARN_ON(devres_destroy(dev->input->dev.parent, in input_free_polled_device()
278 input_put_device(dev->input); in input_free_polled_device()
285 * input_register_polled_device - register polled device
290 * input_allocate_polled_device(). Callers should also set up poll()
297 struct input_dev *input = dev->input; in input_register_polled_device()
300 if (dev->devres_managed) { in input_register_polled_device()
304 return -ENOMEM; in input_register_polled_device()
306 devres->polldev = dev; in input_register_polled_device()
310 INIT_DELAYED_WORK(&dev->work, input_polled_device_work); in input_register_polled_device()
312 if (!dev->poll_interval) in input_register_polled_device()
313 dev->poll_interval = 500; in input_register_polled_device()
314 if (!dev->poll_interval_max) in input_register_polled_device()
315 dev->poll_interval_max = dev->poll_interval; in input_register_polled_device()
317 input->open = input_open_polled_device; in input_register_polled_device()
318 input->close = input_close_polled_device; in input_register_polled_device()
320 input->dev.groups = input_polldev_attribute_groups; in input_register_polled_device()
337 if (dev->devres_managed) { in input_register_polled_device()
338 dev_dbg(input->dev.parent, "%s: registering %s with devres.\n", in input_register_polled_device()
339 __func__, dev_name(&input->dev)); in input_register_polled_device()
340 devres_add(input->dev.parent, devres); in input_register_polled_device()
348 * input_unregister_polled_device - unregister polled device
357 if (dev->devres_managed) in input_unregister_polled_device()
358 WARN_ON(devres_destroy(dev->input->dev.parent, in input_unregister_polled_device()
363 input_unregister_device(dev->input); in input_unregister_polled_device()