mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
![Aaron Lu](/assets/img/avatar_default.png)
GPIO descriptors are the preferred way over legacy GPIO numbers nowadays. Convert the driver to use GPIO descriptors internally but still allow passing legacy GPIO numbers from platform data to support existing platforms. Signed-off-by: Aaron Lu <aaron.lu@intel.com> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Acked-by: Alexandre Courbot <acourbot@nvidia.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Acked-by: Grant Likely <grant.likely@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
58 lines
1.7 KiB
C
58 lines
1.7 KiB
C
#ifndef _GPIO_KEYS_H
|
|
#define _GPIO_KEYS_H
|
|
|
|
struct device;
|
|
struct gpio_desc;
|
|
|
|
/**
|
|
* struct gpio_keys_button - configuration parameters
|
|
* @code: input event code (KEY_*, SW_*)
|
|
* @gpio: %-1 if this key does not support gpio
|
|
* @active_low: %true indicates that button is considered
|
|
* depressed when gpio is low
|
|
* @desc: label that will be attached to button's gpio
|
|
* @type: input event type (%EV_KEY, %EV_SW, %EV_ABS)
|
|
* @wakeup: configure the button as a wake-up source
|
|
* @debounce_interval: debounce ticks interval in msecs
|
|
* @can_disable: %true indicates that userspace is allowed to
|
|
* disable button via sysfs
|
|
* @value: axis value for %EV_ABS
|
|
* @irq: Irq number in case of interrupt keys
|
|
* @gpiod: GPIO descriptor
|
|
*/
|
|
struct gpio_keys_button {
|
|
unsigned int code;
|
|
int gpio;
|
|
int active_low;
|
|
const char *desc;
|
|
unsigned int type;
|
|
int wakeup;
|
|
int debounce_interval;
|
|
bool can_disable;
|
|
int value;
|
|
unsigned int irq;
|
|
struct gpio_desc *gpiod;
|
|
};
|
|
|
|
/**
|
|
* struct gpio_keys_platform_data - platform data for gpio_keys driver
|
|
* @buttons: pointer to array of &gpio_keys_button structures
|
|
* describing buttons attached to the device
|
|
* @nbuttons: number of elements in @buttons array
|
|
* @poll_interval: polling interval in msecs - for polling driver only
|
|
* @rep: enable input subsystem auto repeat
|
|
* @enable: platform hook for enabling the device
|
|
* @disable: platform hook for disabling the device
|
|
* @name: input device name
|
|
*/
|
|
struct gpio_keys_platform_data {
|
|
struct gpio_keys_button *buttons;
|
|
int nbuttons;
|
|
unsigned int poll_interval;
|
|
unsigned int rep:1;
|
|
int (*enable)(struct device *dev);
|
|
void (*disable)(struct device *dev);
|
|
const char *name;
|
|
};
|
|
|
|
#endif
|