16 #include <linux/module.h>
17 #include <linux/kernel.h>
19 #include <linux/device.h>
21 #include <linux/rtc.h>
25 #include <linux/bitops.h>
48 buf[0] = address & 0x7f;
54 static int read_regs(
struct device *
dev,
unsigned char *
regs,
int no_regs)
57 u8 txbuf[1], rxbuf[1];
62 for (k = 0; ret == 0 && k < no_regs; k++) {
63 txbuf[0] = 0x80 | regs[
k];
71 static int r9701_get_datetime(
struct device *dev,
struct rtc_time *dt)
81 memset(dt, 0,
sizeof(*dt));
98 static int r9701_set_datetime(
struct device *dev,
struct rtc_time *dt)
103 if (year >= 2100 || year < 2000)
118 .read_time = r9701_get_datetime,
119 .set_time = r9701_set_datetime,
130 res = read_regs(&spi->
dev, &tmp, 1);
131 if (res || tmp != 0x20) {
132 dev_err(&spi->
dev,
"cannot read RTC register\n");
141 if (r9701_get_datetime(&spi->
dev, &dt)) {
142 dev_info(&spi->
dev,
"trying to repair invalid date/time\n");
150 if (r9701_set_datetime(&spi->
dev, &dt) ||
151 r9701_get_datetime(&spi->
dev, &dt)) {
152 dev_err(&spi->
dev,
"cannot repair RTC register\n");
180 .probe = r9701_probe,