Commit 337fa19c authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Alexandre Belloni

rtc: ls1x: remove mktime usage

The loongson1 platform is 32-bit, so storing a time value in 32 bits
suffers from limited range. In this case it is likely to be correct
until 2106, but it's better to avoid the limitation and just use
the time64_t based mktime64() and rtc_time64_to_tm() interfaces.

The hardware uses a 32-bit year number, and time64_t can cover that
entire range.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
parent 0d1c6553
...@@ -87,16 +87,17 @@ ...@@ -87,16 +87,17 @@
static int ls1x_rtc_read_time(struct device *dev, struct rtc_time *rtm) static int ls1x_rtc_read_time(struct device *dev, struct rtc_time *rtm)
{ {
unsigned long v, t; unsigned long v;
time64_t t;
v = readl(SYS_TOYREAD0); v = readl(SYS_TOYREAD0);
t = readl(SYS_TOYREAD1); t = readl(SYS_TOYREAD1);
memset(rtm, 0, sizeof(struct rtc_time)); memset(rtm, 0, sizeof(struct rtc_time));
t = mktime((t & LS1X_YEAR_MASK), ls1x_get_month(v), t = mktime64((t & LS1X_YEAR_MASK), ls1x_get_month(v),
ls1x_get_day(v), ls1x_get_hour(v), ls1x_get_day(v), ls1x_get_hour(v),
ls1x_get_min(v), ls1x_get_sec(v)); ls1x_get_min(v), ls1x_get_sec(v));
rtc_time_to_tm(t, rtm); rtc_time64_to_tm(t, rtm);
return 0; return 0;
} }
......
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