blob: c8260960cf5420ced342bb888ac6fb6e1311ca2f [file] [log] [blame]
Martyn Welch7d258bf2017-11-08 15:59:35 +00001/*
2 * Copyright 2017 General Electric Company
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#include <common.h>
8#include <i2c.h>
9#include <rtc.h>
10
11void check_time(void)
12{
13 int ret, i;
14 struct rtc_time tm;
15 u8 retry = 3;
16
17 unsigned int current_i2c_bus = i2c_get_bus_num();
18
19 ret = i2c_set_bus_num(CONFIG_SYS_RTC_BUS_NUM);
20 if (ret < 0)
21 return;
22
23 rtc_init();
24
25 for (i = 0; i < retry; i++) {
26 ret = rtc_get(&tm);
27 if (!ret || ret == -EINVAL)
28 break;
29 }
30
31 if (ret < 0)
32 env_set("rtc_status", "RTC_ERROR");
33
34 if (tm.tm_year > 2037) {
35 tm.tm_sec = 0;
36 tm.tm_min = 0;
37 tm.tm_hour = 0;
38 tm.tm_mday = 1;
39 tm.tm_wday = 2;
40 tm.tm_mon = 1;
41 tm.tm_year = 2036;
42
43 for (i = 0; i < retry; i++) {
44 ret = rtc_set(&tm);
45 if (!ret)
46 break;
47 }
48
49 if (ret < 0)
50 env_set("rtc_status", "RTC_ERROR");
51 }
52
53 i2c_set_bus_num(current_i2c_bus);
54}
55