Lines Matching refs:pcf85063
61 struct pcf85063 { struct
68 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_rtc_read_time() argument
78 rc = regmap_bulk_read(pcf85063->regmap, PCF85063_REG_SC, regs, in pcf85063_rtc_read_time()
85 dev_warn(&pcf85063->rtc->dev, "Power loss detected, invalid time\n"); in pcf85063_rtc_read_time()
103 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_rtc_set_time() local
111 rc = regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL1, in pcf85063_rtc_set_time()
136 rc = regmap_bulk_write(pcf85063->regmap, PCF85063_REG_SC, in pcf85063_rtc_set_time()
146 return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL1, in pcf85063_rtc_set_time()
152 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_rtc_read_alarm() local
157 ret = regmap_bulk_read(pcf85063->regmap, PCF85063_REG_ALM_S, in pcf85063_rtc_read_alarm()
167 ret = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL2, &val); in pcf85063_rtc_read_alarm()
178 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_rtc_set_alarm() local
188 ret = regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2, in pcf85063_rtc_set_alarm()
193 ret = regmap_bulk_write(pcf85063->regmap, PCF85063_REG_ALM_S, in pcf85063_rtc_set_alarm()
198 return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2, in pcf85063_rtc_set_alarm()
206 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_rtc_alarm_irq_enable() local
208 return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2, in pcf85063_rtc_alarm_irq_enable()
215 struct pcf85063 *pcf85063 = dev_id; in pcf85063_rtc_handle_irq() local
219 err = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL2, &val); in pcf85063_rtc_handle_irq()
224 rtc_update_irq(pcf85063->rtc, 1, RTC_IRQF | RTC_AF); in pcf85063_rtc_handle_irq()
225 regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL2, in pcf85063_rtc_handle_irq()
236 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_read_offset() local
241 ret = regmap_read(pcf85063->regmap, PCF85063_REG_OFFSET, ®); in pcf85063_read_offset()
258 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_set_offset() local
277 return regmap_write(pcf85063->regmap, PCF85063_REG_OFFSET, reg); in pcf85063_set_offset()
283 struct pcf85063 *pcf85063 = dev_get_drvdata(dev); in pcf85063_ioctl() local
288 ret = regmap_read(pcf85063->regmap, PCF85063_REG_SC, &status); in pcf85063_ioctl()
293 dev_warn(&pcf85063->rtc->dev, "Voltage low, data loss detected.\n"); in pcf85063_ioctl()
303 ret = regmap_update_bits(pcf85063->regmap, PCF85063_REG_SC, in pcf85063_ioctl()
344 static int pcf85063_load_capacitance(struct pcf85063 *pcf85063, in pcf85063_load_capacitance() argument
358 dev_warn(&pcf85063->rtc->dev, "Unknown quartz-load-femtofarads value: %d. Assuming 7000", in pcf85063_load_capacitance()
368 return regmap_update_bits(pcf85063->regmap, PCF85063_REG_CTRL1, in pcf85063_load_capacitance()
401 struct pcf85063 *pcf85063; in pcf85063_probe() local
416 pcf85063 = devm_kzalloc(&client->dev, sizeof(struct pcf85063), in pcf85063_probe()
418 if (!pcf85063) in pcf85063_probe()
424 pcf85063->regmap = devm_regmap_init_i2c(client, &config->regmap); in pcf85063_probe()
425 if (IS_ERR(pcf85063->regmap)) in pcf85063_probe()
426 return PTR_ERR(pcf85063->regmap); in pcf85063_probe()
428 i2c_set_clientdata(client, pcf85063); in pcf85063_probe()
430 err = regmap_read(pcf85063->regmap, PCF85063_REG_CTRL1, &tmp); in pcf85063_probe()
436 pcf85063->rtc = devm_rtc_allocate_device(&client->dev); in pcf85063_probe()
437 if (IS_ERR(pcf85063->rtc)) in pcf85063_probe()
438 return PTR_ERR(pcf85063->rtc); in pcf85063_probe()
440 err = pcf85063_load_capacitance(pcf85063, client->dev.of_node, in pcf85063_probe()
446 pcf85063->rtc->ops = &pcf85063_rtc_ops; in pcf85063_probe()
447 pcf85063->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; in pcf85063_probe()
448 pcf85063->rtc->range_max = RTC_TIMESTAMP_END_2099; in pcf85063_probe()
449 pcf85063->rtc->uie_unsupported = 1; in pcf85063_probe()
455 "pcf85063", pcf85063); in pcf85063_probe()
457 dev_warn(&pcf85063->rtc->dev, in pcf85063_probe()
460 pcf85063->rtc->ops = &pcf85063_rtc_ops_alarm; in pcf85063_probe()
464 dev_err(&pcf85063->rtc->dev, in pcf85063_probe()
469 nvmem_cfg.priv = pcf85063->regmap; in pcf85063_probe()
470 rtc_nvmem_register(pcf85063->rtc, &nvmem_cfg); in pcf85063_probe()
472 return rtc_register_device(pcf85063->rtc); in pcf85063_probe()