15 #include <linux/module.h>
16 #include <linux/i2c.h>
18 #include <linux/rtc.h>
21 #define DRV_VERSION "0.1"
23 #define RX8581_REG_SC 0x00
24 #define RX8581_REG_MN 0x01
25 #define RX8581_REG_HR 0x02
26 #define RX8581_REG_DW 0x03
27 #define RX8581_REG_DM 0x04
28 #define RX8581_REG_MO 0x05
29 #define RX8581_REG_YR 0x06
30 #define RX8581_REG_RAM 0x07
31 #define RX8581_REG_AMN 0x08
32 #define RX8581_REG_AHR 0x09
33 #define RX8581_REG_ADM 0x0A
34 #define RX8581_REG_ADW 0x0A
35 #define RX8581_REG_TMR0 0x0B
36 #define RX8581_REG_TMR1 0x0C
37 #define RX8581_REG_EXT 0x0D
38 #define RX8581_REG_FLAG 0x0E
39 #define RX8581_REG_CTRL 0x0F
43 #define RX8581_FLAG_UF 0x20
44 #define RX8581_FLAG_TF 0x10
45 #define RX8581_FLAG_AF 0x08
46 #define RX8581_FLAG_VLF 0x02
49 #define RX8581_CTRL_UIE 0x20
50 #define RX8581_CTRL_TIE 0x10
51 #define RX8581_CTRL_AIE 0x08
52 #define RX8581_CTRL_STOP 0x02
53 #define RX8581_CTRL_RESET 0x01
63 unsigned char date[7];
73 dev_err(&client->
dev,
"Unable to read device flags\n");
83 dev_err(&client->
dev,
"Unable to write device "
93 dev_err(&client->
dev,
"Unable to read date\n");
100 dev_err(&client->
dev,
"Unable to read device flags\n");
103 }
while (data & RX8581_FLAG_UF);
107 "low voltage detected, date/time is not reliable.\n");
110 "%s: raw data is sec=%02x, min=%02x, hr=%02x, "
111 "wday=%02x, mday=%02x, mon=%02x, year=%02x\n",
113 date[0], date[1], date[2], date[3], date[4], date[5], date[6]);
126 dev_dbg(&client->
dev,
"%s: tm is secs=%d, mins=%d, hours=%d, "
127 "mday=%d, mon=%d, year=%d, wday=%d\n",
134 dev_err(&client->
dev,
"retrieved date/time is not valid.\n");
142 unsigned char buf[7];
144 dev_dbg(&client->
dev,
"%s: secs=%d, mins=%d, hours=%d, "
145 "mday=%d, mon=%d, year=%d, wday=%d\n",
167 dev_err(&client->
dev,
"Unable to read control register\n");
174 dev_err(&client->
dev,
"Unable to write control register\n");
181 dev_err(&client->
dev,
"Unable to write to date registers\n");
188 dev_err(&client->
dev,
"Unable to read flag register\n");
193 (data & ~(RX8581_FLAG_VLF)));
195 dev_err(&client->
dev,
"Unable to write flag register\n");
202 dev_err(&client->
dev,
"Unable to read control register\n");
209 dev_err(&client->
dev,
"Unable to write control register\n");
221 static int rx8581_rtc_set_time(
struct device *dev,
struct rtc_time *tm)
227 .read_time = rx8581_rtc_read_time,
228 .set_time = rx8581_rtc_set_time,
249 i2c_set_clientdata(client, rtc);
256 struct rtc_device *rtc = i2c_get_clientdata(client);
271 .name =
"rtc-rx8581",
274 .probe = rx8581_probe,
276 .id_table = rx8581_id,