linux/include/linux/input-polldev.h
<<
>>
Prefs
   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 */
  34struct 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
  52struct input_polled_dev *input_allocate_polled_device(void);
  53struct input_polled_dev *devm_input_allocate_polled_device(struct device *dev);
  54void input_free_polled_device(struct input_polled_dev *dev);
  55int input_register_polled_device(struct input_polled_dev *dev);
  56void input_unregister_polled_device(struct input_polled_dev *dev);
  57
  58#endif
  59