Lines Matching refs:rk808_rtc
55 struct rk808_rtc { struct
102 struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); in rk808_rtc_readtime() local
103 struct rk808 *rk808 = rk808_rtc->rk808; in rk808_rtc_readtime()
108 ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg, in rk808_rtc_readtime()
122 ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg, in rk808_rtc_readtime()
130 ret = regmap_bulk_read(rk808->regmap, rk808_rtc->creg->seconds_reg, in rk808_rtc_readtime()
145 if (rk808_rtc->flag & RTC_NEED_TRANSITIONS) in rk808_rtc_readtime()
158 struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); in rk808_rtc_set_time() local
159 struct rk808 *rk808 = rk808_rtc->rk808; in rk808_rtc_set_time()
167 if (rk808_rtc->flag & RTC_NEED_TRANSITIONS) in rk808_rtc_set_time()
179 ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg, in rk808_rtc_set_time()
187 ret = regmap_bulk_write(rk808->regmap, rk808_rtc->creg->seconds_reg, in rk808_rtc_set_time()
194 ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg, in rk808_rtc_set_time()
206 struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); in rk808_rtc_readalarm() local
207 struct rk808 *rk808 = rk808_rtc->rk808; in rk808_rtc_readalarm()
213 rk808_rtc->creg->alarm_seconds_reg, in rk808_rtc_readalarm()
227 if (rk808_rtc->flag & RTC_NEED_TRANSITIONS) in rk808_rtc_readalarm()
230 ret = regmap_read(rk808->regmap, rk808_rtc->creg->int_reg, &int_reg); in rk808_rtc_readalarm()
244 static int rk808_rtc_stop_alarm(struct rk808_rtc *rk808_rtc) in rk808_rtc_stop_alarm() argument
246 struct rk808 *rk808 = rk808_rtc->rk808; in rk808_rtc_stop_alarm()
249 ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->int_reg, in rk808_rtc_stop_alarm()
256 ret = regmap_write(rk808->regmap, rk808_rtc->creg->status_reg, in rk808_rtc_stop_alarm()
261 static int rk808_rtc_start_alarm(struct rk808_rtc *rk808_rtc) in rk808_rtc_start_alarm() argument
263 struct rk808 *rk808 = rk808_rtc->rk808; in rk808_rtc_start_alarm()
266 ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->int_reg, in rk808_rtc_start_alarm()
275 struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); in rk808_rtc_setalarm() local
276 struct rk808 *rk808 = rk808_rtc->rk808; in rk808_rtc_setalarm()
280 ret = rk808_rtc_stop_alarm(rk808_rtc); in rk808_rtc_setalarm()
288 if (rk808_rtc->flag & RTC_NEED_TRANSITIONS) in rk808_rtc_setalarm()
299 rk808_rtc->creg->alarm_seconds_reg, in rk808_rtc_setalarm()
306 ret = rk808_rtc_start_alarm(rk808_rtc); in rk808_rtc_setalarm()
318 struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); in rk808_rtc_alarm_irq_enable() local
321 return rk808_rtc_start_alarm(rk808_rtc); in rk808_rtc_alarm_irq_enable()
323 return rk808_rtc_stop_alarm(rk808_rtc); in rk808_rtc_alarm_irq_enable()
338 struct rk808_rtc *rk808_rtc = data; in rk808_alarm_irq() local
339 struct rk808 *rk808 = rk808_rtc->rk808; in rk808_alarm_irq()
343 ret = regmap_write(rk808->regmap, rk808_rtc->creg->status_reg, in rk808_alarm_irq()
351 rtc_update_irq(rk808_rtc->rtc, 1, RTC_IRQF | RTC_AF); in rk808_alarm_irq()
369 struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); in rk808_rtc_suspend() local
372 enable_irq_wake(rk808_rtc->irq); in rk808_rtc_suspend()
382 struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev); in rk808_rtc_resume() local
385 disable_irq_wake(rk808_rtc->irq); in rk808_rtc_resume()
413 struct rk808_rtc *rk808_rtc; in rk808_rtc_probe() local
432 rk808_rtc = devm_kzalloc(&pdev->dev, sizeof(*rk808_rtc), GFP_KERNEL); in rk808_rtc_probe()
433 if (rk808_rtc == NULL) in rk808_rtc_probe()
439 rk808_rtc->creg = &rk808_creg; in rk808_rtc_probe()
440 rk808_rtc->flag |= RTC_NEED_TRANSITIONS; in rk808_rtc_probe()
444 rk808_rtc->creg = &rk808_creg; in rk808_rtc_probe()
448 rk808_rtc->creg = &rk817_creg; in rk808_rtc_probe()
451 rk808_rtc->creg = &rk808_creg; in rk808_rtc_probe()
454 platform_set_drvdata(pdev, rk808_rtc); in rk808_rtc_probe()
455 rk808_rtc->rk808 = rk808; in rk808_rtc_probe()
458 ret = regmap_update_bits(rk808->regmap, rk808_rtc->creg->ctrl_reg, in rk808_rtc_probe()
468 ret = regmap_write(rk808->regmap, rk808_rtc->creg->status_reg, in rk808_rtc_probe()
478 rk808_rtc->rtc = devm_rtc_allocate_device(&pdev->dev); in rk808_rtc_probe()
479 if (IS_ERR(rk808_rtc->rtc)) in rk808_rtc_probe()
480 return PTR_ERR(rk808_rtc->rtc); in rk808_rtc_probe()
482 rk808_rtc->rtc->ops = &rk808_rtc_ops; in rk808_rtc_probe()
484 rk808_rtc->irq = platform_get_irq(pdev, 0); in rk808_rtc_probe()
485 if (rk808_rtc->irq < 0) in rk808_rtc_probe()
486 return rk808_rtc->irq; in rk808_rtc_probe()
489 ret = devm_request_threaded_irq(&pdev->dev, rk808_rtc->irq, NULL, in rk808_rtc_probe()
491 "RTC alarm", rk808_rtc); in rk808_rtc_probe()
494 rk808_rtc->irq, ret); in rk808_rtc_probe()
498 return rtc_register_device(rk808_rtc->rtc); in rk808_rtc_probe()