diff options
Diffstat (limited to 'drivers/input')
| -rw-r--r-- | drivers/input/keyboard/gpio_keys.c | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index 517b08b3bc0c..cf29f2756b84 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -870,6 +870,14 @@ static int gpio_keys_suspend(struct device *dev) struct input_dev *input = ddata->input; int i, ret; + if (ddata->key_pinctrl) { + ret = gpio_keys_pinctrl_configure(ddata, false); + if (ret) { + dev_err(dev, "failed to put the pin in suspend state\n"); + return ret; + } + } + if (device_may_wakeup(dev)) { for (i = 0; i < ddata->pdata->nbuttons; i++) { struct gpio_button_data *bdata = &ddata->data[i]; @@ -883,14 +891,6 @@ static int gpio_keys_suspend(struct device *dev) mutex_unlock(&input->mutex); } - if (ddata->key_pinctrl) { - ret = gpio_keys_pinctrl_configure(ddata, false); - if (ret) { - dev_err(dev, "failed to put the pin in suspend state\n"); - return ret; - } - } - return 0; } @@ -901,6 +901,14 @@ static int gpio_keys_resume(struct device *dev) int error = 0; int i; + if (ddata->key_pinctrl) { + error = gpio_keys_pinctrl_configure(ddata, true); + if (error) { + dev_err(dev, "failed to put the pin in resume state\n"); + return error; + } + } + if (device_may_wakeup(dev)) { for (i = 0; i < ddata->pdata->nbuttons; i++) { struct gpio_button_data *bdata = &ddata->data[i]; @@ -917,15 +925,6 @@ static int gpio_keys_resume(struct device *dev) if (error) return error; - if (ddata->key_pinctrl) { - error = gpio_keys_pinctrl_configure(ddata, true); - if (error) { - dev_err(dev, "failed to put the pin in resume state\n"); - return error; - } - } - - gpio_keys_report_state(ddata); return 0; } |
