Commit dfaf09ac authored by Laxman Dewangan's avatar Laxman Dewangan Committed by Linus Torvalds

drivers/rtc/rtc-tps65910.c: remove unnecessary irq stat save and restore

The driver stores the interrupt enable register before going to suspend
and restore in resume.  Also it enables alarm before going to suspend.

The driver only write the Interrupt enable register for enabling ALARM and
does not enable any other bits.  So it is not require to save complete
register and enable ALARM interrupt before suspend and restore in resume.

Also ALARM interrupt already enable if alarm is enabled before going to
suspend and hence it is not require to enable explictly in suspend.

Removing such above code.
Signed-off-by: default avatarLaxman Dewangan <ldewangan@nvidia.com>
Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent eb5eba4e
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
struct tps65910_rtc { struct tps65910_rtc {
struct rtc_device *rtc; struct rtc_device *rtc;
int irq; int irq;
/* To store the list of enabled interrupts */
u32 irqstat;
}; };
/* Total number of RTC registers needed to set time*/ /* Total number of RTC registers needed to set time*/
...@@ -309,35 +307,20 @@ static int tps65910_rtc_remove(struct platform_device *pdev) ...@@ -309,35 +307,20 @@ static int tps65910_rtc_remove(struct platform_device *pdev)
static int tps65910_rtc_suspend(struct device *dev) static int tps65910_rtc_suspend(struct device *dev)
{ {
struct tps65910 *tps = dev_get_drvdata(dev->parent);
struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev); struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev);
u8 alarm = TPS65910_RTC_INTERRUPTS_IT_ALARM;
int ret;
if (device_may_wakeup(dev)) if (device_may_wakeup(dev))
enable_irq_wake(tps_rtc->irq); enable_irq_wake(tps_rtc->irq);
return 0;
/* Store current list of enabled interrupts*/
ret = regmap_read(tps->regmap, TPS65910_RTC_INTERRUPTS,
&tps->rtc->irqstat);
if (ret < 0)
return ret;
/* Enable RTC ALARM interrupt only */
return regmap_write(tps->regmap, TPS65910_RTC_INTERRUPTS, alarm);
} }
static int tps65910_rtc_resume(struct device *dev) static int tps65910_rtc_resume(struct device *dev)
{ {
struct tps65910 *tps = dev_get_drvdata(dev->parent);
struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev); struct tps65910_rtc *tps_rtc = dev_get_drvdata(dev);
if (device_may_wakeup(dev)) if (device_may_wakeup(dev))
disable_irq_wake(tps_rtc->irq); disable_irq_wake(tps_rtc->irq);
return 0;
/* Restore list of enabled interrupts before suspend */
return regmap_write(tps->regmap, TPS65910_RTC_INTERRUPTS,
tps->rtc->irqstat);
} }
static const struct dev_pm_ops tps65910_rtc_pm_ops = { static const struct dev_pm_ops tps65910_rtc_pm_ops = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment