diff options
author | Alejandro Gonzalez <alex.gonzalez@digi.com> | 2010-06-29 12:47:59 +0200 |
---|---|---|
committer | Alejandro Gonzalez <alex.gonzalez@digi.com> | 2010-06-29 12:47:59 +0200 |
commit | 03aa1f973871d4b34490e02db5e3fa0e7f03073a (patch) | |
tree | ac3948169a7c7af47f1606cf29045d0c4b58c260 /drivers/rtc | |
parent | 8948e75e75d30aaf314a81edb2db1c401031e826 (diff) |
ccwmx51: Allow for the GPIO and RTC wake up interrupts to be disabled.
Signed-off-by: Alejandro Gonzalez <alex.gonzalez@digi.com>
Diffstat (limited to 'drivers/rtc')
-rw-r--r-- | drivers/rtc/rtc-mc13892.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/rtc/rtc-mc13892.c b/drivers/rtc/rtc-mc13892.c index 3b7e3af4e54c..213aba5c8d85 100644 --- a/drivers/rtc/rtc-mc13892.c +++ b/drivers/rtc/rtc-mc13892.c @@ -18,6 +18,8 @@ #include <linux/pmic_status.h> #include <linux/pmic_external.h> +#include <linux/irq.h> + #define RTC_TIME_LSH 0 #define RTC_DAY_LSH 0 #define RTCALARM_TIME_LSH 0 @@ -232,8 +234,22 @@ static int __exit mxc_rtc_remove(struct platform_device *pdev) static int mxc_rtc_suspend(struct platform_device *pdev, pm_message_t state) { - if (device_may_wakeup(&pdev->dev)) - enable_irq_wake(platform_get_irq(pdev, 0)); + int irq; + struct irq_desc *desc; + + if(!pdev) + return -1; + + irq = platform_get_irq(pdev, 0); + + if (device_may_wakeup(&pdev->dev)) { + enable_irq_wake(irq); + } + else { + desc = irq_to_desc(irq); + if(desc->status & IRQ_WAKEUP) + disable_irq_wake(irq); + } return 0; } |