Lines Matching refs:crtc

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