Lines Matching +full:start +full:- +full:year

1 // SPDX-License-Identifier: GPL-2.0+
13 * STMicroelectronics M41T60 serial access real-time clock
25 * assume years are in the range 1900 - 2299.
28 static unsigned char year2cb(unsigned const year) in year2cb() argument
30 if (year < 1900 || year >= 2300) in year2cb()
31 printf("M41T60 RTC: year %d out of range\n", year); in year2cb()
33 return (year / 100) & 0x3; in year2cb()
66 printf("RTC dump %s: %02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X\n", in rtc_dump()
78 * determine whether there has been an initial power-up since the last in rtc_validate()
97 * oscillator so it can be "kick-started" as per data sheet. in rtc_validate()
109 * OUT bit to "0", reset the date registers, and start the oscillator. in rtc_validate()
127 * Set to 00:00:00 1900-01-01 (Monday) in rtc_validate()
151 return -1; in rtc_get()
153 tmp->tm_sec = bcd2bin(data[RTC_SEC] & 0x7F); in rtc_get()
154 tmp->tm_min = bcd2bin(data[RTC_MIN] & 0x7F); in rtc_get()
155 tmp->tm_hour = bcd2bin(data[RTC_HOUR] & 0x3F); in rtc_get()
156 tmp->tm_mday = bcd2bin(data[RTC_DATE] & 0x3F); in rtc_get()
157 tmp->tm_mon = bcd2bin(data[RTC_MONTH] & 0x1F); in rtc_get()
158 tmp->tm_year = cb2year(data[RTC_MONTH] >> 6) + bcd2bin(data[RTC_YEAR]); in rtc_get()
159 tmp->tm_wday = bcd2bin(data[RTC_DAY] & 0x07) - 1; in rtc_get()
160 tmp->tm_yday = 0; in rtc_get()
161 tmp->tm_isdst = 0; in rtc_get()
163 debug("Get DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n", in rtc_get()
164 tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday, in rtc_get()
165 tmp->tm_hour, tmp->tm_min, tmp->tm_sec); in rtc_get()
175 return -1; in rtc_set()
177 debug("Set DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n", in rtc_set()
178 tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday, in rtc_set()
179 tmp->tm_hour, tmp->tm_min, tmp->tm_sec); in rtc_set()
181 data[RTC_SEC] = (data[RTC_SEC] & 0x80) | (bin2bcd(tmp->tm_sec) & 0x7F); in rtc_set()
182 data[RTC_MIN] = (data[RTC_MIN] & 0X80) | (bin2bcd(tmp->tm_min) & 0X7F); in rtc_set()
183 data[RTC_HOUR] = bin2bcd(tmp->tm_hour) & 0x3F; in rtc_set()
184 data[RTC_DATE] = bin2bcd(tmp->tm_mday) & 0x3F; in rtc_set()
185 data[RTC_MONTH] = bin2bcd(tmp->tm_mon) & 0x1F; in rtc_set()
186 data[RTC_YEAR] = bin2bcd(tmp->tm_year % 100); in rtc_set()
187 data[RTC_MONTH] |= year2cb(tmp->tm_year) << 6; in rtc_set()
188 data[RTC_DAY] = bin2bcd(tmp->tm_wday + 1) & 0x07; in rtc_set()
191 return -1; in rtc_set()
208 * between 0x00 and 0x3F, inclusive. The five least-significan bits in rtc_reset()