Source
131
131
}
132
132
133
133
tm->tm_sec = bcd2bin(rtc_data[0] & SECONDS_REG_MSK);
134
134
tm->tm_min = bcd2bin(rtc_data[1] & MINUTES_REG_MAK);
135
135
tm->tm_hour = bcd2bin(rtc_data[2] & HOURS_REG_MSK);
136
136
tm->tm_mday = bcd2bin(rtc_data[3] & DAYS_REG_MSK);
137
137
tm->tm_mon = (bcd2bin(rtc_data[4] & MONTHS_REG_MSK)) - 1;
138
138
tm->tm_year = (bcd2bin(rtc_data[5] & YEARS_REG_MSK)) + 100;
139
139
tm->tm_wday = bcd2bin(rtc_data[6] & WEEKS_REG_MSK);
140
140
rockchip_to_gregorian(tm);
141
-
dev_dbg(dev, "RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n",
142
-
1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday,
143
-
tm->tm_wday, tm->tm_hour, tm->tm_min, tm->tm_sec);
141
+
dev_dbg(dev, "RTC date/time %ptRd(%d) %ptRt\n", tm, tm->tm_wday, tm);
144
142
145
143
return ret;
146
144
}
147
145
148
146
/* Set current time and date in RTC */
149
147
static int rk808_rtc_set_time(struct device *dev, struct rtc_time *tm)
150
148
{
151
149
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
152
150
struct rk808 *rk808 = rk808_rtc->rk808;
153
151
u8 rtc_data[NUM_TIME_REGS];
154
152
int ret;
155
153
156
-
dev_dbg(dev, "set RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n",
157
-
1900 + tm->tm_year, tm->tm_mon + 1, tm->tm_mday,
158
-
tm->tm_wday, tm->tm_hour, tm->tm_min, tm->tm_sec);
154
+
dev_dbg(dev, "set RTC date/time %ptRd(%d) %ptRt\n", tm, tm->tm_wday, tm);
159
155
gregorian_to_rockchip(tm);
160
156
rtc_data[0] = bin2bcd(tm->tm_sec);
161
157
rtc_data[1] = bin2bcd(tm->tm_min);
162
158
rtc_data[2] = bin2bcd(tm->tm_hour);
163
159
rtc_data[3] = bin2bcd(tm->tm_mday);
164
160
rtc_data[4] = bin2bcd(tm->tm_mon + 1);
165
161
rtc_data[5] = bin2bcd(tm->tm_year - 100);
166
162
rtc_data[6] = bin2bcd(tm->tm_wday);
167
163
168
164
/* Stop RTC while updating the RTC registers */
209
205
alrm->time.tm_mon = (bcd2bin(alrm_data[4] & MONTHS_REG_MSK)) - 1;
210
206
alrm->time.tm_year = (bcd2bin(alrm_data[5] & YEARS_REG_MSK)) + 100;
211
207
rockchip_to_gregorian(&alrm->time);
212
208
213
209
ret = regmap_read(rk808->regmap, RK808_RTC_INT_REG, &int_reg);
214
210
if (ret) {
215
211
dev_err(dev, "Failed to read RTC INT REG: %d\n", ret);
216
212
return ret;
217
213
}
218
214
219
-
dev_dbg(dev, "alrm read RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n",
220
-
1900 + alrm->time.tm_year, alrm->time.tm_mon + 1,
221
-
alrm->time.tm_mday, alrm->time.tm_wday, alrm->time.tm_hour,
222
-
alrm->time.tm_min, alrm->time.tm_sec);
215
+
dev_dbg(dev, "alrm read RTC date/time %ptRd(%d) %ptRt\n",
216
+
&alrm->time, alrm->time.tm_wday, &alrm->time);
223
217
224
218
alrm->enabled = (int_reg & BIT_RTC_INTERRUPTS_REG_IT_ALARM_M) ? 1 : 0;
225
219
226
220
return 0;
227
221
}
228
222
229
223
static int rk808_rtc_stop_alarm(struct rk808_rtc *rk808_rtc)
230
224
{
231
225
struct rk808 *rk808 = rk808_rtc->rk808;
232
226
int ret;
254
248
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
255
249
struct rk808 *rk808 = rk808_rtc->rk808;
256
250
u8 alrm_data[NUM_ALARM_REGS];
257
251
int ret;
258
252
259
253
ret = rk808_rtc_stop_alarm(rk808_rtc);
260
254
if (ret) {
261
255
dev_err(dev, "Failed to stop alarm: %d\n", ret);
262
256
return ret;
263
257
}
264
-
dev_dbg(dev, "alrm set RTC date/time %4d-%02d-%02d(%d) %02d:%02d:%02d\n",
265
-
1900 + alrm->time.tm_year, alrm->time.tm_mon + 1,
266
-
alrm->time.tm_mday, alrm->time.tm_wday, alrm->time.tm_hour,
267
-
alrm->time.tm_min, alrm->time.tm_sec);
258
+
dev_dbg(dev, "alrm set RTC date/time %ptRd(%d) %ptRt\n",
259
+
&alrm->time, alrm->time.tm_wday, &alrm->time);
268
260
269
261
gregorian_to_rockchip(&alrm->time);
270
262
alrm_data[0] = bin2bcd(alrm->time.tm_sec);
271
263
alrm_data[1] = bin2bcd(alrm->time.tm_min);
272
264
alrm_data[2] = bin2bcd(alrm->time.tm_hour);
273
265
alrm_data[3] = bin2bcd(alrm->time.tm_mday);
274
266
alrm_data[4] = bin2bcd(alrm->time.tm_mon + 1);
275
267
alrm_data[5] = bin2bcd(alrm->time.tm_year - 100);
276
268
277
269
ret = regmap_bulk_write(rk808->regmap, RK808_ALARM_SECONDS_REG,