直接上代码
static int pcf8563_read_block_data(struct i2c_client *client, unsigned char reg, |" Press <F1>, ? for help
unsigned char length, unsigned char *buf) |
{ |▶ macros
struct i2c_msg msgs[] = { |
{/* setup read ptr */ |▶ prototypes
.addr = client->addr, |
.len = 1, |▼-pcf8563 : struct
.buf = ®, | [members]
}, | +c_polarity
{ | +client
.addr = client->addr, | +rtc
.flags = I2C_M_RD, | +voltage_low
.len = length, |
.buf = buf |▼ variables
}, | -alarmboot
}; | -pcf8563_driver
| -pcf8563_driver
if ((i2c_transfer(client->adapter, msgs, 2)) != 2) { | pcf8563_exit
dev_err(&client->dev, "%s: read error\n", __func__); | -pcf8563_id
return -EIO; | pcf8563_init
} | -pcf8563_rtc_ops
|
return 0; |▼ functions
} | -pcf8563_exit(void)
| -pcf8563_get_alarm_mode(struct i
static int pcf8563_write_block_data(struct i2c_client *client, | -pcf8563_get_datetime(struct i2c
unsigned char reg, unsigned char length, | -pcf8563_init(void)
unsigned char *buf) | -pcf8563_irq(int irq, void *dev_
{ | -pcf8563_irq_enable(struct devic
int i, err; | -pcf8563_probe(struct i2c_client
| -pcf8563_read_block_data(struct
for (i = 0; i < length; i++) { | -pcf8563_rtc_read_alarm(struct d
unsigned char data[2] = { reg + i, buf[i] }; | -pcf8563_rtc_read_time(struct de
| -pcf8563_rtc_set_alarm(struct de
err = i2c_master_send(client, data, sizeof(data)); | -pcf8563_rtc_set_time(struct dev
if (err != sizeof(data)) { | -pcf8563_set_alarm_mode(struct i
dev_err(&client->dev, | -pcf8563_set_datetime(struct i2c
"%s: err=%d addr=%02x, data=%02x\n", | -pcf8563_write_block_data(struct
__func__, err, data[0], data[1]); | -rtc_sysfs_show_alarmboot(struct
return -EIO; |~
} |~
}
}