Lines Matching refs:tm
114 static void s5m8767_data_to_tm(u8 *data, struct rtc_time *tm, in s5m8767_data_to_tm() argument
117 tm->tm_sec = data[RTC_SEC] & 0x7f; in s5m8767_data_to_tm()
118 tm->tm_min = data[RTC_MIN] & 0x7f; in s5m8767_data_to_tm()
120 tm->tm_hour = data[RTC_HOUR] & 0x1f; in s5m8767_data_to_tm()
122 tm->tm_hour = data[RTC_HOUR] & 0x0f; in s5m8767_data_to_tm()
124 tm->tm_hour += 12; in s5m8767_data_to_tm()
127 tm->tm_wday = ffs(data[RTC_WEEKDAY] & 0x7f); in s5m8767_data_to_tm()
128 tm->tm_mday = data[RTC_DATE] & 0x1f; in s5m8767_data_to_tm()
129 tm->tm_mon = (data[RTC_MONTH] & 0x0f) - 1; in s5m8767_data_to_tm()
130 tm->tm_year = (data[RTC_YEAR1] & 0x7f) + 100; in s5m8767_data_to_tm()
131 tm->tm_yday = 0; in s5m8767_data_to_tm()
132 tm->tm_isdst = 0; in s5m8767_data_to_tm()
135 static int s5m8767_tm_to_data(struct rtc_time *tm, u8 *data) in s5m8767_tm_to_data() argument
137 data[RTC_SEC] = tm->tm_sec; in s5m8767_tm_to_data()
138 data[RTC_MIN] = tm->tm_min; in s5m8767_tm_to_data()
140 if (tm->tm_hour >= 12) in s5m8767_tm_to_data()
141 data[RTC_HOUR] = tm->tm_hour | HOUR_PM_MASK; in s5m8767_tm_to_data()
143 data[RTC_HOUR] = tm->tm_hour & ~HOUR_PM_MASK; in s5m8767_tm_to_data()
145 data[RTC_WEEKDAY] = 1 << tm->tm_wday; in s5m8767_tm_to_data()
146 data[RTC_DATE] = tm->tm_mday; in s5m8767_tm_to_data()
147 data[RTC_MONTH] = tm->tm_mon + 1; in s5m8767_tm_to_data()
148 data[RTC_YEAR1] = tm->tm_year > 100 ? (tm->tm_year - 100) : 0; in s5m8767_tm_to_data()
150 if (tm->tm_year < 100) { in s5m8767_tm_to_data()
152 1900 + tm->tm_year); in s5m8767_tm_to_data()
282 static void s5m8763_data_to_tm(u8 *data, struct rtc_time *tm) in s5m8763_data_to_tm() argument
284 tm->tm_sec = bcd2bin(data[RTC_SEC]); in s5m8763_data_to_tm()
285 tm->tm_min = bcd2bin(data[RTC_MIN]); in s5m8763_data_to_tm()
288 tm->tm_hour = bcd2bin(data[RTC_HOUR] & 0x1f); in s5m8763_data_to_tm()
290 tm->tm_hour += 12; in s5m8763_data_to_tm()
292 tm->tm_hour = bcd2bin(data[RTC_HOUR] & 0x3f); in s5m8763_data_to_tm()
295 tm->tm_wday = data[RTC_WEEKDAY] & 0x07; in s5m8763_data_to_tm()
296 tm->tm_mday = bcd2bin(data[RTC_DATE]); in s5m8763_data_to_tm()
297 tm->tm_mon = bcd2bin(data[RTC_MONTH]); in s5m8763_data_to_tm()
298 tm->tm_year = bcd2bin(data[RTC_YEAR1]) + bcd2bin(data[RTC_YEAR2]) * 100; in s5m8763_data_to_tm()
299 tm->tm_year -= 1900; in s5m8763_data_to_tm()
302 static void s5m8763_tm_to_data(struct rtc_time *tm, u8 *data) in s5m8763_tm_to_data() argument
304 data[RTC_SEC] = bin2bcd(tm->tm_sec); in s5m8763_tm_to_data()
305 data[RTC_MIN] = bin2bcd(tm->tm_min); in s5m8763_tm_to_data()
306 data[RTC_HOUR] = bin2bcd(tm->tm_hour); in s5m8763_tm_to_data()
307 data[RTC_WEEKDAY] = tm->tm_wday; in s5m8763_tm_to_data()
308 data[RTC_DATE] = bin2bcd(tm->tm_mday); in s5m8763_tm_to_data()
309 data[RTC_MONTH] = bin2bcd(tm->tm_mon); in s5m8763_tm_to_data()
310 data[RTC_YEAR1] = bin2bcd(tm->tm_year % 100); in s5m8763_tm_to_data()
311 data[RTC_YEAR2] = bin2bcd((tm->tm_year + 1900) / 100); in s5m8763_tm_to_data()
314 static int s5m_rtc_read_time(struct device *dev, struct rtc_time *tm) in s5m_rtc_read_time() argument
338 s5m8763_data_to_tm(data, tm); in s5m_rtc_read_time()
344 s5m8767_data_to_tm(data, tm, info->rtc_24hr_mode); in s5m_rtc_read_time()
352 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, in s5m_rtc_read_time()
353 tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_wday); in s5m_rtc_read_time()
355 return rtc_valid_tm(tm); in s5m_rtc_read_time()
358 static int s5m_rtc_set_time(struct device *dev, struct rtc_time *tm) in s5m_rtc_set_time() argument
366 s5m8763_tm_to_data(tm, data); in s5m_rtc_set_time()
371 ret = s5m8767_tm_to_data(tm, data); in s5m_rtc_set_time()
381 1900 + tm->tm_year, 1 + tm->tm_mon, tm->tm_mday, in s5m_rtc_set_time()
382 tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_wday); in s5m_rtc_set_time()
448 struct rtc_time tm; in s5m_rtc_stop_alarm() local
455 s5m8767_data_to_tm(data, &tm, info->rtc_24hr_mode); in s5m_rtc_stop_alarm()
457 1900 + tm.tm_year, 1 + tm.tm_mon, tm.tm_mday, in s5m_rtc_stop_alarm()
458 tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_wday); in s5m_rtc_stop_alarm()
492 struct rtc_time tm; in s5m_rtc_start_alarm() local
499 s5m8767_data_to_tm(data, &tm, info->rtc_24hr_mode); in s5m_rtc_start_alarm()
501 1900 + tm.tm_year, 1 + tm.tm_mon, tm.tm_mday, in s5m_rtc_start_alarm()
502 tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_wday); in s5m_rtc_start_alarm()