#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