diff options
Diffstat (limited to 'drivers/rtc/rtc-wm8350.c')
| -rw-r--r-- | drivers/rtc/rtc-wm8350.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/rtc/rtc-wm8350.c b/drivers/rtc/rtc-wm8350.c index f1e440521c54..3d0dc76b38af 100644 --- a/drivers/rtc/rtc-wm8350.c +++ b/drivers/rtc/rtc-wm8350.c | |||
| @@ -307,11 +307,18 @@ static int wm8350_rtc_update_irq_enable(struct device *dev, | |||
| 307 | { | 307 | { |
| 308 | struct wm8350 *wm8350 = dev_get_drvdata(dev); | 308 | struct wm8350 *wm8350 = dev_get_drvdata(dev); |
| 309 | 309 | ||
| 310 | /* Suppress duplicate changes since genirq nests enable and | ||
| 311 | * disable calls. */ | ||
| 312 | if (enabled == wm8350->rtc.update_enabled) | ||
| 313 | return 0; | ||
| 314 | |||
| 310 | if (enabled) | 315 | if (enabled) |
| 311 | wm8350_unmask_irq(wm8350, WM8350_IRQ_RTC_SEC); | 316 | wm8350_unmask_irq(wm8350, WM8350_IRQ_RTC_SEC); |
| 312 | else | 317 | else |
| 313 | wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_SEC); | 318 | wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_SEC); |
| 314 | 319 | ||
| 320 | wm8350->rtc.update_enabled = enabled; | ||
| 321 | |||
| 315 | return 0; | 322 | return 0; |
| 316 | } | 323 | } |
| 317 | 324 | ||
| @@ -478,8 +485,8 @@ static int __devexit wm8350_rtc_remove(struct platform_device *pdev) | |||
| 478 | struct wm8350 *wm8350 = platform_get_drvdata(pdev); | 485 | struct wm8350 *wm8350 = platform_get_drvdata(pdev); |
| 479 | struct wm8350_rtc *wm_rtc = &wm8350->rtc; | 486 | struct wm8350_rtc *wm_rtc = &wm8350->rtc; |
| 480 | 487 | ||
| 481 | wm8350_free_irq(wm8350, WM8350_IRQ_RTC_SEC); | 488 | wm8350_free_irq(wm8350, WM8350_IRQ_RTC_SEC, wm8350); |
| 482 | wm8350_free_irq(wm8350, WM8350_IRQ_RTC_ALM); | 489 | wm8350_free_irq(wm8350, WM8350_IRQ_RTC_ALM, wm8350); |
| 483 | 490 | ||
| 484 | rtc_device_unregister(wm_rtc->rtc); | 491 | rtc_device_unregister(wm_rtc->rtc); |
| 485 | 492 | ||
