rs5c              131 drivers/rtc/rtc-rs5c372.c static int rs5c_get_regs(struct rs5c372 *rs5c)
rs5c              133 drivers/rtc/rtc-rs5c372.c 	struct i2c_client	*client = rs5c->client;
rs5c              138 drivers/rtc/rtc-rs5c372.c 			.len = sizeof(rs5c->buf),
rs5c              139 drivers/rtc/rtc-rs5c372.c 			.buf = rs5c->buf
rs5c              154 drivers/rtc/rtc-rs5c372.c 	if (rs5c->smbus) {
rs5c              156 drivers/rtc/rtc-rs5c372.c 		int size = sizeof(rs5c->buf) - 1;
rs5c              159 drivers/rtc/rtc-rs5c372.c 						  rs5c->buf + 1) != size) {
rs5c              172 drivers/rtc/rtc-rs5c372.c 		rs5c->regs + 0, rs5c->regs[3],
rs5c              173 drivers/rtc/rtc-rs5c372.c 		rs5c->regs + 4, rs5c->regs[7],
rs5c              174 drivers/rtc/rtc-rs5c372.c 		rs5c->regs + 8, rs5c->regs + 11,
rs5c              175 drivers/rtc/rtc-rs5c372.c 		rs5c->regs[14], rs5c->regs[15]);
rs5c              180 drivers/rtc/rtc-rs5c372.c static unsigned rs5c_reg2hr(struct rs5c372 *rs5c, unsigned reg)
rs5c              184 drivers/rtc/rtc-rs5c372.c 	if (rs5c->time24)
rs5c              195 drivers/rtc/rtc-rs5c372.c static unsigned rs5c_hr2reg(struct rs5c372 *rs5c, unsigned hour)
rs5c              197 drivers/rtc/rtc-rs5c372.c 	if (rs5c->time24)
rs5c              212 drivers/rtc/rtc-rs5c372.c 	struct rs5c372	*rs5c = i2c_get_clientdata(client);
rs5c              213 drivers/rtc/rtc-rs5c372.c 	int		status = rs5c_get_regs(rs5c);
rs5c              214 drivers/rtc/rtc-rs5c372.c 	unsigned char ctrl2 = rs5c->regs[RS5C_REG_CTRL2];
rs5c              219 drivers/rtc/rtc-rs5c372.c 	switch (rs5c->type) {
rs5c              222 drivers/rtc/rtc-rs5c372.c 		if ((rs5c->type == rtc_r2025sd && !(ctrl2 & R2x2x_CTRL2_XSTP)) ||
rs5c              223 drivers/rtc/rtc-rs5c372.c 		    (rs5c->type == rtc_r2221tl &&  (ctrl2 & R2x2x_CTRL2_XSTP))) {
rs5c              235 drivers/rtc/rtc-rs5c372.c 	tm->tm_sec = bcd2bin(rs5c->regs[RS5C372_REG_SECS] & 0x7f);
rs5c              236 drivers/rtc/rtc-rs5c372.c 	tm->tm_min = bcd2bin(rs5c->regs[RS5C372_REG_MINS] & 0x7f);
rs5c              237 drivers/rtc/rtc-rs5c372.c 	tm->tm_hour = rs5c_reg2hr(rs5c, rs5c->regs[RS5C372_REG_HOURS]);
rs5c              239 drivers/rtc/rtc-rs5c372.c 	tm->tm_wday = bcd2bin(rs5c->regs[RS5C372_REG_WDAY] & 0x07);
rs5c              240 drivers/rtc/rtc-rs5c372.c 	tm->tm_mday = bcd2bin(rs5c->regs[RS5C372_REG_DAY] & 0x3f);
rs5c              243 drivers/rtc/rtc-rs5c372.c 	tm->tm_mon = bcd2bin(rs5c->regs[RS5C372_REG_MONTH] & 0x1f) - 1;
rs5c              246 drivers/rtc/rtc-rs5c372.c 	tm->tm_year = bcd2bin(rs5c->regs[RS5C372_REG_YEAR]) + 100;
rs5c              260 drivers/rtc/rtc-rs5c372.c 	struct rs5c372	*rs5c = i2c_get_clientdata(client);
rs5c              274 drivers/rtc/rtc-rs5c372.c 	buf[2] = rs5c_hr2reg(rs5c, tm->tm_hour);
rs5c              290 drivers/rtc/rtc-rs5c372.c 	switch (rs5c->type) {
rs5c              294 drivers/rtc/rtc-rs5c372.c 		if (rs5c->type == rtc_r2025sd)
rs5c              354 drivers/rtc/rtc-rs5c372.c 	struct rs5c372		*rs5c = i2c_get_clientdata(client);
rs5c              358 drivers/rtc/rtc-rs5c372.c 	buf = rs5c->regs[RS5C_REG_CTRL1];
rs5c              360 drivers/rtc/rtc-rs5c372.c 	if (!rs5c->has_irq)
rs5c              363 drivers/rtc/rtc-rs5c372.c 	status = rs5c_get_regs(rs5c);
rs5c              377 drivers/rtc/rtc-rs5c372.c 		rs5c->regs[RS5C_REG_CTRL1] = buf;
rs5c              395 drivers/rtc/rtc-rs5c372.c 	struct rs5c372		*rs5c = i2c_get_clientdata(client);
rs5c              398 drivers/rtc/rtc-rs5c372.c 	status = rs5c_get_regs(rs5c);
rs5c              404 drivers/rtc/rtc-rs5c372.c 	t->time.tm_min = bcd2bin(rs5c->regs[RS5C_REG_ALARM_A_MIN] & 0x7f);
rs5c              405 drivers/rtc/rtc-rs5c372.c 	t->time.tm_hour = rs5c_reg2hr(rs5c, rs5c->regs[RS5C_REG_ALARM_A_HOURS]);
rs5c              408 drivers/rtc/rtc-rs5c372.c 	t->enabled = !!(rs5c->regs[RS5C_REG_CTRL1] & RS5C_CTRL1_AALE);
rs5c              409 drivers/rtc/rtc-rs5c372.c 	t->pending = !!(rs5c->regs[RS5C_REG_CTRL2] & RS5C_CTRL2_AAFG);
rs5c              417 drivers/rtc/rtc-rs5c372.c 	struct rs5c372		*rs5c = i2c_get_clientdata(client);
rs5c              430 drivers/rtc/rtc-rs5c372.c 	status = rs5c_get_regs(rs5c);
rs5c              433 drivers/rtc/rtc-rs5c372.c 	if (rs5c->regs[RS5C_REG_CTRL1] & RS5C_CTRL1_AALE) {
rs5c              435 drivers/rtc/rtc-rs5c372.c 		buf[0] = rs5c->regs[RS5C_REG_CTRL1] & ~RS5C_CTRL1_AALE;
rs5c              440 drivers/rtc/rtc-rs5c372.c 		rs5c->regs[RS5C_REG_CTRL1] = buf[0];
rs5c              445 drivers/rtc/rtc-rs5c372.c 	buf[1] = rs5c_hr2reg(rs5c, t->time.tm_hour);
rs5c              459 drivers/rtc/rtc-rs5c372.c 		buf[0] = rs5c->regs[RS5C_REG_CTRL1] | RS5C_CTRL1_AALE;
rs5c              462 drivers/rtc/rtc-rs5c372.c 		rs5c->regs[RS5C_REG_CTRL1] = buf[0];