Lines Matching refs:rtc_dd

87 	struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);  in pm8xxx_rtc_set_time()  local
88 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_set_time()
90 if (!rtc_dd->allow_set_time) in pm8xxx_rtc_set_time()
102 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_time()
104 rc = regmap_read(rtc_dd->regmap, regs->ctrl, &ctrl_reg); in pm8xxx_rtc_set_time()
111 rc = regmap_write(rtc_dd->regmap, regs->ctrl, ctrl_reg); in pm8xxx_rtc_set_time()
119 rc = regmap_write(rtc_dd->regmap, regs->write, 0); in pm8xxx_rtc_set_time()
126 rc = regmap_bulk_write(rtc_dd->regmap, regs->write + 1, in pm8xxx_rtc_set_time()
134 rc = regmap_write(rtc_dd->regmap, regs->write, value[0]); in pm8xxx_rtc_set_time()
142 rc = regmap_write(rtc_dd->regmap, regs->ctrl, ctrl_reg); in pm8xxx_rtc_set_time()
150 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_time()
161 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_read_time() local
162 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_read_time()
164 rc = regmap_bulk_read(rtc_dd->regmap, regs->read, value, sizeof(value)); in pm8xxx_rtc_read_time()
174 rc = regmap_read(rtc_dd->regmap, regs->read, &reg); in pm8xxx_rtc_read_time()
181 rc = regmap_bulk_read(rtc_dd->regmap, regs->read, in pm8xxx_rtc_read_time()
212 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_set_alarm() local
213 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_set_alarm()
222 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_alarm()
224 rc = regmap_bulk_write(rtc_dd->regmap, regs->alarm_rw, value, in pm8xxx_rtc_set_alarm()
231 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_rtc_set_alarm()
240 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_rtc_set_alarm()
251 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_set_alarm()
260 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_read_alarm() local
261 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_read_alarm()
263 rc = regmap_bulk_read(rtc_dd->regmap, regs->alarm_rw, value, in pm8xxx_rtc_read_alarm()
292 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_alarm_irq_enable() local
293 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_alarm_irq_enable()
296 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_alarm_irq_enable()
298 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_rtc_alarm_irq_enable()
307 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_rtc_alarm_irq_enable()
314 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_rtc_alarm_irq_enable()
328 struct pm8xxx_rtc *rtc_dd = dev_id; in pm8xxx_alarm_trigger() local
329 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_alarm_trigger()
334 rtc_update_irq(rtc_dd->rtc, 1, RTC_IRQF | RTC_AF); in pm8xxx_alarm_trigger()
336 spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_alarm_trigger()
339 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg); in pm8xxx_alarm_trigger()
341 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_alarm_trigger()
347 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg); in pm8xxx_alarm_trigger()
349 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_alarm_trigger()
350 dev_err(rtc_dd->rtc_dev, in pm8xxx_alarm_trigger()
355 spin_unlock_irqrestore(&rtc_dd->ctrl_reg_lock, irq_flags); in pm8xxx_alarm_trigger()
358 rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl2, &ctrl_reg); in pm8xxx_alarm_trigger()
360 dev_err(rtc_dd->rtc_dev, in pm8xxx_alarm_trigger()
366 rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl2, ctrl_reg); in pm8xxx_alarm_trigger()
368 dev_err(rtc_dd->rtc_dev, in pm8xxx_alarm_trigger()
375 static int pm8xxx_rtc_enable(struct pm8xxx_rtc *rtc_dd) in pm8xxx_rtc_enable() argument
377 const struct pm8xxx_rtc_regs *regs = rtc_dd->regs; in pm8xxx_rtc_enable()
382 rc = regmap_read(rtc_dd->regmap, regs->ctrl, &ctrl_reg); in pm8xxx_rtc_enable()
388 rc = regmap_write(rtc_dd->regmap, regs->ctrl, ctrl_reg); in pm8xxx_rtc_enable()
440 struct pm8xxx_rtc *rtc_dd; in pm8xxx_rtc_probe() local
447 rtc_dd = devm_kzalloc(&pdev->dev, sizeof(*rtc_dd), GFP_KERNEL); in pm8xxx_rtc_probe()
448 if (rtc_dd == NULL) in pm8xxx_rtc_probe()
452 spin_lock_init(&rtc_dd->ctrl_reg_lock); in pm8xxx_rtc_probe()
454 rtc_dd->regmap = dev_get_regmap(pdev->dev.parent, NULL); in pm8xxx_rtc_probe()
455 if (!rtc_dd->regmap) { in pm8xxx_rtc_probe()
460 rtc_dd->rtc_alarm_irq = platform_get_irq(pdev, 0); in pm8xxx_rtc_probe()
461 if (rtc_dd->rtc_alarm_irq < 0) { in pm8xxx_rtc_probe()
466 rtc_dd->allow_set_time = of_property_read_bool(pdev->dev.of_node, in pm8xxx_rtc_probe()
469 rtc_dd->regs = match->data; in pm8xxx_rtc_probe()
470 rtc_dd->rtc_dev = &pdev->dev; in pm8xxx_rtc_probe()
472 rc = pm8xxx_rtc_enable(rtc_dd); in pm8xxx_rtc_probe()
476 platform_set_drvdata(pdev, rtc_dd); in pm8xxx_rtc_probe()
481 rtc_dd->rtc = devm_rtc_device_register(&pdev->dev, "pm8xxx_rtc", in pm8xxx_rtc_probe()
483 if (IS_ERR(rtc_dd->rtc)) { in pm8xxx_rtc_probe()
485 __func__, PTR_ERR(rtc_dd->rtc)); in pm8xxx_rtc_probe()
486 return PTR_ERR(rtc_dd->rtc); in pm8xxx_rtc_probe()
490 rc = devm_request_any_context_irq(&pdev->dev, rtc_dd->rtc_alarm_irq, in pm8xxx_rtc_probe()
493 "pm8xxx_rtc_alarm", rtc_dd); in pm8xxx_rtc_probe()
507 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_resume() local
510 disable_irq_wake(rtc_dd->rtc_alarm_irq); in pm8xxx_rtc_resume()
517 struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev); in pm8xxx_rtc_suspend() local
520 enable_irq_wake(rtc_dd->rtc_alarm_irq); in pm8xxx_rtc_suspend()