summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/rtc/rtc_s35380a.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/firmware/drivers/rtc/rtc_s35380a.c b/firmware/drivers/rtc/rtc_s35380a.c
index 7a7bf81118..28b843a60a 100644
--- a/firmware/drivers/rtc/rtc_s35380a.c
+++ b/firmware/drivers/rtc/rtc_s35380a.c
@@ -40,15 +40,17 @@
40#define CLOCK_CORR_REG 6 40#define CLOCK_CORR_REG 6
41#define FREE_REG 7 41#define FREE_REG 7
42 42
43/* STATUS_REG1 flags */ 43/* STATUS_REG1 flags
44#define STATUS_REG1_POC 0x80 44 * bits order is reversed
45#define STATUS_REG1_BLD 0x40 45 */
46#define STATUS_REG1_INT2 0x20 46#define STATUS_REG1_POC 0x01
47#define STATUS_REG1_INT1 0x10 47#define STATUS_REG1_BLD 0x02
48#define STATUS_REG1_SC1 0x08 48#define STATUS_REG1_INT2 0x04
49#define STATUS_REG1_SC0 0x04 49#define STATUS_REG1_INT1 0x08
50#define STATUS_REG1_H1224 0x02 50#define STATUS_REG1_SC1 0x10
51#define STATUS_REG1_RESET 0x01 51#define STATUS_REG1_SC0 0x20
52#define STATUS_REG1_H1224 0x40
53#define STATUS_REG1_RESET 0x80
52 54
53 55
54static void reverse_bits(unsigned char* v, int size) 56static void reverse_bits(unsigned char* v, int size)
@@ -76,6 +78,10 @@ void rtc_init(void)
76 status_reg |= STATUS_REG1_RESET; 78 status_reg |= STATUS_REG1_RESET;
77 i2c_write(I2C_IFACE_1, RTC_ADDR | (STATUS_REG1<<1), &status_reg, 1); 79 i2c_write(I2C_IFACE_1, RTC_ADDR | (STATUS_REG1<<1), &status_reg, 1);
78 } 80 }
81
82 /* setup 24h time format */
83 status_reg = STATUS_REG1_H1224;
84 i2c_write(I2C_IFACE_1, RTC_ADDR | (STATUS_REG1<<1), &status_reg, 1);
79} 85}
80 86
81int rtc_read_datetime(struct tm *tm) 87int rtc_read_datetime(struct tm *tm)