1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 2647155bcSMartyn Welch /* 3647155bcSMartyn Welch * Copyright 2017 General Electric Company 4647155bcSMartyn Welch */ 5647155bcSMartyn Welch 6647155bcSMartyn Welch #include <common.h> 7647155bcSMartyn Welch #include <i2c.h> 8647155bcSMartyn Welch #include <rtc.h> 9647155bcSMartyn Welch check_time(void)10647155bcSMartyn Welchvoid check_time(void) 11647155bcSMartyn Welch { 12647155bcSMartyn Welch int ret, i; 13647155bcSMartyn Welch struct rtc_time tm; 14647155bcSMartyn Welch u8 retry = 3; 15647155bcSMartyn Welch 16647155bcSMartyn Welch unsigned int current_i2c_bus = i2c_get_bus_num(); 17647155bcSMartyn Welch 18647155bcSMartyn Welch ret = i2c_set_bus_num(CONFIG_SYS_RTC_BUS_NUM); 19647155bcSMartyn Welch if (ret < 0) 20647155bcSMartyn Welch return; 21647155bcSMartyn Welch 22647155bcSMartyn Welch rtc_init(); 23647155bcSMartyn Welch 24647155bcSMartyn Welch for (i = 0; i < retry; i++) { 25647155bcSMartyn Welch ret = rtc_get(&tm); 26647155bcSMartyn Welch if (!ret || ret == -EINVAL) 27647155bcSMartyn Welch break; 28647155bcSMartyn Welch } 29647155bcSMartyn Welch 30647155bcSMartyn Welch if (ret < 0) 31647155bcSMartyn Welch env_set("rtc_status", "RTC_ERROR"); 32647155bcSMartyn Welch 33647155bcSMartyn Welch if (tm.tm_year > 2037) { 34647155bcSMartyn Welch tm.tm_sec = 0; 35647155bcSMartyn Welch tm.tm_min = 0; 36647155bcSMartyn Welch tm.tm_hour = 0; 37647155bcSMartyn Welch tm.tm_mday = 1; 38647155bcSMartyn Welch tm.tm_wday = 2; 39647155bcSMartyn Welch tm.tm_mon = 1; 40647155bcSMartyn Welch tm.tm_year = 2036; 41647155bcSMartyn Welch 42647155bcSMartyn Welch for (i = 0; i < retry; i++) { 43647155bcSMartyn Welch ret = rtc_set(&tm); 44647155bcSMartyn Welch if (!ret) 45647155bcSMartyn Welch break; 46647155bcSMartyn Welch } 47647155bcSMartyn Welch 48647155bcSMartyn Welch if (ret < 0) 49647155bcSMartyn Welch env_set("rtc_status", "RTC_ERROR"); 50647155bcSMartyn Welch } 51647155bcSMartyn Welch 52647155bcSMartyn Welch i2c_set_bus_num(current_i2c_bus); 53647155bcSMartyn Welch } 54647155bcSMartyn Welch 55