• Home
  • Raw
  • Download

Lines Matching +full:retry +full:- +full:time

1 // SPDX-License-Identifier: GPL-2.0-only
12 * Execute a function while the UIP (Update-in-progress) bit of the RTC is
29 * readout is unspecified. The maximum update time is ~2ms. Poll in mc146818_avoid_UIP()
82 * If the UIP (Update-in-progress) bit of the RTC is set for more then
106 int mc146818_get_time(struct rtc_time *time) in mc146818_get_time() argument
112 bool retry; in mc146818_get_time() local
120 memset(time, 0, sizeof(*time)); in mc146818_get_time()
121 return -EIO; in mc146818_get_time()
129 * readout is unspecified. The maximum update time is ~2ms. Poll in mc146818_get_time()
136 time->tm_sec = CMOS_READ(RTC_SECONDS); in mc146818_get_time()
145 if (time->tm_sec != CMOS_READ(RTC_SECONDS)) { in mc146818_get_time()
154 * by the RTC when initially set to a non-zero value. in mc146818_get_time()
156 time->tm_min = CMOS_READ(RTC_MINUTES); in mc146818_get_time()
157 time->tm_hour = CMOS_READ(RTC_HOURS); in mc146818_get_time()
158 time->tm_mday = CMOS_READ(RTC_DAY_OF_MONTH); in mc146818_get_time()
159 time->tm_mon = CMOS_READ(RTC_MONTH); in mc146818_get_time()
160 time->tm_year = CMOS_READ(RTC_YEAR); in mc146818_get_time()
174 retry = CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP; in mc146818_get_time()
181 retry |= time->tm_sec != CMOS_READ(RTC_SECONDS); in mc146818_get_time()
185 if (retry) in mc146818_get_time()
190 time->tm_sec = bcd2bin(time->tm_sec); in mc146818_get_time()
191 time->tm_min = bcd2bin(time->tm_min); in mc146818_get_time()
192 time->tm_hour = bcd2bin(time->tm_hour); in mc146818_get_time()
193 time->tm_mday = bcd2bin(time->tm_mday); in mc146818_get_time()
194 time->tm_mon = bcd2bin(time->tm_mon); in mc146818_get_time()
195 time->tm_year = bcd2bin(time->tm_year); in mc146818_get_time()
200 time->tm_year += real_year - 72; in mc146818_get_time()
204 time->tm_year += (century - 19) * 100; in mc146818_get_time()
210 if (time->tm_year <= 69) in mc146818_get_time()
211 time->tm_year += 100; in mc146818_get_time()
213 time->tm_mon--; in mc146818_get_time()
230 /* Set the current date and time in the real time clock. */
231 int mc146818_set_time(struct rtc_time *time) in mc146818_set_time() argument
242 yrs = time->tm_year; in mc146818_set_time()
243 mon = time->tm_mon + 1; /* tm_mon starts at zero */ in mc146818_set_time()
244 day = time->tm_mday; in mc146818_set_time()
245 hrs = time->tm_hour; in mc146818_set_time()
246 min = time->tm_min; in mc146818_set_time()
247 sec = time->tm_sec; in mc146818_set_time()
250 return -EINVAL; in mc146818_set_time()
260 * for non-leap years, so that Feb, 29th is handled in mc146818_set_time()
264 real_yrs--; in mc146818_set_time()
281 return -EINVAL; in mc146818_set_time()
284 yrs -= 100; in mc146818_set_time()