rk808_rtc
ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
ret = regmap_bulk_read(rk808_rtc->regmap, rk808_rtc->creg->seconds_reg,
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
ret = regmap_bulk_write(rk808_rtc->regmap, rk808_rtc->creg->seconds_reg,
ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
ret = regmap_bulk_read(rk808_rtc->regmap,
rk808_rtc->creg->alarm_seconds_reg,
ret = regmap_read(rk808_rtc->regmap, rk808_rtc->creg->int_reg, &int_reg);
static int rk808_rtc_stop_alarm(struct rk808_rtc *rk808_rtc)
ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->int_reg,
static int rk808_rtc_start_alarm(struct rk808_rtc *rk808_rtc)
ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->int_reg,
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
ret = rk808_rtc_stop_alarm(rk808_rtc);
ret = regmap_bulk_write(rk808_rtc->regmap,
rk808_rtc->creg->alarm_seconds_reg,
ret = rk808_rtc_start_alarm(rk808_rtc);
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
return rk808_rtc_start_alarm(rk808_rtc);
return rk808_rtc_stop_alarm(rk808_rtc);
struct rk808_rtc *rk808_rtc = data;
ret = regmap_write(rk808_rtc->regmap, rk808_rtc->creg->status_reg,
dev_err(&rk808_rtc->rtc->dev,
rtc_update_irq(rk808_rtc->rtc, 1, RTC_IRQF | RTC_AF);
dev_dbg(&rk808_rtc->rtc->dev,
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
enable_irq_wake(rk808_rtc->irq);
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);
disable_irq_wake(rk808_rtc->irq);
struct rk808_rtc *rk808_rtc;
rk808_rtc = devm_kzalloc(&pdev->dev, sizeof(*rk808_rtc), GFP_KERNEL);
if (rk808_rtc == NULL)
rk808_rtc->creg = &rk817_creg;
rk808_rtc->creg = &rk808_creg;
platform_set_drvdata(pdev, rk808_rtc);
rk808_rtc->regmap = dev_get_regmap(pdev->dev.parent, NULL);
if (!rk808_rtc->regmap)
ret = regmap_update_bits(rk808_rtc->regmap, rk808_rtc->creg->ctrl_reg,
ret = regmap_write(rk808_rtc->regmap, rk808_rtc->creg->status_reg,
rk808_rtc->rtc = devm_rtc_allocate_device(&pdev->dev);
if (IS_ERR(rk808_rtc->rtc))
return PTR_ERR(rk808_rtc->rtc);
rk808_rtc->rtc->ops = &rk808_rtc_ops;
rk808_rtc->irq = platform_get_irq(pdev, 0);
if (rk808_rtc->irq < 0)
return rk808_rtc->irq;
ret = devm_request_threaded_irq(&pdev->dev, rk808_rtc->irq, NULL,
"RTC alarm", rk808_rtc);
rk808_rtc->irq, ret);
return devm_rtc_register_device(rk808_rtc->rtc);
struct rk808_rtc *rk808_rtc = dev_get_drvdata(dev);