Skip to content

Commit

Permalink
rtc: Suppress duplicate enable/disable of WM8350 update interrupt
Browse files Browse the repository at this point in the history
Unlike the wm8350-custom code genirq nests enable and disable calls
so we can't just unconditionally mask or unmask the interrupt,
we need to remember the state we set and only mask or unmask when
there is a real change.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Alessandro Zummo <a.zummo@towertech.it>
Cc: rtc-linux@googlegroups.com
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
  • Loading branch information
Mark Brown authored and Samuel Ortiz committed Mar 7, 2010
1 parent f99344f commit 29c71b1
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 0 deletions.
7 changes: 7 additions & 0 deletions drivers/rtc/rtc-wm8350.c
Original file line number Diff line number Diff line change
Expand Up @@ -307,11 +307,18 @@ static int wm8350_rtc_update_irq_enable(struct device *dev,
{
struct wm8350 *wm8350 = dev_get_drvdata(dev);

/* Suppress duplicate changes since genirq nests enable and
* disable calls. */
if (enabled == wm8350->rtc.update_enabled)
return 0;

if (enabled)
wm8350_unmask_irq(wm8350, WM8350_IRQ_RTC_SEC);
else
wm8350_mask_irq(wm8350, WM8350_IRQ_RTC_SEC);

wm8350->rtc.update_enabled = enabled;

return 0;
}

Expand Down
1 change: 1 addition & 0 deletions include/linux/mfd/wm8350/rtc.h
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@ struct wm8350_rtc {
struct platform_device *pdev;
struct rtc_device *rtc;
int alarm_enabled; /* used over suspend/resume */
int update_enabled;
};

#endif

0 comments on commit 29c71b1

Please sign in to comment.