1#ifndef _INPUT_POLLDEV_H 2#define _INPUT_POLLDEV_H 3 4/* 5 * Copyright (c) 2007 Dmitry Torokhov 6 * 7 * This program is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License version 2 as published by 9 * the Free Software Foundation. 10 */ 11 12#include <linux/input.h> 13#include <linux/workqueue.h> 14 15/** 16 * struct input_polled_dev - simple polled input device 17 * @private: private driver data 18 * @flush: driver-supplied method that flushes device's state upon 19 * opening (optional) 20 * @poll: driver-supplied method that polls the device and posts 21 * input events (mandatory). 22 * @poll_interval: specifies how often the poll() method shoudl be called. 23 * @input: input device structire associated with the polled device. 24 * Must be properly initialized by the driver (id, name, phys, bits). 25 * 26 * Polled input device provides a skeleton for supporting simple input 27 * devices that do not raise interrupts but have to be periodically 28 * scanned or polled to detect changes in their state. 29 */ 30struct input_polled_dev { 31 void *private; 32 33 void (*flush)(struct input_polled_dev *dev); 34 void (*poll)(struct input_polled_dev *dev); 35 unsigned int poll_interval; /* msec */ 36 37 struct input_dev *input; 38 struct delayed_work work; 39}; 40 41struct input_polled_dev *input_allocate_polled_device(void); 42void input_free_polled_device(struct input_polled_dev *dev); 43int input_register_polled_device(struct input_polled_dev *dev); 44void input_unregister_polled_device(struct input_polled_dev *dev); 45 46#endif 47