Lines Matching refs:s35390a

56 struct s35390a {  struct
62 static int s35390a_set_reg(struct s35390a *s35390a, int reg, char *buf, int len) in s35390a_set_reg() argument
64 struct i2c_client *client = s35390a->client[reg]; in s35390a_set_reg()
79 static int s35390a_get_reg(struct s35390a *s35390a, int reg, char *buf, int len) in s35390a_get_reg() argument
81 struct i2c_client *client = s35390a->client[reg]; in s35390a_get_reg()
97 static int s35390a_reset(struct s35390a *s35390a) in s35390a_reset() argument
101 if (s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, buf, sizeof(buf)) < 0) in s35390a_reset()
109 return s35390a_set_reg(s35390a, S35390A_CMD_STATUS1, buf, sizeof(buf)); in s35390a_reset()
112 static int s35390a_disable_test_mode(struct s35390a *s35390a) in s35390a_disable_test_mode() argument
116 if (s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf)) < 0) in s35390a_disable_test_mode()
123 return s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf)); in s35390a_disable_test_mode()
126 static char s35390a_hr2reg(struct s35390a *s35390a, int hour) in s35390a_hr2reg() argument
128 if (s35390a->twentyfourhour) in s35390a_hr2reg()
137 static int s35390a_reg2hr(struct s35390a *s35390a, char reg) in s35390a_reg2hr() argument
141 if (s35390a->twentyfourhour) in s35390a_reg2hr()
153 struct s35390a *s35390a = i2c_get_clientdata(client); in s35390a_set_datetime() local
166 buf[S35390A_BYTE_HOURS] = s35390a_hr2reg(s35390a, tm->tm_hour); in s35390a_set_datetime()
174 err = s35390a_set_reg(s35390a, S35390A_CMD_TIME1, buf, sizeof(buf)); in s35390a_set_datetime()
181 struct s35390a *s35390a = i2c_get_clientdata(client); in s35390a_get_datetime() local
185 err = s35390a_get_reg(s35390a, S35390A_CMD_TIME1, buf, sizeof(buf)); in s35390a_get_datetime()
195 tm->tm_hour = s35390a_reg2hr(s35390a, buf[S35390A_BYTE_HOURS]); in s35390a_get_datetime()
211 struct s35390a *s35390a = i2c_get_clientdata(client); in s35390a_set_alarm() local
221 err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); in s35390a_set_alarm()
226 err = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, &sts, sizeof(sts)); in s35390a_set_alarm()
239 err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); in s35390a_set_alarm()
246 buf[S35390A_ALRM_BYTE_HOURS] = s35390a_hr2reg(s35390a, in s35390a_set_alarm()
256 err = s35390a_set_reg(s35390a, S35390A_CMD_INT2_REG1, buf, in s35390a_set_alarm()
264 struct s35390a *s35390a = i2c_get_clientdata(client); in s35390a_read_alarm() local
268 err = s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts)); in s35390a_read_alarm()
275 err = s35390a_get_reg(s35390a, S35390A_CMD_INT2_REG1, buf, sizeof(buf)); in s35390a_read_alarm()
286 alm->time.tm_hour = s35390a_reg2hr(s35390a, in s35390a_read_alarm()
332 struct s35390a *s35390a; in s35390a_probe() local
341 s35390a = devm_kzalloc(&client->dev, sizeof(struct s35390a), in s35390a_probe()
343 if (!s35390a) { in s35390a_probe()
348 s35390a->client[0] = client; in s35390a_probe()
349 i2c_set_clientdata(client, s35390a); in s35390a_probe()
353 s35390a->client[i] = i2c_new_dummy(client->adapter, in s35390a_probe()
355 if (!s35390a->client[i]) { in s35390a_probe()
363 err = s35390a_reset(s35390a); in s35390a_probe()
369 err = s35390a_disable_test_mode(s35390a); in s35390a_probe()
375 err = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, buf, sizeof(buf)); in s35390a_probe()
381 s35390a->twentyfourhour = 1; in s35390a_probe()
383 s35390a->twentyfourhour = 0; in s35390a_probe()
390 s35390a->rtc = devm_rtc_device_register(&client->dev, in s35390a_probe()
394 if (IS_ERR(s35390a->rtc)) { in s35390a_probe()
395 err = PTR_ERR(s35390a->rtc); in s35390a_probe()
402 if (s35390a->client[i]) in s35390a_probe()
403 i2c_unregister_device(s35390a->client[i]); in s35390a_probe()
412 struct s35390a *s35390a = i2c_get_clientdata(client); in s35390a_remove() local
415 if (s35390a->client[i]) in s35390a_remove()
416 i2c_unregister_device(s35390a->client[i]); in s35390a_remove()