diff options
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/rtc.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/firmware/drivers/rtc.c b/firmware/drivers/rtc.c index 30bbb6dfcb..b77db8b865 100644 --- a/firmware/drivers/rtc.c +++ b/firmware/drivers/rtc.c | |||
@@ -249,4 +249,34 @@ int rtc_read_multiple(unsigned char address, unsigned char *buf, int numbytes) | |||
249 | i2c_end(); | 249 | i2c_end(); |
250 | return ret; | 250 | return ret; |
251 | } | 251 | } |
252 | #endif | 252 | |
253 | int rtc_read_datetime(unsigned char* buf) { | ||
254 | int rc; | ||
255 | |||
256 | rc = rtc_read_multiple(1, buf, 7); | ||
257 | |||
258 | /* Adjust weekday */ | ||
259 | if(buf[3] == 7) | ||
260 | buf[3]=0; | ||
261 | |||
262 | return rc; | ||
263 | } | ||
264 | |||
265 | int rtc_write_datetime(unsigned char* buf) { | ||
266 | int i; | ||
267 | int rc = 0; | ||
268 | |||
269 | /* Adjust weekday */ | ||
270 | if(buf[3] == 0) | ||
271 | buf[3] = 7; | ||
272 | |||
273 | for (i = 0; i < 7 ; i++) | ||
274 | { | ||
275 | rc |= rtc_write(i+1, buf[i]); | ||
276 | } | ||
277 | rc |= rtc_write(8, 0x80); /* Out=1, calibration = 0 */ | ||
278 | |||
279 | return rc; | ||
280 | } | ||
281 | |||
282 | #endif /* CONFIG_RTC */ | ||