Lines Matching refs:xrtcdev

61 	struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
71 writel(new_time, xrtcdev->reg_base + RTC_SET_TM_WR);
81 writel(RTC_INT_SEC, xrtcdev->reg_base + RTC_INT_STS);
90 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
92 status = readl(xrtcdev->reg_base + RTC_INT_STS);
99 read_time = readl(xrtcdev->reg_base + RTC_CUR_TM);
108 read_time = readl(xrtcdev->reg_base + RTC_SET_TM_RD) - 1;
117 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
119 rtc_time64_to_tm(readl(xrtcdev->reg_base + RTC_ALRM), &alrm->time);
120 alrm->enabled = readl(xrtcdev->reg_base + RTC_INT_MASK) & RTC_INT_ALRM;
127 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
135 status = readl(xrtcdev->reg_base + RTC_INT_STS);
143 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_STS);
146 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_EN);
148 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_DIS);
156 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
161 writel((u32)alarm_time, (xrtcdev->reg_base + RTC_ALRM));
168 static void xlnx_init_rtc(struct xlnx_rtc_dev *xrtcdev)
173 rtc_ctrl = readl(xrtcdev->reg_base + RTC_CTRL);
175 writel(rtc_ctrl, xrtcdev->reg_base + RTC_CTRL);
180 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
182 unsigned int tick_mult = do_div(rtc_ppb, xrtcdev->freq);
186 calibval = readl(xrtcdev->reg_base + RTC_CALIB_RD);
203 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
205 unsigned int tick_mult = do_div(rtc_ppb, xrtcdev->freq);
243 writel(calibval, (xrtcdev->reg_base + RTC_CALIB_WR));
260 struct xlnx_rtc_dev *xrtcdev = (struct xlnx_rtc_dev *)id;
263 status = readl(xrtcdev->reg_base + RTC_INT_STS);
269 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_DIS);
272 rtc_update_irq(xrtcdev->rtc, 1, RTC_IRQF | RTC_AF);
279 struct xlnx_rtc_dev *xrtcdev;
282 xrtcdev = devm_kzalloc(&pdev->dev, sizeof(*xrtcdev), GFP_KERNEL);
283 if (!xrtcdev)
286 platform_set_drvdata(pdev, xrtcdev);
288 xrtcdev->rtc = devm_rtc_allocate_device(&pdev->dev);
289 if (IS_ERR(xrtcdev->rtc))
290 return PTR_ERR(xrtcdev->rtc);
292 xrtcdev->rtc->ops = &xlnx_rtc_ops;
293 xrtcdev->rtc->range_max = U32_MAX;
295 xrtcdev->reg_base = devm_platform_ioremap_resource(pdev, 0);
296 if (IS_ERR(xrtcdev->reg_base))
297 return PTR_ERR(xrtcdev->reg_base);
299 xrtcdev->alarm_irq = platform_get_irq_byname(pdev, "alarm");
300 if (xrtcdev->alarm_irq < 0)
301 return xrtcdev->alarm_irq;
302 ret = devm_request_irq(&pdev->dev, xrtcdev->alarm_irq,
304 dev_name(&pdev->dev), xrtcdev);
310 xrtcdev->sec_irq = platform_get_irq_byname(pdev, "sec");
311 if (xrtcdev->sec_irq < 0)
312 return xrtcdev->sec_irq;
313 ret = devm_request_irq(&pdev->dev, xrtcdev->sec_irq,
315 dev_name(&pdev->dev), xrtcdev);
322 xrtcdev->rtc_clk = devm_clk_get_optional(&pdev->dev, "rtc_clk");
323 if (IS_ERR(xrtcdev->rtc_clk)) {
324 if (PTR_ERR(xrtcdev->rtc_clk) != -EPROBE_DEFER)
327 xrtcdev->freq = clk_get_rate(xrtcdev->rtc_clk);
328 if (!xrtcdev->freq) {
330 &xrtcdev->freq);
332 xrtcdev->freq = RTC_CALIB_DEF;
334 ret = readl(xrtcdev->reg_base + RTC_CALIB_RD);
336 writel(xrtcdev->freq, (xrtcdev->reg_base + RTC_CALIB_WR));
338 xlnx_init_rtc(xrtcdev);
342 return devm_rtc_register_device(xrtcdev->rtc);
353 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
356 enable_irq_wake(xrtcdev->alarm_irq);
365 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);
368 disable_irq_wake(xrtcdev->alarm_irq);