• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
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  */
13 struct 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  */
34 struct 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  */
57 struct 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
75