summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/rtc/rtc_as3514.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/firmware/drivers/rtc/rtc_as3514.c b/firmware/drivers/rtc/rtc_as3514.c
index 878f204a4e..d20e021ffb 100644
--- a/firmware/drivers/rtc/rtc_as3514.c
+++ b/firmware/drivers/rtc/rtc_as3514.c
@@ -19,11 +19,18 @@
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#include <stdbool.h> 21#include <stdbool.h>
22#include "config.h"
22#include "rtc.h" 23#include "rtc.h"
23#include "i2c-pp.h"
24#include "as3514.h" 24#include "as3514.h"
25#include "ascodec.h" 25#include "ascodec.h"
26 26
27/* AMS Sansas start counting from Jan 1st 1970 instead of 1980 */
28#if (CONFIG_CPU==AS3525)
29#define SECS_ADJUST 315532800 /* seconds between 1970-1-1 and 1980-1-1 */
30#else
31#define SECS_ADJUST 0
32#endif
33
27#define MINUTE_SECONDS 60 34#define MINUTE_SECONDS 60
28#define HOUR_SECONDS 3600 35#define HOUR_SECONDS 3600
29#define DAY_SECONDS 86400 36#define DAY_SECONDS 86400
@@ -61,6 +68,7 @@ int rtc_read_datetime(unsigned char* buf)
61 tmp[i] = ascodec_read(AS3514_RTC_0 + i); 68 tmp[i] = ascodec_read(AS3514_RTC_0 + i);
62 } 69 }
63 seconds = tmp[0] + (tmp[1]<<8) + (tmp[2]<<16) + (tmp[3]<<24); 70 seconds = tmp[0] + (tmp[1]<<8) + (tmp[2]<<16) + (tmp[3]<<24);
71 seconds -= SECS_ADJUST;
64 72
65 /* Convert seconds since Jan-1-1980 to format compatible with 73 /* Convert seconds since Jan-1-1980 to format compatible with
66 * get_time() from firmware/common/timefuncs.c */ 74 * get_time() from firmware/common/timefuncs.c */
@@ -160,6 +168,7 @@ int rtc_write_datetime(unsigned char* buf)
160 + (buf[4]-1)*DAY_SECONDS 168 + (buf[4]-1)*DAY_SECONDS
161 + month_days*DAY_SECONDS 169 + month_days*DAY_SECONDS
162 + year_days*DAY_SECONDS; 170 + year_days*DAY_SECONDS;
171 seconds += SECS_ADJUST;
163 172
164 /* Send data to RTC */ 173 /* Send data to RTC */
165 for (i=0;i<4;i++){ 174 for (i=0;i<4;i++){