13 #include <linux/kernel.h>
14 #include <linux/module.h>
16 #include <linux/rtc.h>
19 #define M41T93_REG_SSEC 0
20 #define M41T93_REG_ST_SEC 1
21 #define M41T93_REG_MIN 2
22 #define M41T93_REG_CENT_HOUR 3
23 #define M41T93_REG_WDAY 4
24 #define M41T93_REG_DAY 5
25 #define M41T93_REG_MON 6
26 #define M41T93_REG_YEAR 7
29 #define M41T93_REG_ALM_HOUR_HT 0xc
30 #define M41T93_REG_FLAGS 0xf
32 #define M41T93_FLAG_ST (1 << 7)
33 #define M41T93_FLAG_OF (1 << 2)
34 #define M41T93_FLAG_BL (1 << 4)
35 #define M41T93_FLAG_HT (1 << 6)
45 return spi_write(spi, buf,
sizeof(buf));
55 dev_dbg(dev,
"%s secs=%d, mins=%d, "
56 "hours=%d, mday=%d, mon=%d, year=%d, wday=%d\n",
62 dev_warn(&spi->
dev,
"unsupported date (before 2000-01-01).\n");
77 }
else if (tmp & M41T93_FLAG_OF) {
83 "OF bit is still set, kickstarting clock.\n");
100 return spi_write(spi, buf,
sizeof(buf));
104 static int m41t93_get_time(
struct device *dev,
struct rtc_time *tm)
109 int century_after_1900;
124 dev_dbg(&spi->
dev,
"HT bit is set, reenable clock update.\n");
126 tmp & ~M41T93_FLAG_HT);
133 if (tmp & M41T93_FLAG_OF) {
135 dev_warn(&spi->
dev,
"OF bit is set, write time to restart.\n");
139 dev_warn(&spi->
dev,
"BL bit is set, replace battery.\n");
156 dev_dbg(dev,
"%s secs=%d, mins=%d, "
157 "hours=%d, mday=%d, mon=%d, year=%d, wday=%d\n",
167 .read_time = m41t93_get_time,
168 .set_time = m41t93_set_time,
182 if (res < 0 || (res & 0xf8) != 0) {
200 struct rtc_device *rtc = spi_get_drvdata(spi);
210 .name =
"rtc-m41t93",
213 .probe = m41t93_probe,