diff options
author | Shantanu Jain <shjain@codeaurora.org> | 2014-03-19 20:24:22 +0530 |
---|---|---|
committer | Shantanu Jain <shjain@codeaurora.org> | 2017-02-10 17:30:08 +0530 |
commit | eaaf79250da5ddf05378f2b1c6f5eb3129aef686 (patch) | |
tree | fe983fa3f534adee1a6ae3e6e58486786866b334 /drivers | |
parent | c26a324755f986614785921594510b7b57779af2 (diff) |
input: keyboard: correct suspend/resume for gpio_keys
Execute pinctrl operations at correct place in
suspend/resume procedure of gpio_keys driver.
Change-Id: Ic393778e35f52859512bd32ccbf6c4d1079a7e37
Signed-off-by: Shantanu Jain <shjain@codeaurora.org>
Diffstat (limited to 'drivers')
-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; } |