From e25911524369db851d3d2f1d2f048e6d85a221b6 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Fri, 11 Dec 2015 12:12:30 +0100 Subject: rtc: Fill in weekdays before setting time Some rtcs store the weekday. Make sure it's filled in correctly before passinf the time to the driver. This is easily done by converting it to seconds-since-epoch and back to struct rtc_time. Signed-off-by: Sascha Hauer --- drivers/rtc/class.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/rtc/class.c b/drivers/rtc/class.c index e87f5f7b3e..8b047a638d 100644 --- a/drivers/rtc/class.c +++ b/drivers/rtc/class.c @@ -46,10 +46,16 @@ EXPORT_SYMBOL(rtc_read_time); int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm) { + struct rtc_time time; + unsigned long secs; + if (rtc_valid_tm(tm)) return -EINVAL; - return rtc->ops->set_time(rtc, tm); + rtc_tm_to_time(tm, &secs); + rtc_time_to_tm(secs, &time); + + return rtc->ops->set_time(rtc, &time); } EXPORT_SYMBOL(rtc_set_time); -- cgit v1.2.3