diff options
Diffstat (limited to 'drivers/rtc/rtc-at91sam9.c')
| -rw-r--r-- | drivers/rtc/rtc-at91sam9.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c index bbf10ecf416..56728a2a338 100644 --- a/drivers/rtc/rtc-at91sam9.c +++ b/drivers/rtc/rtc-at91sam9.c @@ -274,7 +274,7 @@ static irqreturn_t at91_rtc_interrupt(int irq, void *_rtc)  	 * SR clears it, so we must only read it in this irq handler!  	 */  	mr = rtt_readl(rtc, MR) & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN); -	sr = rtt_readl(rtc, SR) & mr; +	sr = rtt_readl(rtc, SR) & (mr >> 16);  	if (!sr)  		return IRQ_NONE; @@ -321,6 +321,10 @@ static int __init at91_rtc_probe(struct platform_device *pdev)  	if (!rtc)  		return -ENOMEM; +	/* platform setup code should have handled this; sigh */ +	if (!device_can_wakeup(&pdev->dev)) +		device_init_wakeup(&pdev->dev, 1); +  	platform_set_drvdata(pdev, rtc);  	rtc->rtt = (void __force __iomem *) (AT91_VA_BASE_SYS - AT91_BASE_SYS);  	rtc->rtt += r->start;  |