Skip to content

Commit

Permalink
Input: bf54x-keys - add infrastructure for keypad wakeups
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Michael Hennerich authored and Dmitry Torokhov committed Apr 24, 2008
1 parent d7b5247 commit d0478d0
Showing 1 changed file with 32 additions and 3 deletions.
35 changes: 32 additions & 3 deletions drivers/input/keyboard/bf54x-keys.c
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,8 @@ static int __devinit bfin_kpad_probe(struct platform_device *pdev)

bfin_write_KPAD_CTL(bfin_read_KPAD_CTL() | KPAD_EN);

device_init_wakeup(&pdev->dev, 1);

printk(KERN_ERR DRV_NAME
": Blackfin BF54x Keypad registered IRQ %d\n", bf54x_kpad->irq);

Expand Down Expand Up @@ -354,13 +356,40 @@ static int __devexit bfin_kpad_remove(struct platform_device *pdev)
return 0;
}

#ifdef CONFIG_PM
static int bfin_kpad_suspend(struct platform_device *pdev, pm_message_t state)
{
struct bf54x_kpad *bf54x_kpad = platform_get_drvdata(pdev);

if (device_may_wakeup(&pdev->dev))
enable_irq_wake(bf54x_kpad->irq);

return 0;
}

static int bfin_kpad_resume(struct platform_device *pdev)
{
struct bf54x_kpad *bf54x_kpad = platform_get_drvdata(pdev);

if (device_may_wakeup(&pdev->dev))
disable_irq_wake(bf54x_kpad->irq);

return 0;
}
#else
# define bfin_kpad_suspend NULL
# define bfin_kpad_resume NULL
#endif

struct platform_driver bfin_kpad_device_driver = {
.probe = bfin_kpad_probe,
.remove = __devexit_p(bfin_kpad_remove),
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
}
},
.probe = bfin_kpad_probe,
.remove = __devexit_p(bfin_kpad_remove),
.suspend = bfin_kpad_suspend,
.resume = bfin_kpad_resume,
};

static int __init bfin_kpad_init(void)
Expand Down

0 comments on commit d0478d0

Please sign in to comment.