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