Lines Matching refs:rs5c372

94 struct rs5c372 {  struct
105 static int rs5c_get_regs(struct rs5c372 *rs5c) in rs5c_get_regs() argument
154 static unsigned rs5c_reg2hr(struct rs5c372 *rs5c, unsigned reg) in rs5c_reg2hr()
169 static unsigned rs5c_hr2reg(struct rs5c372 *rs5c, unsigned hour) in rs5c_hr2reg()
185 struct rs5c372 *rs5c = i2c_get_clientdata(client); in rs5c372_get_datetime()
216 struct rs5c372 *rs5c = i2c_get_clientdata(client); in rs5c372_set_datetime()
254 struct rs5c372 *rs5c372 = i2c_get_clientdata(client); in rs5c372_get_trim() local
255 u8 tmp = rs5c372->regs[RS5C372_REG_TRIM]; in rs5c372_get_trim()
295 struct rs5c372 *rs5c = i2c_get_clientdata(client); in rs5c_rtc_alarm_irq_enable()
336 struct rs5c372 *rs5c = i2c_get_clientdata(client); in rs5c_read_alarm()
364 struct rs5c372 *rs5c = i2c_get_clientdata(client); in rs5c_set_alarm()
506 static int rs5c_oscillator_setup(struct rs5c372 *rs5c372) in rs5c_oscillator_setup() argument
511 if (rs5c372->type == rtc_r2025sd) { in rs5c_oscillator_setup()
512 if (!(rs5c372->regs[RS5C_REG_CTRL2] & R2025_CTRL2_XST)) in rs5c_oscillator_setup()
514 rs5c372->regs[RS5C_REG_CTRL2] &= ~R2025_CTRL2_XST; in rs5c_oscillator_setup()
516 if (!(rs5c372->regs[RS5C_REG_CTRL2] & RS5C_CTRL2_XSTP)) in rs5c_oscillator_setup()
518 rs5c372->regs[RS5C_REG_CTRL2] &= ~RS5C_CTRL2_XSTP; in rs5c_oscillator_setup()
522 buf[0] = rs5c372->regs[RS5C_REG_CTRL1]; in rs5c_oscillator_setup()
523 buf[1] = rs5c372->regs[RS5C_REG_CTRL2]; in rs5c_oscillator_setup()
526 switch (rs5c372->type) { in rs5c_oscillator_setup()
530 rs5c372->time24 = 1; in rs5c_oscillator_setup()
537 rs5c372->time24 = 1; in rs5c_oscillator_setup()
546 ret = i2c_smbus_write_byte_data(rs5c372->client, addr, buf[i]); in rs5c_oscillator_setup()
551 rs5c372->regs[RS5C_REG_CTRL1] = buf[0]; in rs5c_oscillator_setup()
552 rs5c372->regs[RS5C_REG_CTRL2] = buf[1]; in rs5c_oscillator_setup()
562 struct rs5c372 *rs5c372; in rs5c372_probe() local
584 rs5c372 = devm_kzalloc(&client->dev, sizeof(struct rs5c372), in rs5c372_probe()
586 if (!rs5c372) { in rs5c372_probe()
591 rs5c372->client = client; in rs5c372_probe()
592 i2c_set_clientdata(client, rs5c372); in rs5c372_probe()
593 rs5c372->type = id->driver_data; in rs5c372_probe()
596 rs5c372->regs = &rs5c372->buf[1]; in rs5c372_probe()
597 rs5c372->smbus = smbus_mode; in rs5c372_probe()
599 err = rs5c_get_regs(rs5c372); in rs5c372_probe()
604 switch (rs5c372->type) { in rs5c372_probe()
610 if (rs5c372->regs[RS5C_REG_CTRL2] & RS5C372_CTRL2_24) in rs5c372_probe()
611 rs5c372->time24 = 1; in rs5c372_probe()
617 if (rs5c372->regs[RS5C_REG_CTRL1] & RV5C387_CTRL1_24) in rs5c372_probe()
618 rs5c372->time24 = 1; in rs5c372_probe()
634 err = rs5c_oscillator_setup(rs5c372); in rs5c372_probe()
644 ({ char *s; switch (rs5c372->type) { in rs5c372_probe()
653 rs5c372->time24 ? "24hr" : "am/pm" in rs5c372_probe()
657 rs5c372->rtc = devm_rtc_device_register(&client->dev, in rs5c372_probe()
661 if (IS_ERR(rs5c372->rtc)) { in rs5c372_probe()
662 err = PTR_ERR(rs5c372->rtc); in rs5c372_probe()