diff options
author | Martyn Welch <martyn.welch@collabora.co.uk> | 2017-11-08 15:59:35 +0000 |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2017-12-29 11:17:22 +0100 |
commit | 647155bcd549edae57f027e08add4c9ac090f05e (patch) | |
tree | b964c45a757ed8151387b695dfefd6e050915623 /board/ge/common/ge_common.c | |
parent | 1b25f2d9d72823cc6ba35e8cb9086c9b3f6b849b (diff) |
board: ge: mx53ppd: Move check_time() to common location
We are going to be using check_time() on more than the mx53ppd, move this
function to a common location.
Signed-off-by: Martyn Welch <martyn.welch@collabora.co.uk>
Diffstat (limited to 'board/ge/common/ge_common.c')
-rw-r--r-- | board/ge/common/ge_common.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/board/ge/common/ge_common.c b/board/ge/common/ge_common.c new file mode 100644 index 0000000000..c8260960cf --- /dev/null +++ b/board/ge/common/ge_common.c @@ -0,0 +1,55 @@ +/* + * Copyright 2017 General Electric Company + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <i2c.h> +#include <rtc.h> + +void check_time(void) +{ + int ret, i; + struct rtc_time tm; + u8 retry = 3; + + unsigned int current_i2c_bus = i2c_get_bus_num(); + + ret = i2c_set_bus_num(CONFIG_SYS_RTC_BUS_NUM); + if (ret < 0) + return; + + rtc_init(); + + for (i = 0; i < retry; i++) { + ret = rtc_get(&tm); + if (!ret || ret == -EINVAL) + break; + } + + if (ret < 0) + env_set("rtc_status", "RTC_ERROR"); + + if (tm.tm_year > 2037) { + tm.tm_sec = 0; + tm.tm_min = 0; + tm.tm_hour = 0; + tm.tm_mday = 1; + tm.tm_wday = 2; + tm.tm_mon = 1; + tm.tm_year = 2036; + + for (i = 0; i < retry; i++) { + ret = rtc_set(&tm); + if (!ret) + break; + } + + if (ret < 0) + env_set("rtc_status", "RTC_ERROR"); + } + + i2c_set_bus_num(current_i2c_bus); +} + |