]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blame - include/linux/input/gpio_tilt.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[mirror_ubuntu-bionic-kernel.git] / include / linux / input / gpio_tilt.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
3bfd5c5b
HS
2#ifndef _INPUT_GPIO_TILT_H
3#define _INPUT_GPIO_TILT_H
4
5/**
6 * struct gpio_tilt_axis - Axis used by the tilt switch
7 * @axis: Constant describing the axis, e.g. ABS_X
8 * @min: minimum value for abs_param
9 * @max: maximum value for abs_param
10 * @fuzz: fuzz value for abs_param
11 * @flat: flat value for abs_param
12 */
13struct gpio_tilt_axis {
14 int axis;
15 int min;
16 int max;
17 int fuzz;
18 int flat;
19};
20
21/**
22 * struct gpio_tilt_state - state description
23 * @gpios: bitfield of gpio target-states for the value
24 * @axes: array containing the axes settings for the gpio state
25 * The array indizes must correspond to the axes defined
26 * in platform_data
27 *
28 * This structure describes a supported axis settings
29 * and the necessary gpio-state which represent it.
30 *
31 * The n-th bit in the bitfield describes the state of the n-th GPIO
32 * from the gpios-array defined in gpio_regulator_config below.
33 */
34struct gpio_tilt_state {
35 int gpios;
36 int *axes;
37};
38
39/**
40 * struct gpio_tilt_platform_data
41 * @gpios: Array containing the gpios determining the tilt state
42 * @nr_gpios: Number of gpios
43 * @axes: Array of gpio_tilt_axis descriptions
44 * @nr_axes: Number of axes
45 * @states: Array of gpio_tilt_state entries describing
46 * the gpio state for specific tilts
47 * @nr_states: Number of states available
48 * @debounce_interval: debounce ticks interval in msecs
49 * @poll_interval: polling interval in msecs - for polling driver only
50 * @enable: callback to enable the tilt switch
51 * @disable: callback to disable the tilt switch
52 *
53 * This structure contains gpio-tilt-switch configuration
54 * information that must be passed by platform code to the
55 * gpio-tilt input driver.
56 */
57struct gpio_tilt_platform_data {
58 struct gpio *gpios;
59 int nr_gpios;
60
61 struct gpio_tilt_axis *axes;
62 int nr_axes;
63
64 struct gpio_tilt_state *states;
65 int nr_states;
66
67 int debounce_interval;
68
69 unsigned int poll_interval;
70 int (*enable)(struct device *dev);
71 void (*disable)(struct device *dev);
72};
73
74#endif