Lines Matching refs:tm

68 static time64_t nov2dec_transitions(struct rtc_time *tm)  in nov2dec_transitions()  argument
70 return (tm->tm_year + 1900) - 2016 + (tm->tm_mon + 1 > 11 ? 1 : 0); in nov2dec_transitions()
73 static void rockchip_to_gregorian(struct rtc_time *tm) in rockchip_to_gregorian() argument
76 time64_t time = rtc_tm_to_time64(tm); in rockchip_to_gregorian()
77 rtc_time64_to_tm(time + nov2dec_transitions(tm) * 86400, tm); in rockchip_to_gregorian()
80 static void gregorian_to_rockchip(struct rtc_time *tm) in gregorian_to_rockchip() argument
82 time64_t extra_days = nov2dec_transitions(tm); in gregorian_to_rockchip()
83 time64_t time = rtc_tm_to_time64(tm); in gregorian_to_rockchip()
84 rtc_time64_to_tm(time - extra_days * 86400, tm); in gregorian_to_rockchip()
87 if (nov2dec_transitions(tm) < extra_days) { in gregorian_to_rockchip()
88 if (tm->tm_mon + 1 == 11) in gregorian_to_rockchip()
89 tm->tm_mday++; /* This may result in 31! */ in gregorian_to_rockchip()
91 rtc_time64_to_tm(time - (extra_days - 1) * 86400, tm); in gregorian_to_rockchip()
96 static int rk808_rtc_readtime(struct device *dev, struct rtc_time *tm) in rk808_rtc_readtime() argument
133 tm->tm_sec = bcd2bin(rtc_data[0] & SECONDS_REG_MSK); in rk808_rtc_readtime()
134 tm->tm_min = bcd2bin(rtc_data[1] & MINUTES_REG_MAK); in rk808_rtc_readtime()
135 tm->tm_hour = bcd2bin(rtc_data[2] & HOURS_REG_MSK); in rk808_rtc_readtime()
136 tm->tm_mday = bcd2bin(rtc_data[3] & DAYS_REG_MSK); in rk808_rtc_readtime()
137 tm->tm_mon = (bcd2bin(rtc_data[4] & MONTHS_REG_MSK)) - 1; in rk808_rtc_readtime()
138 tm->tm_year = (bcd2bin(rtc_data[5] & YEARS_REG_MSK)) + 100; in rk808_rtc_readtime()
139 tm->tm_wday = bcd2bin(rtc_data[6] & WEEKS_REG_MSK); in rk808_rtc_readtime()
140 rockchip_to_gregorian(tm); in rk808_rtc_readtime()
142 1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday, in rk808_rtc_readtime()
143 tm->tm_wday, tm->tm_hour, tm->tm_min, tm->tm_sec); in rk808_rtc_readtime()
149 static int rk808_rtc_set_time(struct device *dev, struct rtc_time *tm) in rk808_rtc_set_time() argument
157 1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday, in rk808_rtc_set_time()
158 tm->tm_wday, tm->tm_hour, tm->tm_min, tm->tm_sec); in rk808_rtc_set_time()
159 gregorian_to_rockchip(tm); in rk808_rtc_set_time()
160 rtc_data[0] = bin2bcd(tm->tm_sec); in rk808_rtc_set_time()
161 rtc_data[1] = bin2bcd(tm->tm_min); in rk808_rtc_set_time()
162 rtc_data[2] = bin2bcd(tm->tm_hour); in rk808_rtc_set_time()
163 rtc_data[3] = bin2bcd(tm->tm_mday); in rk808_rtc_set_time()
164 rtc_data[4] = bin2bcd(tm->tm_mon + 1); in rk808_rtc_set_time()
165 rtc_data[5] = bin2bcd(tm->tm_year - 100); in rk808_rtc_set_time()
166 rtc_data[6] = bin2bcd(tm->tm_wday); in rk808_rtc_set_time()
378 struct rtc_time tm; in rk808_rtc_probe() local
408 ret = rk808_rtc_readtime(&pdev->dev, &tm); in rk808_rtc_probe()
413 ret = rtc_valid_tm(&tm); in rk808_rtc_probe()