Input: add generic GPIO-tilt driver
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>
This commit is contained in:
committed by
Dmitry Torokhov
parent
a6c61789c8
commit
3bfd5c5baf
73
include/linux/input/gpio_tilt.h
Normal file
73
include/linux/input/gpio_tilt.h
Normal file
@ -0,0 +1,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
|
Reference in New Issue
Block a user