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 */ 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 75