Lines Matching refs:rv3029

123 static int rv3029_eeprom_busywait(struct rv3029_data *rv3029)
129 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
137 dev_err(rv3029->dev, "EEPROM busy wait timeout.\n");
144 static int rv3029_eeprom_exit(struct rv3029_data *rv3029)
147 return regmap_update_bits(rv3029->regmap, RV3029_ONOFF_CTRL,
152 static int rv3029_eeprom_enter(struct rv3029_data *rv3029)
158 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
167 ret = regmap_update_bits(rv3029->regmap, RV3029_STATUS,
172 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
176 dev_err(rv3029->dev,
183 ret = regmap_update_bits(rv3029->regmap, RV3029_ONOFF_CTRL,
189 ret = rv3029_eeprom_busywait(rv3029);
191 rv3029_eeprom_exit(rv3029);
196 static int rv3029_eeprom_read(struct rv3029_data *rv3029, u8 reg,
201 err = rv3029_eeprom_enter(rv3029);
205 ret = regmap_bulk_read(rv3029->regmap, reg, buf, len);
207 err = rv3029_eeprom_exit(rv3029);
214 static int rv3029_eeprom_write(struct rv3029_data *rv3029, u8 reg,
221 err = rv3029_eeprom_enter(rv3029);
226 ret = regmap_read(rv3029->regmap, reg, &tmp);
231 ret = regmap_write(rv3029->regmap, reg, tmp);
235 ret = rv3029_eeprom_busywait(rv3029);
240 err = rv3029_eeprom_exit(rv3029);
247 static int rv3029_eeprom_update_bits(struct rv3029_data *rv3029,
253 ret = rv3029_eeprom_read(rv3029, reg, &buf, 1);
258 ret = rv3029_eeprom_write(rv3029, reg, &buf, 1);
268 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
273 rtc_lock(rv3029->rtc);
275 ret = regmap_read(rv3029->regmap, RV3029_IRQ_CTRL, &controls);
278 rtc_unlock(rv3029->rtc);
282 ret = regmap_read(rv3029->regmap, RV3029_IRQ_FLAGS, &flags);
285 rtc_unlock(rv3029->rtc);
296 rtc_update_irq(rv3029->rtc, 1, events);
297 regmap_write(rv3029->regmap, RV3029_IRQ_FLAGS, flags);
298 regmap_write(rv3029->regmap, RV3029_IRQ_CTRL, controls);
300 rtc_unlock(rv3029->rtc);
307 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
312 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
319 ret = regmap_bulk_read(rv3029->regmap, RV3029_W_SEC, regs,
350 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
356 ret = regmap_bulk_read(rv3029->regmap, RV3029_A_SC, regs,
361 ret = regmap_read(rv3029->regmap, RV3029_IRQ_CTRL, &controls);
365 ret = regmap_read(rv3029->regmap, RV3029_IRQ_FLAGS, &flags);
385 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
387 return regmap_update_bits(rv3029->regmap, RV3029_IRQ_CTRL,
394 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
414 ret = regmap_bulk_write(rv3029->regmap, RV3029_A_SC, regs,
424 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
436 ret = regmap_bulk_write(rv3029->regmap, RV3029_W_SEC, regs,
442 return regmap_update_bits(rv3029->regmap, RV3029_STATUS,
448 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
454 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
467 return regmap_update_bits(rv3029->regmap, RV3029_STATUS,
546 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
573 err = rv3029_eeprom_update_bits(rv3029, RV3029_CONTROL_E2P_EECTRL,
582 static int rv3029_read_temp(struct rv3029_data *rv3029, int *temp_mC)
587 ret = regmap_read(rv3029->regmap, RV3029_TEMP_PAGE, &temp);
600 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
603 ret = rv3029_read_temp(rv3029, &temp_mC);
615 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
629 ret = rv3029_eeprom_update_bits(rv3029, RV3029_CONTROL_E2P_EECTRL,
642 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
646 ret = rv3029_eeprom_read(rv3029, RV3029_CONTROL_E2P_EECTRL,
678 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
681 hwmon_dev = devm_hwmon_device_register_with_groups(dev, name, rv3029,
709 struct rv3029_data *rv3029;
721 rv3029 = devm_kzalloc(dev, sizeof(*rv3029), GFP_KERNEL);
722 if (!rv3029)
725 rv3029->regmap = regmap;
726 rv3029->irq = irq;
727 rv3029->dev = dev;
728 dev_set_drvdata(dev, rv3029);
733 rv3029->rtc = devm_rtc_allocate_device(dev);
734 if (IS_ERR(rv3029->rtc))
735 return PTR_ERR(rv3029->rtc);
737 if (rv3029->irq > 0) {
743 rc = devm_request_threaded_irq(dev, rv3029->irq,
746 "rv3029", dev);
749 rv3029->irq = 0;
752 if (!rv3029->irq)
753 clear_bit(RTC_FEATURE_ALARM, rv3029->rtc->features);
755 rv3029->rtc->ops = &rv3029_rtc_ops;
756 rv3029->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
757 rv3029->rtc->range_max = RTC_TIMESTAMP_END_2079;
759 rc = devm_rtc_register_device(rv3029->rtc);
763 nvmem_cfg.priv = rv3029->regmap;
764 devm_rtc_nvmem_register(rv3029->rtc, &nvmem_cfg);
810 { "rv3029", 0 },
817 { .compatible = "microcrystal,rv3029" },
824 .name = "rv3029",