Lines Matching refs:rtc_dd
83 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_set_time() local
84 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_set_time()
86 if (!rtc_dd->allow_set_time) in pm8xxx_rtc_set_time()
98 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_time()
100 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_rtc_set_time()
107 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_rtc_set_time()
115 rc = regmap_read(rtc_dd->regmap, regs->ctrl, &rtc_ctrl_reg); in pm8xxx_rtc_set_time()
122 rc = regmap_write(rtc_dd->regmap, regs->ctrl, rtc_ctrl_reg); in pm8xxx_rtc_set_time()
130 rc = regmap_write(rtc_dd->regmap, regs->write, 0); in pm8xxx_rtc_set_time()
137 rc = regmap_bulk_write(rtc_dd->regmap, regs->write + 1, in pm8xxx_rtc_set_time()
145 rc = regmap_write(rtc_dd->regmap, regs->write, value[0]); in pm8xxx_rtc_set_time()
154 rc = regmap_write(rtc_dd->regmap, regs->ctrl, rtc_ctrl_reg); in pm8xxx_rtc_set_time()
163 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_rtc_set_time()
171 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_time()
182 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_read_time() local
183 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_read_time()
185 rc = regmap_bulk_read(rtc_dd->regmap, regs->read, value, sizeof(value)); in pm8xxx_rtc_read_time()
195 rc = regmap_read(rtc_dd->regmap, regs->read, ®); in pm8xxx_rtc_read_time()
202 rc = regmap_bulk_read(rtc_dd->regmap, regs->read, in pm8xxx_rtc_read_time()
226 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_set_alarm() local
227 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_set_alarm()
236 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_alarm()
238 rc = regmap_bulk_write(rtc_dd->regmap, regs->alarm_rw, value, in pm8xxx_rtc_set_alarm()
245 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_rtc_set_alarm()
254 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_rtc_set_alarm()
263 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_alarm()
273 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_read_alarm() local
274 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_read_alarm()
276 rc = regmap_bulk_read(rtc_dd->regmap, regs->alarm_rw, value, in pm8xxx_rtc_read_alarm()
288 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_rtc_read_alarm()
305 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_alarm_irq_enable() local
306 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_alarm_irq_enable()
310 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_alarm_irq_enable()
312 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_rtc_alarm_irq_enable()
321 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_rtc_alarm_irq_enable()
329 rc = regmap_bulk_write(rtc_dd->regmap, regs->alarm_rw, value, in pm8xxx_rtc_alarm_irq_enable()
338 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_alarm_irq_enable()
352 struct pm8xxx_rtc *rtc_dd = dev_id; in pm8xxx_alarm_trigger() local
353 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_alarm_trigger()
357 rtc_update_irq(rtc_dd->rtc, 1, RTC_IRQF | RTC_AF); in pm8xxx_alarm_trigger()
359 spin_lock(&rtc_dd->ctrl_reg_lock); in pm8xxx_alarm_trigger()
362 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_alarm_trigger()
364 spin_unlock(&rtc_dd->ctrl_reg_lock); in pm8xxx_alarm_trigger()
370 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_alarm_trigger()
372 spin_unlock(&rtc_dd->ctrl_reg_lock); in pm8xxx_alarm_trigger()
373 dev_err(rtc_dd->rtc_dev, in pm8xxx_alarm_trigger()
378 spin_unlock(&rtc_dd->ctrl_reg_lock); in pm8xxx_alarm_trigger()
381 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl2, &ctrl_reg); in pm8xxx_alarm_trigger()
383 dev_err(rtc_dd->rtc_dev, in pm8xxx_alarm_trigger()
389 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl2, ctrl_reg); in pm8xxx_alarm_trigger()
391 dev_err(rtc_dd->rtc_dev, in pm8xxx_alarm_trigger()
398 static int pm8xxx_rtc_enable(struct pm8xxx_rtc *rtc_dd) in pm8xxx_rtc_enable() argument
400 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_enable()
405 rc = regmap_read(rtc_dd->regmap, regs->ctrl, &ctrl_reg); in pm8xxx_rtc_enable()
411 rc = regmap_write(rtc_dd->regmap, regs->ctrl, ctrl_reg); in pm8xxx_rtc_enable()
475 struct pm8xxx_rtc *rtc_dd; in pm8xxx_rtc_probe() local
482 rtc_dd = devm_kzalloc(&pdev->dev, sizeof(*rtc_dd), GFP_KERNEL); in pm8xxx_rtc_probe()
483 if (rtc_dd == NULL) in pm8xxx_rtc_probe()
487 spin_lock_init(&rtc_dd->ctrl_reg_lock); in pm8xxx_rtc_probe()
489 rtc_dd->regmap = dev_get_regmap(pdev->dev.parent, NULL); in pm8xxx_rtc_probe()
490 if (!rtc_dd->regmap) { in pm8xxx_rtc_probe()
495 rtc_dd->rtc_alarm_irq = platform_get_irq(pdev, 0); in pm8xxx_rtc_probe()
496 if (rtc_dd->rtc_alarm_irq < 0) in pm8xxx_rtc_probe()
499 rtc_dd->allow_set_time = of_property_read_bool(pdev->dev.of_node, in pm8xxx_rtc_probe()
502 rtc_dd->regs = match->data; in pm8xxx_rtc_probe()
503 rtc_dd->rtc_dev = &pdev->dev; in pm8xxx_rtc_probe()
505 rc = pm8xxx_rtc_enable(rtc_dd); in pm8xxx_rtc_probe()
509 platform_set_drvdata(pdev, rtc_dd); in pm8xxx_rtc_probe()
514 rtc_dd->rtc = devm_rtc_allocate_device(&pdev->dev); in pm8xxx_rtc_probe()
515 if (IS_ERR(rtc_dd->rtc)) in pm8xxx_rtc_probe()
516 return PTR_ERR(rtc_dd->rtc); in pm8xxx_rtc_probe()
518 rtc_dd->rtc->ops = &pm8xxx_rtc_ops; in pm8xxx_rtc_probe()
519 rtc_dd->rtc->range_max = U32_MAX; in pm8xxx_rtc_probe()
522 rc = devm_request_any_context_irq(&pdev->dev, rtc_dd->rtc_alarm_irq, in pm8xxx_rtc_probe()
525 "pm8xxx_rtc_alarm", rtc_dd); in pm8xxx_rtc_probe()
531 rc = devm_rtc_register_device(rtc_dd->rtc); in pm8xxx_rtc_probe()
535 rc = dev_pm_set_wake_irq(&pdev->dev, rtc_dd->rtc_alarm_irq); in pm8xxx_rtc_probe()