On Thu, Apr 03, 2014 at 12:17:52AM -0600, Loc Ho wrote: > +static int xgene_rtc_suspend(struct device *dev) > +{ > + struct platform_device *pdev = to_platform_device(dev); > + struct xgene_rtc_dev *pdata = platform_get_drvdata(pdev); > + int irq; > + > + irq = platform_get_irq(pdev, 0); > + if (device_may_wakeup(&pdev->dev)) { > + if (!enable_irq_wake(irq)) > + pdata->irq_wake = 1; > + } else { > + xgene_rtc_alarm_irq_enable(dev, 0); > + clk_disable(pdata->clk); > + } Why does the driver only disable the clock over suspend rather than also unpreparing it? > + if (device_may_wakeup(&pdev->dev)) { > + if (pdata->irq_wake) { > + disable_irq_wake(irq); > + pdata->irq_wake = 0; > + } > + } else { > + clk_enable(pdata->clk); It's also not checking for errors here. > + xgene_rtc_alarm_irq_enable(dev, 1); > + } Won't this unconditionally enable the interrupt regardless of what the setting was prior to suspend?
Attachment:
signature.asc
Description: Digital signature