mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 11:49:32 +00:00
![Heiko Stübner](/assets/img/avatar_default.png)
There exist tilt switches that simply report their tilt-state via some gpios. The number and orientation of their axes can vary depending on the switch used and the build of the device. Also two or more one-axis switches could be combined to provide multi-dimensional orientation. One example of a device using such a switch is the family of Qisda ebook readers, where the switch provides information about the landscape / portrait orientation of the device. The example in Documentation/input/gpio-tilt.txt documents exactly this one-axis device. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
#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
|