Lines Matching refs:crtc

87 static void cdns_rtc_set_enabled(struct cdns_rtc *crtc, bool enabled)  in cdns_rtc_set_enabled()  argument
91 writel(reg, crtc->regs + CDNS_RTC_CTLR); in cdns_rtc_set_enabled()
94 static bool cdns_rtc_get_enabled(struct cdns_rtc *crtc) in cdns_rtc_get_enabled() argument
96 return !(readl(crtc->regs + CDNS_RTC_CTLR) & CDNS_RTC_CTLR_TIME_CAL); in cdns_rtc_get_enabled()
102 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_irq_handler() local
105 if (!(readl(crtc->regs + CDNS_RTC_EFLR) & CDNS_RTC_AEI_ALRM)) in cdns_rtc_irq_handler()
108 rtc_update_irq(crtc->rtc_dev, 1, RTC_IRQF | RTC_AF); in cdns_rtc_irq_handler()
128 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_read_time() local
132 if (!cdns_rtc_get_enabled(crtc)) in cdns_rtc_read_time()
135 cdns_rtc_set_enabled(crtc, false); in cdns_rtc_read_time()
137 reg = readl(crtc->regs + CDNS_RTC_TIMR); in cdns_rtc_read_time()
140 reg = readl(crtc->regs + CDNS_RTC_CALR); in cdns_rtc_read_time()
147 cdns_rtc_set_enabled(crtc, true); in cdns_rtc_read_time()
153 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_set_time() local
159 cdns_rtc_set_enabled(crtc, false); in cdns_rtc_set_time()
171 writel(timr, crtc->regs + CDNS_RTC_TIMR); in cdns_rtc_set_time()
172 writel(calr, crtc->regs + CDNS_RTC_CALR); in cdns_rtc_set_time()
173 stsr = readl(crtc->regs + CDNS_RTC_STSR); in cdns_rtc_set_time()
181 cdns_rtc_set_enabled(crtc, true); in cdns_rtc_set_time()
187 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_alarm_irq_enable() local
192 crtc->regs + CDNS_RTC_AENR); in cdns_rtc_alarm_irq_enable()
193 writel(CDNS_RTC_AEI_ALRM, crtc->regs + CDNS_RTC_IENR); in cdns_rtc_alarm_irq_enable()
195 writel(0, crtc->regs + CDNS_RTC_AENR); in cdns_rtc_alarm_irq_enable()
196 writel(CDNS_RTC_AEI_ALRM, crtc->regs + CDNS_RTC_IDISR); in cdns_rtc_alarm_irq_enable()
204 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_read_alarm() local
207 reg = readl(crtc->regs + CDNS_RTC_TIMAR); in cdns_rtc_read_alarm()
210 reg = readl(crtc->regs + CDNS_RTC_CALAR); in cdns_rtc_read_alarm()
219 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_set_alarm() local
232 writel(timar, crtc->regs + CDNS_RTC_TIMAR); in cdns_rtc_set_alarm()
233 writel(calar, crtc->regs + CDNS_RTC_CALAR); in cdns_rtc_set_alarm()
234 stsr = readl(crtc->regs + CDNS_RTC_STSR); in cdns_rtc_set_alarm()
257 struct cdns_rtc *crtc; in cdns_rtc_probe() local
261 crtc = devm_kzalloc(&pdev->dev, sizeof(*crtc), GFP_KERNEL); in cdns_rtc_probe()
262 if (!crtc) in cdns_rtc_probe()
265 crtc->regs = devm_platform_ioremap_resource(pdev, 0); in cdns_rtc_probe()
266 if (IS_ERR(crtc->regs)) in cdns_rtc_probe()
267 return PTR_ERR(crtc->regs); in cdns_rtc_probe()
269 crtc->irq = platform_get_irq(pdev, 0); in cdns_rtc_probe()
270 if (crtc->irq < 0) in cdns_rtc_probe()
273 crtc->pclk = devm_clk_get(&pdev->dev, "pclk"); in cdns_rtc_probe()
274 if (IS_ERR(crtc->pclk)) { in cdns_rtc_probe()
275 ret = PTR_ERR(crtc->pclk); in cdns_rtc_probe()
281 crtc->ref_clk = devm_clk_get(&pdev->dev, "ref_clk"); in cdns_rtc_probe()
282 if (IS_ERR(crtc->ref_clk)) { in cdns_rtc_probe()
283 ret = PTR_ERR(crtc->ref_clk); in cdns_rtc_probe()
289 crtc->rtc_dev = devm_rtc_allocate_device(&pdev->dev); in cdns_rtc_probe()
290 if (IS_ERR(crtc->rtc_dev)) in cdns_rtc_probe()
291 return PTR_ERR(crtc->rtc_dev); in cdns_rtc_probe()
293 platform_set_drvdata(pdev, crtc); in cdns_rtc_probe()
295 ret = clk_prepare_enable(crtc->pclk); in cdns_rtc_probe()
302 ret = clk_prepare_enable(crtc->ref_clk); in cdns_rtc_probe()
309 ref_clk_freq = clk_get_rate(crtc->ref_clk); in cdns_rtc_probe()
318 ret = devm_request_irq(&pdev->dev, crtc->irq, in cdns_rtc_probe()
329 crtc->rtc_dev->range_min = mktime64(1900, 1, 1, 0, 0, 0); in cdns_rtc_probe()
330 crtc->rtc_dev->range_max = mktime64(2999, 12, 31, 23, 59, 59); in cdns_rtc_probe()
332 crtc->rtc_dev->ops = &cdns_rtc_ops; in cdns_rtc_probe()
336 writel(0, crtc->regs + CDNS_RTC_HMR); in cdns_rtc_probe()
337 writel(CDNS_RTC_KRTCR_KRTC, crtc->regs + CDNS_RTC_KRTCR); in cdns_rtc_probe()
339 ret = devm_rtc_register_device(crtc->rtc_dev); in cdns_rtc_probe()
349 clk_disable_unprepare(crtc->ref_clk); in cdns_rtc_probe()
352 clk_disable_unprepare(crtc->pclk); in cdns_rtc_probe()
359 struct cdns_rtc *crtc = platform_get_drvdata(pdev); in cdns_rtc_remove() local
364 clk_disable_unprepare(crtc->pclk); in cdns_rtc_remove()
365 clk_disable_unprepare(crtc->ref_clk); in cdns_rtc_remove()
371 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_suspend() local
374 enable_irq_wake(crtc->irq); in cdns_rtc_suspend()
381 struct cdns_rtc *crtc = dev_get_drvdata(dev); in cdns_rtc_resume() local
384 disable_irq_wake(crtc->irq); in cdns_rtc_resume()