|
@@ -324,7 +324,12 @@ static void gpio_keys_report_event(struct gpio_button_data *bdata)
|
|
|
unsigned int type = button->type ?: EV_KEY;
|
|
|
int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0) ^ button->active_low;
|
|
|
|
|
|
- input_event(input, type, button->code, !!state);
|
|
|
+ if (type == EV_ABS) {
|
|
|
+ if (state)
|
|
|
+ input_event(input, type, button->code, button->value);
|
|
|
+ } else {
|
|
|
+ input_event(input, type, button->code, !!state);
|
|
|
+ }
|
|
|
input_sync(input);
|
|
|
}
|
|
|
|
|
@@ -363,7 +368,7 @@ static int __devinit gpio_keys_setup_key(struct platform_device *pdev,
|
|
|
struct gpio_button_data *bdata,
|
|
|
struct gpio_keys_button *button)
|
|
|
{
|
|
|
- char *desc = button->desc ? button->desc : "gpio_keys";
|
|
|
+ const char *desc = button->desc ? button->desc : "gpio_keys";
|
|
|
struct device *dev = &pdev->dev;
|
|
|
unsigned long irqflags;
|
|
|
int irq, error;
|