Lines Matching refs:rtc_dd
81 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
82 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
84 if (!rtc_dd->allow_set_time)
96 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags);
98 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg);
105 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg);
113 rc = regmap_read(rtc_dd->regmap, regs->ctrl, &rtc_ctrl_reg);
120 rc = regmap_write(rtc_dd->regmap, regs->ctrl, rtc_ctrl_reg);
128 rc = regmap_write(rtc_dd->regmap, regs->write, 0);
135 rc = regmap_bulk_write(rtc_dd->regmap, regs->write + 1,
143 rc = regmap_write(rtc_dd->regmap, regs->write, value[0]);
152 rc = regmap_write(rtc_dd->regmap, regs->ctrl, rtc_ctrl_reg);
161 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg);
169 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags);
180 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
181 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
183 rc = regmap_bulk_read(rtc_dd->regmap, regs->read, value, sizeof(value));
193 rc = regmap_read(rtc_dd->regmap, regs->read, ®);
200 rc = regmap_bulk_read(rtc_dd->regmap, regs->read,
223 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
224 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
233 rc = regmap_update_bits(rtc_dd->regmap, regs->alarm_ctrl,
238 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags);
240 rc = regmap_bulk_write(rtc_dd->regmap, regs->alarm_rw, value,
248 rc = regmap_update_bits(rtc_dd->regmap, regs->alarm_ctrl,
257 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags);
266 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
267 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
269 rc = regmap_bulk_read(rtc_dd->regmap, regs->alarm_rw, value,
291 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
292 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
296 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags);
298 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg);
307 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg);
315 rc = regmap_bulk_write(rtc_dd->regmap, regs->alarm_rw, value,
324 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags);
338 struct pm8xxx_rtc *rtc_dd = dev_id;
339 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
344 rtc_update_irq(rtc_dd->rtc, 1, RTC_IRQF | RTC_AF);
346 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags);
349 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg);
351 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags);
357 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg);
359 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags);
360 dev_err(rtc_dd->rtc_dev,
365 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags);
368 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl2, &ctrl_reg);
370 dev_err(rtc_dd->rtc_dev,
376 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl2, ctrl_reg);
378 dev_err(rtc_dd->rtc_dev,
385 static int pm8xxx_rtc_enable(struct pm8xxx_rtc *rtc_dd)
387 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
392 rc = regmap_read(rtc_dd->regmap, regs->ctrl, &ctrl_reg);
398 rc = regmap_write(rtc_dd->regmap, regs->ctrl, ctrl_reg);
451 struct pm8xxx_rtc *rtc_dd;
458 rtc_dd = devm_kzalloc(&pdev->dev, sizeof(*rtc_dd), GFP_KERNEL);
459 if (rtc_dd == NULL)
463 spin_lock_init(&rtc_dd->ctrl_reg_lock);
465 rtc_dd->regmap = dev_get_regmap(pdev->dev.parent, NULL);
466 if (!rtc_dd->regmap) {
471 rtc_dd->rtc_alarm_irq = platform_get_irq(pdev, 0);
472 if (rtc_dd->rtc_alarm_irq < 0)
475 rtc_dd->allow_set_time = of_property_read_bool(pdev->dev.of_node,
478 rtc_dd->regs = match->data;
479 rtc_dd->rtc_dev = &pdev->dev;
481 rc = pm8xxx_rtc_enable(rtc_dd);
485 platform_set_drvdata(pdev, rtc_dd);
490 rtc_dd->rtc = devm_rtc_allocate_device(&pdev->dev);
491 if (IS_ERR(rtc_dd->rtc))
492 return PTR_ERR(rtc_dd->rtc);
494 rtc_dd->rtc->ops = &pm8xxx_rtc_ops;
495 rtc_dd->rtc->range_max = U32_MAX;
498 rc = devm_request_any_context_irq(&pdev->dev, rtc_dd->rtc_alarm_irq,
501 "pm8xxx_rtc_alarm", rtc_dd);
507 return rtc_register_device(rtc_dd->rtc);
513 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
516 disable_irq_wake(rtc_dd->rtc_alarm_irq);
523 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
526 enable_irq_wake(rtc_dd->rtc_alarm_irq);