input: pxa27x_keypad: add wakeup support
Subsystems (2)
PATCH 1/1 input: pxa27x_keypad: add wakeup support
Signed-off-by eric miao <[email protected]>
---
Dmitry, please let me know when this gets merged, thanks.
drivers/input/keyboard/pxa27x_keypad.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-)
drivers/input/keyboard/pxa27x_keypad.c +12 -1
@@ -105,6 +105,8 @@ struct pxa27x_keypad {struct input_dev *input_dev;void __iomem *mmio_base; +int irq; +/* matrix key code map */ unsigned int matrix_keycodes[MAX_MATRIX_KEY_NUM ];
@@ -385,6 +387,9 @@ static int pxa27x_keypad_suspend(struct platform_device *pdev, pm_message_t statstruct pxa27x_keypad *keypad =platform_get_drvdata (pdev);clk_disable (keypad->clk); + +if (device_may_wakeup (&pdev->dev)) +enable_irq_wake (keypad->irq);return 0 ; }
@@ -393,6 +398,9 @@ static int pxa27x_keypad_resume(struct platform_device *pdev)struct pxa27x_keypad *keypad =platform_get_drvdata (pdev);struct input_dev *input_dev = keypad->input_dev; +if (device_may_wakeup (&pdev->dev)) +disable_irq_wake (keypad->irq); +mutex_lock (&input_dev->mutex);if (input_dev->users) {
@@ -497,6 +505,8 @@ static int __devinit pxa27x_keypad_probe(struct platform_device *pdev) goto failed_free_dev; } + keypad->irq = irq; +/* Register the input device */ error =input_register_device (input_dev);if (error) {
@@ -504,6 +514,7 @@ static int __devinit pxa27x_keypad_probe(struct platform_device *pdev) goto failed_free_irq; } +device_init_wakeup (&pdev->dev,1 );return 0 ; failed_free_irq:
@@ -527,7 +538,7 @@ static int __devexit pxa27x_keypad_remove(struct platform_device *pdev)struct pxa27x_keypad *keypad =platform_get_drvdata (pdev);struct resource *res; -free_irq (platform_get_irq (pdev,0 ), pdev); +free_irq (keypad->irq, pdev);clk_disable (keypad->clk);clk_put (keypad->clk);
Signature · 1 line
1.5.4.3
Quoted 2 lines · Eric Miao
Signed-off-by eric miao <[email protected]>
Acked-by Russell King <[email protected]>