env: Move env_set() to env.h
[oweals/u-boot.git] / board / ge / common / ge_common.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright 2017 General Electric Company
4  */
5
6 #include <common.h>
7 #include <env.h>
8 #include <i2c.h>
9 #include <rtc.h>
10
11 void 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