rs5c372
static int rs5c_get_regs(struct rs5c372 *rs5c)
static unsigned rs5c_reg2hr(struct rs5c372 *rs5c, unsigned reg)
static unsigned rs5c_hr2reg(struct rs5c372 *rs5c, unsigned hour)
struct rs5c372 *rs5c = i2c_get_clientdata(client);
struct rs5c372 *rs5c = i2c_get_clientdata(client);
struct rs5c372 *rs5c372 = i2c_get_clientdata(client);
u8 tmp = rs5c372->regs[RS5C372_REG_TRIM];
if (rs5c372->type == rtc_rs5c372a || rs5c372->type == rtc_rs5c372b)
struct rs5c372 *rs5c = i2c_get_clientdata(client);
struct rs5c372 *rs5c = i2c_get_clientdata(client);
struct rs5c372 *rs5c = i2c_get_clientdata(client);
struct rs5c372 *rs5c = i2c_get_clientdata(to_i2c_client(dev));
struct rs5c372 *rs5c = i2c_get_clientdata(to_i2c_client(dev));
struct rs5c372 *rs5c = i2c_get_clientdata(to_i2c_client(dev));
static int rs5c_oscillator_setup(struct rs5c372 *rs5c372)
buf[0] = rs5c372->regs[RS5C_REG_CTRL1];
buf[1] = rs5c372->regs[RS5C_REG_CTRL2];
switch (rs5c372->type) {
switch (rs5c372->type) {
rs5c372->time24 = 1;
rs5c372->time24 = 1;
ret = i2c_smbus_write_byte_data(rs5c372->client, addr, buf[i]);
rs5c372->regs[RS5C_REG_CTRL1] = buf[0];
rs5c372->regs[RS5C_REG_CTRL2] = buf[1];
struct rs5c372 *rs5c372;
rs5c372 = devm_kzalloc(&client->dev, sizeof(struct rs5c372),
if (!rs5c372) {
rs5c372->client = client;
i2c_set_clientdata(client, rs5c372);
rs5c372->type = (uintptr_t)of_device_get_match_data(&client->dev);
rs5c372->type = id->driver_data;
rs5c372->regs = &rs5c372->buf[1];
rs5c372->smbus = smbus_mode;
err = rs5c_get_regs(rs5c372);
switch (rs5c372->type) {
if (rs5c372->regs[RS5C_REG_CTRL2] & RS5C372_CTRL2_24)
rs5c372->time24 = 1;
if (rs5c372->regs[RS5C_REG_CTRL1] & RV5C387_CTRL1_24)
rs5c372->time24 = 1;
err = rs5c_oscillator_setup(rs5c372);
({ char *s; switch (rs5c372->type) {
rs5c372->time24 ? "24hr" : "am/pm"
rs5c372->rtc = devm_rtc_device_register(&client->dev,
if (IS_ERR(rs5c372->rtc)) {
err = PTR_ERR(rs5c372->rtc);