| #ifndef _INPUT_POLLDEV_H |
| #define _INPUT_POLLDEV_H |
| |
| /* |
| * Copyright (c) 2007 Dmitry Torokhov |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 as published by |
| * the Free Software Foundation. |
| */ |
| |
| #include <linux/input.h> |
| #include <linux/workqueue.h> |
| |
| /** |
| * struct input_polled_dev - simple polled input device |
| * @private: private driver data |
| * @flush: driver-supplied method that flushes device's state upon |
| * opening (optional) |
| * @poll: driver-supplied method that polls the device and posts |
| * input events (mandatory). |
| * @poll_interval: specifies how often the poll() method shoudl be called. |
| * @input: input device structire associated with the polled device. |
| * Must be properly initialized by the driver (id, name, phys, bits). |
| * |
| * Polled input device provides a skeleton for supporting simple input |
| * devices that do not raise interrupts but have to be periodically |
| * scanned or polled to detect changes in their state. |
| */ |
| struct input_polled_dev { |
| void *private; |
| |
| void (*flush)(struct input_polled_dev *dev); |
| void (*poll)(struct input_polled_dev *dev); |
| unsigned int poll_interval; /* msec */ |
| |
| struct input_dev *input; |
| struct delayed_work work; |
| }; |
| |
| struct input_polled_dev *input_allocate_polled_device(void); |
| void input_free_polled_device(struct input_polled_dev *dev); |
| int input_register_polled_device(struct input_polled_dev *dev); |
| void input_unregister_polled_device(struct input_polled_dev *dev); |
| |
| #endif |