Lines Matching refs:rv3029
122 static int rv3029_eeprom_busywait(struct rv3029_data *rv3029)
128 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
136 dev_err(rv3029->dev, "EEPROM busy wait timeout.\n");
143 static int rv3029_eeprom_exit(struct rv3029_data *rv3029)
146 return regmap_update_bits(rv3029->regmap, RV3029_ONOFF_CTRL,
151 static int rv3029_eeprom_enter(struct rv3029_data *rv3029)
157 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
166 ret = regmap_update_bits(rv3029->regmap, RV3029_STATUS,
171 ret = regmap_read(rv3029->regmap, RV3029_STATUS, &sr);
175 dev_err(rv3029->dev,
182 ret = regmap_update_bits(rv3029->regmap, RV3029_ONOFF_CTRL,
188 ret = rv3029_eeprom_busywait(rv3029);
190 rv3029_eeprom_exit(rv3029);
195 static int rv3029_eeprom_read(struct rv3029_data *rv3029, u8 reg,
200 err = rv3029_eeprom_enter(rv3029);
204 ret = regmap_bulk_read(rv3029->regmap, reg, buf, len);
206 err = rv3029_eeprom_exit(rv3029);
213 static int rv3029_eeprom_write(struct rv3029_data *rv3029, u8 reg,
220 err = rv3029_eeprom_enter(rv3029);
225 ret = regmap_read(rv3029->regmap, reg, &tmp);
230 ret = regmap_write(rv3029->regmap, reg, tmp);
234 ret = rv3029_eeprom_busywait(rv3029);
239 err = rv3029_eeprom_exit(rv3029);
246 static int rv3029_eeprom_update_bits(struct rv3029_data *rv3029,
252 ret = rv3029_eeprom_read(rv3029, reg, &buf, 1);
257 ret = rv3029_eeprom_write(rv3029, reg, &buf, 1);
267 struct rv3029_data *rv3029 = dev_get_drvdata(dev);
268 struct mutex *lock = &rv3029->rtc->ops_lock;
275 ret = regmap_read(rv3029->regmap, RV3029_IRQ_CTRL, &controls);
282 ret = regmap_read(rv3029->regmap, RV3029_IRQ_FLAGS, &flags);
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);
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,
706 struct rv3029_data *rv3029;
718 rv3029 = devm_kzalloc(dev, sizeof(*rv3029), GFP_KERNEL);
719 if (!rv3029)
722 rv3029->regmap = regmap;
723 rv3029->irq = irq;
724 rv3029->dev = dev;
725 dev_set_drvdata(dev, rv3029);
730 rv3029->rtc = devm_rtc_allocate_device(dev);
731 if (IS_ERR(rv3029->rtc))
732 return PTR_ERR(rv3029->rtc);
734 if (rv3029->irq > 0) {
735 rc = devm_request_threaded_irq(dev, rv3029->irq,
738 "rv3029", dev);
741 rv3029->irq = 0;
749 rv3029->rtc->ops = &rv3029_rtc_ops;
750 rv3029->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
751 rv3029->rtc->range_max = RTC_TIMESTAMP_END_2079;
753 rc = rtc_register_device(rv3029->rtc);
757 nvmem_cfg.priv = rv3029->regmap;
758 rtc_nvmem_register(rv3029->rtc, &nvmem_cfg);
805 { "rv3029", 0 },
812 { .compatible = "microcrystal,rv3029" },
819 .name = "rv3029",