|
|
@@ -341,8 +341,14 @@ static void gpio_keys_gpio_report_event(struct gpio_button_data *bdata)
|
|
|
const struct gpio_keys_button *button = bdata->button;
|
|
|
struct input_dev *input = bdata->input;
|
|
|
unsigned int type = button->type ?: EV_KEY;
|
|
|
- int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0) ^ button->active_low;
|
|
|
+ int state = gpio_get_value_cansleep(button->gpio);
|
|
|
|
|
|
+ if (state < 0) {
|
|
|
+ dev_err(input->dev.parent, "failed to get gpio state\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ state = (state ? 1 : 0) ^ button->active_low;
|
|
|
if (type == EV_ABS) {
|
|
|
if (state)
|
|
|
input_event(input, type, button->code, button->value);
|