root/include/linux/input-polldev.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 #ifndef _INPUT_POLLDEV_H
   3 #define _INPUT_POLLDEV_H
   4 
   5 /*
   6  * Copyright (c) 2007 Dmitry Torokhov
   7  */
   8 
   9 #include <linux/input.h>
  10 #include <linux/workqueue.h>
  11 
  12 /**
  13  * struct input_polled_dev - simple polled input device
  14  * @private: private driver data.
  15  * @open: driver-supplied method that prepares device for polling
  16  *      (enabled the device and maybe flushes device state).
  17  * @close: driver-supplied method that is called when device is no
  18  *      longer being polled. Used to put device into low power mode.
  19  * @poll: driver-supplied method that polls the device and posts
  20  *      input events (mandatory).
  21  * @poll_interval: specifies how often the poll() method should be called.
  22  *      Defaults to 500 msec unless overridden when registering the device.
  23  * @poll_interval_max: specifies upper bound for the poll interval.
  24  *      Defaults to the initial value of @poll_interval.
  25  * @poll_interval_min: specifies lower bound for the poll interval.
  26  *      Defaults to 0.
  27  * @input: input device structure associated with the polled device.
  28  *      Must be properly initialized by the driver (id, name, phys, bits).
  29  *
  30  * Polled input device provides a skeleton for supporting simple input
  31  * devices that do not raise interrupts but have to be periodically
  32  * scanned or polled to detect changes in their state.
  33  */
  34 struct input_polled_dev {
  35         void *private;
  36 
  37         void (*open)(struct input_polled_dev *dev);
  38         void (*close)(struct input_polled_dev *dev);
  39         void (*poll)(struct input_polled_dev *dev);
  40         unsigned int poll_interval; /* msec */
  41         unsigned int poll_interval_max; /* msec */
  42         unsigned int poll_interval_min; /* msec */
  43 
  44         struct input_dev *input;
  45 
  46 /* private: */
  47         struct delayed_work work;
  48 
  49         bool devres_managed;
  50 };
  51 
  52 struct input_polled_dev *input_allocate_polled_device(void);
  53 struct input_polled_dev *devm_input_allocate_polled_device(struct device *dev);
  54 void input_free_polled_device(struct input_polled_dev *dev);
  55 int input_register_polled_device(struct input_polled_dev *dev);
  56 void input_unregister_polled_device(struct input_polled_dev *dev);
  57 
  58 #endif

/* [<][>][^][v][top][bottom][index][help] */