s35390a            71 drivers/rtc/rtc-s35390a.c static int s35390a_set_reg(struct s35390a *s35390a, int reg, char *buf, int len)
s35390a            73 drivers/rtc/rtc-s35390a.c 	struct i2c_client *client = s35390a->client[reg];
s35390a            88 drivers/rtc/rtc-s35390a.c static int s35390a_get_reg(struct s35390a *s35390a, int reg, char *buf, int len)
s35390a            90 drivers/rtc/rtc-s35390a.c 	struct i2c_client *client = s35390a->client[reg];
s35390a           106 drivers/rtc/rtc-s35390a.c static int s35390a_init(struct s35390a *s35390a)
s35390a           122 drivers/rtc/rtc-s35390a.c 	ret = s35390a_set_reg(s35390a, S35390A_CMD_STATUS1, &buf, 1);
s35390a           127 drivers/rtc/rtc-s35390a.c 	ret = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, &buf, 1);
s35390a           148 drivers/rtc/rtc-s35390a.c static int s35390a_read_status(struct s35390a *s35390a, char *status1)
s35390a           152 drivers/rtc/rtc-s35390a.c 	ret = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, status1, 1);
s35390a           171 drivers/rtc/rtc-s35390a.c static int s35390a_disable_test_mode(struct s35390a *s35390a)
s35390a           175 drivers/rtc/rtc-s35390a.c 	if (s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf)) < 0)
s35390a           182 drivers/rtc/rtc-s35390a.c 	return s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf));
s35390a           185 drivers/rtc/rtc-s35390a.c static char s35390a_hr2reg(struct s35390a *s35390a, int hour)
s35390a           187 drivers/rtc/rtc-s35390a.c 	if (s35390a->twentyfourhour)
s35390a           196 drivers/rtc/rtc-s35390a.c static int s35390a_reg2hr(struct s35390a *s35390a, char reg)
s35390a           200 drivers/rtc/rtc-s35390a.c 	if (s35390a->twentyfourhour)
s35390a           213 drivers/rtc/rtc-s35390a.c 	struct s35390a	*s35390a = i2c_get_clientdata(client);
s35390a           222 drivers/rtc/rtc-s35390a.c 	if (s35390a_read_status(s35390a, &status) == 1)
s35390a           223 drivers/rtc/rtc-s35390a.c 		s35390a_init(s35390a);
s35390a           229 drivers/rtc/rtc-s35390a.c 	buf[S35390A_BYTE_HOURS] = s35390a_hr2reg(s35390a, tm->tm_hour);
s35390a           237 drivers/rtc/rtc-s35390a.c 	err = s35390a_set_reg(s35390a, S35390A_CMD_TIME1, buf, sizeof(buf));
s35390a           245 drivers/rtc/rtc-s35390a.c 	struct s35390a *s35390a = i2c_get_clientdata(client);
s35390a           249 drivers/rtc/rtc-s35390a.c 	if (s35390a_read_status(s35390a, &status) == 1)
s35390a           252 drivers/rtc/rtc-s35390a.c 	err = s35390a_get_reg(s35390a, S35390A_CMD_TIME1, buf, sizeof(buf));
s35390a           262 drivers/rtc/rtc-s35390a.c 	tm->tm_hour = s35390a_reg2hr(s35390a, buf[S35390A_BYTE_HOURS]);
s35390a           279 drivers/rtc/rtc-s35390a.c 	struct s35390a *s35390a = i2c_get_clientdata(client);
s35390a           292 drivers/rtc/rtc-s35390a.c 	err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts));
s35390a           297 drivers/rtc/rtc-s35390a.c 	err = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, &sts, sizeof(sts));
s35390a           307 drivers/rtc/rtc-s35390a.c 	err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts));
s35390a           316 drivers/rtc/rtc-s35390a.c 	buf[S35390A_ALRM_BYTE_HOURS] = s35390a_hr2reg(s35390a,
s35390a           326 drivers/rtc/rtc-s35390a.c 	err = s35390a_set_reg(s35390a, S35390A_CMD_INT2_REG1, buf,
s35390a           335 drivers/rtc/rtc-s35390a.c 	struct s35390a *s35390a = i2c_get_clientdata(client);
s35390a           339 drivers/rtc/rtc-s35390a.c 	err = s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts));
s35390a           354 drivers/rtc/rtc-s35390a.c 	err = s35390a_get_reg(s35390a, S35390A_CMD_INT2_REG1, buf, sizeof(buf));
s35390a           372 drivers/rtc/rtc-s35390a.c 			s35390a_reg2hr(s35390a,
s35390a           392 drivers/rtc/rtc-s35390a.c 	struct s35390a *s35390a = i2c_get_clientdata(client);
s35390a           399 drivers/rtc/rtc-s35390a.c 		err = s35390a_read_status(s35390a, &sts);
s35390a           407 drivers/rtc/rtc-s35390a.c 		err = s35390a_init(s35390a);
s35390a           433 drivers/rtc/rtc-s35390a.c 	struct s35390a *s35390a;
s35390a           440 drivers/rtc/rtc-s35390a.c 	s35390a = devm_kzalloc(dev, sizeof(struct s35390a), GFP_KERNEL);
s35390a           441 drivers/rtc/rtc-s35390a.c 	if (!s35390a)
s35390a           444 drivers/rtc/rtc-s35390a.c 	s35390a->client[0] = client;
s35390a           445 drivers/rtc/rtc-s35390a.c 	i2c_set_clientdata(client, s35390a);
s35390a           449 drivers/rtc/rtc-s35390a.c 		s35390a->client[i] = devm_i2c_new_dummy_device(dev,
s35390a           452 drivers/rtc/rtc-s35390a.c 		if (IS_ERR(s35390a->client[i])) {
s35390a           455 drivers/rtc/rtc-s35390a.c 			return PTR_ERR(s35390a->client[i]);
s35390a           459 drivers/rtc/rtc-s35390a.c 	err_read = s35390a_read_status(s35390a, &status1);
s35390a           466 drivers/rtc/rtc-s35390a.c 		s35390a->twentyfourhour = 1;
s35390a           468 drivers/rtc/rtc-s35390a.c 		s35390a->twentyfourhour = 0;
s35390a           473 drivers/rtc/rtc-s35390a.c 		err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &buf, 1);
s35390a           479 drivers/rtc/rtc-s35390a.c 		err = s35390a_disable_test_mode(s35390a);
s35390a           488 drivers/rtc/rtc-s35390a.c 	s35390a->rtc = devm_rtc_device_register(dev, s35390a_driver.driver.name,
s35390a           491 drivers/rtc/rtc-s35390a.c 	if (IS_ERR(s35390a->rtc))
s35390a           492 drivers/rtc/rtc-s35390a.c 		return PTR_ERR(s35390a->rtc);
s35390a           495 drivers/rtc/rtc-s35390a.c 	s35390a->rtc->uie_unsupported = 1;
s35390a           498 drivers/rtc/rtc-s35390a.c 		rtc_update_irq(s35390a->rtc, 1, RTC_AF);