Lines Matching refs:sp_rtc

67 	struct sunplus_rtc *sp_rtc = dev_get_drvdata(dev);  in sp_get_seconds()  local
69 *secs = (unsigned long)readl(sp_rtc->reg_base + RTC_TIMER_OUT); in sp_get_seconds()
74 struct sunplus_rtc *sp_rtc = dev_get_drvdata(dev); in sp_set_seconds() local
76 writel((u32)secs, sp_rtc->reg_base + RTC_TIMER_SET); in sp_set_seconds()
102 struct sunplus_rtc *sp_rtc = dev_get_drvdata(dev); in sp_rtc_set_alarm() local
107 writel((u32)alarm_time, sp_rtc->reg_base + RTC_ALARM_SET); in sp_rtc_set_alarm()
114 struct sunplus_rtc *sp_rtc = dev_get_drvdata(dev); in sp_rtc_read_alarm() local
117 alarm_time = readl(sp_rtc->reg_base + RTC_ALARM_SET); in sp_rtc_read_alarm()
132 struct sunplus_rtc *sp_rtc = dev_get_drvdata(dev); in sp_rtc_alarm_irq_enable() local
139 sp_rtc->reg_base + RTC_CTRL); in sp_rtc_alarm_irq_enable()
142 0x0, sp_rtc->reg_base + RTC_CTRL); in sp_rtc_alarm_irq_enable()
158 struct sunplus_rtc *sp_rtc = dev_get_drvdata(&plat_dev->dev); in sp_rtc_irq_handler() local
160 rtc_update_irq(sp_rtc->rtc, 1, RTC_IRQF | RTC_AF); in sp_rtc_irq_handler()
182 struct sunplus_rtc *sp_rtc = dev_get_drvdata(&dev); in sp_rtc_set_trickle_charger() local
210 writel(BAT_CHARGE_RSEL_MASK_BIT | rsel, sp_rtc->reg_base + RTC_BATT_CHARGE_CTRL); in sp_rtc_set_trickle_charger()
215 sp_rtc->reg_base + RTC_BATT_CHARGE_CTRL); in sp_rtc_set_trickle_charger()
219 sp_rtc->reg_base + RTC_BATT_CHARGE_CTRL); in sp_rtc_set_trickle_charger()
226 writel(BAT_CHARGE_EN_MASK_BIT | BAT_CHARGE_EN, sp_rtc->reg_base + RTC_BATT_CHARGE_CTRL); in sp_rtc_set_trickle_charger()
231 struct sunplus_rtc *sp_rtc; in sp_rtc_probe() local
234 sp_rtc = devm_kzalloc(&plat_dev->dev, sizeof(*sp_rtc), GFP_KERNEL); in sp_rtc_probe()
235 if (!sp_rtc) in sp_rtc_probe()
238 sp_rtc->reg_base = devm_platform_ioremap_resource_byname(plat_dev, RTC_REG_NAME); in sp_rtc_probe()
239 if (IS_ERR(sp_rtc->reg_base)) in sp_rtc_probe()
240 return dev_err_probe(&plat_dev->dev, PTR_ERR(sp_rtc->reg_base), in sp_rtc_probe()
243 sp_rtc->res, sp_rtc->reg_base); in sp_rtc_probe()
245 sp_rtc->irq = platform_get_irq(plat_dev, 0); in sp_rtc_probe()
246 if (sp_rtc->irq < 0) in sp_rtc_probe()
247 return sp_rtc->irq; in sp_rtc_probe()
249 ret = devm_request_irq(&plat_dev->dev, sp_rtc->irq, sp_rtc_irq_handler, in sp_rtc_probe()
254 sp_rtc->rtcclk = devm_clk_get(&plat_dev->dev, NULL); in sp_rtc_probe()
255 if (IS_ERR(sp_rtc->rtcclk)) in sp_rtc_probe()
256 return dev_err_probe(&plat_dev->dev, PTR_ERR(sp_rtc->rtcclk), in sp_rtc_probe()
259 sp_rtc->rstc = devm_reset_control_get_exclusive(&plat_dev->dev, NULL); in sp_rtc_probe()
260 if (IS_ERR(sp_rtc->rstc)) in sp_rtc_probe()
261 return dev_err_probe(&plat_dev->dev, PTR_ERR(sp_rtc->rstc), in sp_rtc_probe()
264 ret = clk_prepare_enable(sp_rtc->rtcclk); in sp_rtc_probe()
268 ret = reset_control_deassert(sp_rtc->rstc); in sp_rtc_probe()
273 dev_set_drvdata(&plat_dev->dev, sp_rtc); in sp_rtc_probe()
275 sp_rtc->rtc = devm_rtc_allocate_device(&plat_dev->dev); in sp_rtc_probe()
276 if (IS_ERR(sp_rtc->rtc)) { in sp_rtc_probe()
277 ret = PTR_ERR(sp_rtc->rtc); in sp_rtc_probe()
281 sp_rtc->rtc->range_max = U32_MAX; in sp_rtc_probe()
282 sp_rtc->rtc->range_min = 0; in sp_rtc_probe()
283 sp_rtc->rtc->ops = &sp_rtc_ops; in sp_rtc_probe()
285 ret = devm_rtc_register_device(sp_rtc->rtc); in sp_rtc_probe()
294 writel(DIS_SYS_RST_RTC_MASK_BIT | DIS_SYS_RST_RTC, sp_rtc->reg_base + RTC_CTRL); in sp_rtc_probe()
299 reset_control_assert(sp_rtc->rstc); in sp_rtc_probe()
301 clk_disable_unprepare(sp_rtc->rtcclk); in sp_rtc_probe()
308 struct sunplus_rtc *sp_rtc = dev_get_drvdata(&plat_dev->dev); in sp_rtc_remove() local
311 reset_control_assert(sp_rtc->rstc); in sp_rtc_remove()
312 clk_disable_unprepare(sp_rtc->rtcclk); in sp_rtc_remove()
318 struct sunplus_rtc *sp_rtc = dev_get_drvdata(dev); in sp_rtc_suspend() local
321 enable_irq_wake(sp_rtc->irq); in sp_rtc_suspend()
328 struct sunplus_rtc *sp_rtc = dev_get_drvdata(dev); in sp_rtc_resume() local
331 disable_irq_wake(sp_rtc->irq); in sp_rtc_resume()