Browse Source

Input: spear_keyboard - fix clock handling during suspend/resume

SPEAr keyboard should normally disable clock during suspend and enable it
during resume.

For cases where it is expected to act as a wakeup source the clock can
remain in the same state i.e. kept enabled if it is being used.

Signed-off-by: Shiraz Hashim <shiraz.hashim@st.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Shiraz Hashim 13 years ago
parent
commit
53fe628558
1 changed files with 10 additions and 8 deletions
  1. 10 8
      drivers/input/keyboard/spear-keyboard.c

+ 10 - 8
drivers/input/keyboard/spear-keyboard.c

@@ -320,11 +320,12 @@ static int spear_kbd_suspend(struct device *dev)
 
 	mutex_lock(&input_dev->mutex);
 
-	if (input_dev->users)
-		clk_enable(kbd->clk);
-
-	if (device_may_wakeup(&pdev->dev))
+	if (device_may_wakeup(&pdev->dev)) {
 		enable_irq_wake(kbd->irq);
+	} else {
+		if (input_dev->users)
+			clk_disable(kbd->clk);
+	}
 
 	mutex_unlock(&input_dev->mutex);
 
@@ -339,11 +340,12 @@ static int spear_kbd_resume(struct device *dev)
 
 	mutex_lock(&input_dev->mutex);
 
-	if (device_may_wakeup(&pdev->dev))
+	if (device_may_wakeup(&pdev->dev)) {
 		disable_irq_wake(kbd->irq);
-
-	if (input_dev->users)
-		clk_enable(kbd->clk);
+	} else {
+		if (input_dev->users)
+			clk_enable(kbd->clk);
+	}
 
 	mutex_unlock(&input_dev->mutex);