s35390a
static int s35390a_init(struct s35390a *s35390a)
ret = s35390a_set_reg(s35390a, S35390A_CMD_STATUS1, &buf, 1);
ret = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, &buf, 1);
static int s35390a_read_status(struct s35390a *s35390a, char *status1)
ret = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, status1, 1);
static int s35390a_disable_test_mode(struct s35390a *s35390a)
if (s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf)) < 0)
return s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, buf, sizeof(buf));
static char s35390a_hr2reg(struct s35390a *s35390a, int hour)
if (s35390a->twentyfourhour)
static int s35390a_reg2hr(struct s35390a *s35390a, char reg)
if (s35390a->twentyfourhour)
struct s35390a *s35390a = i2c_get_clientdata(client);
if (s35390a_read_status(s35390a, &status) == 1)
s35390a_init(s35390a);
buf[S35390A_BYTE_HOURS] = s35390a_hr2reg(s35390a, tm->tm_hour);
return s35390a_set_reg(s35390a, S35390A_CMD_TIME1, buf, sizeof(buf));
struct s35390a *s35390a = i2c_get_clientdata(client);
if (s35390a_read_status(s35390a, &status) == 1)
err = s35390a_get_reg(s35390a, S35390A_CMD_TIME1, buf, sizeof(buf));
tm->tm_hour = s35390a_reg2hr(s35390a, buf[S35390A_BYTE_HOURS]);
struct s35390a *s35390a = i2c_get_clientdata(client);
err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts));
err = s35390a_get_reg(s35390a, S35390A_CMD_STATUS1, &sts, sizeof(sts));
err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts));
buf[S35390A_ALRM_BYTE_HOURS] = s35390a_hr2reg(s35390a,
err = s35390a_set_reg(s35390a, S35390A_CMD_INT2_REG1, buf,
struct s35390a *s35390a = i2c_get_clientdata(client);
err = s35390a_get_reg(s35390a, S35390A_CMD_STATUS2, &sts, sizeof(sts));
err = s35390a_get_reg(s35390a, S35390A_CMD_INT2_REG1, buf, sizeof(buf));
s35390a_reg2hr(s35390a,
struct s35390a *s35390a = i2c_get_clientdata(client);
err = s35390a_read_status(s35390a, &sts);
err = s35390a_init(s35390a);
struct s35390a *s35390a = priv;
return s35390a_get_reg(s35390a, S35390A_CMD_FREE_REG, val, bytes);
struct s35390a *s35390a = priv;
return s35390a_set_reg(s35390a, S35390A_CMD_FREE_REG, val, bytes);
struct s35390a *s35390a;
s35390a = devm_kzalloc(dev, sizeof(struct s35390a), GFP_KERNEL);
if (!s35390a)
s35390a->client[0] = client;
i2c_set_clientdata(client, s35390a);
s35390a->client[i] = devm_i2c_new_dummy_device(dev,
if (IS_ERR(s35390a->client[i])) {
return PTR_ERR(s35390a->client[i]);
err_read = s35390a_read_status(s35390a, &status1);
s35390a->twentyfourhour = 1;
s35390a->twentyfourhour = 0;
err = s35390a_set_reg(s35390a, S35390A_CMD_STATUS2, &buf, 1);
err = s35390a_disable_test_mode(s35390a);
nvmem_cfg.priv = s35390a;
static int s35390a_set_reg(struct s35390a *s35390a, int reg, u8 *buf, int len)
struct i2c_client *client = s35390a->client[reg];
static int s35390a_get_reg(struct s35390a *s35390a, int reg, u8 *buf, int len)
struct i2c_client *client = s35390a->client[reg];