diff options
author | Xunlei Pang <pang.xunlei@linaro.org> | 2015-04-01 23:34:31 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-04-03 02:18:27 -0400 |
commit | 482494a8d395877c4776a3d76f89342d7ad7c4c6 (patch) | |
tree | b508bd4362911f1c7e4e1dd1b78dfc1f6bd96843 /drivers/rtc | |
parent | 0307b0d77a0830b0fd4a22b5db4a9fa723a5fa5f (diff) |
drivers/rtc/mxc: Modify rtc_update_alarm() not to touch the alarm time
rtc_class_ops's set_alarm() shouldn't deal with the alarm date,
as this is handled in the rtc core.
See rtc_dev_ioctl()'s RTC_ALM_SET and RTC_WKALM_SET cases.
Signed-off-by: Xunlei Pang <pang.xunlei@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Acked-by: Alessandro Zummo <a.zummo@towertech.it>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1427945681-29972-12-git-send-email-john.stultz@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/rtc')
-rw-r--r-- | drivers/rtc/rtc-mxc.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/drivers/rtc/rtc-mxc.c b/drivers/rtc/rtc-mxc.c index 3c3f8d10ab43..a7b218ff078d 100644 --- a/drivers/rtc/rtc-mxc.c +++ b/drivers/rtc/rtc-mxc.c | |||
@@ -173,29 +173,18 @@ static void set_alarm_or_time(struct device *dev, int time_alarm, u32 time) | |||
173 | * This function updates the RTC alarm registers and then clears all the | 173 | * This function updates the RTC alarm registers and then clears all the |
174 | * interrupt status bits. | 174 | * interrupt status bits. |
175 | */ | 175 | */ |
176 | static int rtc_update_alarm(struct device *dev, struct rtc_time *alrm) | 176 | static void rtc_update_alarm(struct device *dev, struct rtc_time *alrm) |
177 | { | 177 | { |
178 | struct rtc_time alarm_tm, now_tm; | 178 | unsigned long time; |
179 | unsigned long now, time; | ||
180 | struct platform_device *pdev = to_platform_device(dev); | 179 | struct platform_device *pdev = to_platform_device(dev); |
181 | struct rtc_plat_data *pdata = platform_get_drvdata(pdev); | 180 | struct rtc_plat_data *pdata = platform_get_drvdata(pdev); |
182 | void __iomem *ioaddr = pdata->ioaddr; | 181 | void __iomem *ioaddr = pdata->ioaddr; |
183 | 182 | ||
184 | now = get_alarm_or_time(dev, MXC_RTC_TIME); | 183 | rtc_tm_to_time(alrm, &time); |
185 | rtc_time_to_tm(now, &now_tm); | ||
186 | alarm_tm.tm_year = now_tm.tm_year; | ||
187 | alarm_tm.tm_mon = now_tm.tm_mon; | ||
188 | alarm_tm.tm_mday = now_tm.tm_mday; | ||
189 | alarm_tm.tm_hour = alrm->tm_hour; | ||
190 | alarm_tm.tm_min = alrm->tm_min; | ||
191 | alarm_tm.tm_sec = alrm->tm_sec; | ||
192 | rtc_tm_to_time(&alarm_tm, &time); | ||
193 | 184 | ||
194 | /* clear all the interrupt status bits */ | 185 | /* clear all the interrupt status bits */ |
195 | writew(readw(ioaddr + RTC_RTCISR), ioaddr + RTC_RTCISR); | 186 | writew(readw(ioaddr + RTC_RTCISR), ioaddr + RTC_RTCISR); |
196 | set_alarm_or_time(dev, MXC_RTC_ALARM, time); | 187 | set_alarm_or_time(dev, MXC_RTC_ALARM, time); |
197 | |||
198 | return 0; | ||
199 | } | 188 | } |
200 | 189 | ||
201 | static void mxc_rtc_irq_enable(struct device *dev, unsigned int bit, | 190 | static void mxc_rtc_irq_enable(struct device *dev, unsigned int bit, |
@@ -346,11 +335,8 @@ static int mxc_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) | |||
346 | { | 335 | { |
347 | struct platform_device *pdev = to_platform_device(dev); | 336 | struct platform_device *pdev = to_platform_device(dev); |
348 | struct rtc_plat_data *pdata = platform_get_drvdata(pdev); | 337 | struct rtc_plat_data *pdata = platform_get_drvdata(pdev); |
349 | int ret; | ||
350 | 338 | ||
351 | ret = rtc_update_alarm(dev, &alrm->time); | 339 | rtc_update_alarm(dev, &alrm->time); |
352 | if (ret) | ||
353 | return ret; | ||
354 | 340 | ||
355 | memcpy(&pdata->g_rtc_alarm, &alrm->time, sizeof(struct rtc_time)); | 341 | memcpy(&pdata->g_rtc_alarm, &alrm->time, sizeof(struct rtc_time)); |
356 | mxc_rtc_irq_enable(dev, RTC_ALM_BIT, alrm->enabled); | 342 | mxc_rtc_irq_enable(dev, RTC_ALM_BIT, alrm->enabled); |