From: Deepak Sikri <deepak.sikri@xxxxxx> This patch handles the fix for unbalanced irq for the cases when enable_irq_wake fails, and a warning related to same is displayed on the console. The workaround is handled at the driver level. Signed-off-by: Deepak Sikri <deepak.sikri@xxxxxx> Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxx> Signed-off-by: Rajeev Kumar <rajeev-dlh.kumar@xxxxxx> --- drivers/input/keyboard/spear-keyboard.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/input/keyboard/spear-keyboard.c b/drivers/input/keyboard/spear-keyboard.c index 0e7f686..6eb2dd8 100644 --- a/drivers/input/keyboard/spear-keyboard.c +++ b/drivers/input/keyboard/spear-keyboard.c @@ -58,6 +58,7 @@ struct spear_kbd { void __iomem *io_base; struct clk *clk; unsigned int irq; + unsigned int irq_wake; unsigned short last_key; unsigned int mode; unsigned short keycodes[256]; @@ -287,8 +288,10 @@ static int spear_kbd_suspend(struct device *dev) if (input_dev->users) clk_enable(kbd->clk); - if (device_may_wakeup(&pdev->dev)) - enable_irq_wake(kbd->irq); + if (device_may_wakeup(&pdev->dev)) { + if (!enable_irq_wake(kbd->irq)) + kbd->irq_wake = 1; + } mutex_unlock(&input_dev->mutex); @@ -303,8 +306,12 @@ static int spear_kbd_resume(struct device *dev) mutex_lock(&input_dev->mutex); - if (device_may_wakeup(&pdev->dev)) - disable_irq_wake(kbd->irq); + if (device_may_wakeup(&pdev->dev)) { + if (kbd->irq_wake) { + kbd->irq_wake = 0; + disable_irq_wake(kbd->irq); + } + } if (input_dev->users) clk_enable(kbd->clk); -- 1.7.8.110.g4cb5d -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html