linux/include/linux/input-polldev.h
<<
>>
Prefs
   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 * @open: driver-supplied method that prepares device for polling
  19 *      (enabled the device and maybe flushes device state).
  20 * @close: driver-supplied method that is called when device is no
  21 *      longer being polled. Used to put device into low power mode.
  22 * @poll: driver-supplied method that polls the device and posts
  23 *      input events (mandatory).
  24 * @poll_interval: specifies how often the poll() method should be called.
  25 *      Defaults to 500 msec unless overridden when registering the device.
  26 * @poll_interval_max: specifies upper bound for the poll interval.
  27 *      Defaults to the initial value of @poll_interval.
  28 * @poll_interval_min: specifies lower bound for the poll interval.
  29 *      Defaults to 0.
  30 * @input: input device structure associated with the polled device.
  31 *      Must be properly initialized by the driver (id, name, phys, bits).
  32 *
  33 * Polled input device provides a skeleton for supporting simple input
  34 * devices that do not raise interrupts but have to be periodically
  35 * scanned or polled to detect changes in their state.
  36 */
  37struct input_polled_dev {
  38        void *private;
  39
  40        void (*open)(struct input_polled_dev *dev);
  41        void (*close)(struct input_polled_dev *dev);
  42        void (*poll)(struct input_polled_dev *dev);
  43        unsigned int poll_interval; /* msec */
  44        unsigned int poll_interval_max; /* msec */
  45        unsigned int poll_interval_min; /* msec */
  46
  47        struct input_dev *input;
  48
  49/* private: */
  50        struct delayed_work work;
  51
  52        bool devres_managed;
  53};
  54
  55struct input_polled_dev *input_allocate_polled_device(void);
  56struct input_polled_dev *devm_input_allocate_polled_device(struct device *dev);
  57void input_free_polled_device(struct input_polled_dev *dev);
  58int input_register_polled_device(struct input_polled_dev *dev);
  59void input_unregister_polled_device(struct input_polled_dev *dev);
  60
  61#endif
  62