Lines Matching refs:xrtcdev

54 	struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev);  in xlnx_rtc_set_time()  local
68 xrtcdev->calibval &= RTC_CALIB_MASK; in xlnx_rtc_set_time()
69 writel(xrtcdev->calibval, (xrtcdev->reg_base + RTC_CALIB_WR)); in xlnx_rtc_set_time()
71 writel(new_time, xrtcdev->reg_base + RTC_SET_TM_WR); in xlnx_rtc_set_time()
81 writel(RTC_INT_SEC, xrtcdev->reg_base + RTC_INT_STS); in xlnx_rtc_set_time()
90 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev); in xlnx_rtc_read_time() local
92 status = readl(xrtcdev->reg_base + RTC_INT_STS); in xlnx_rtc_read_time()
99 read_time = readl(xrtcdev->reg_base + RTC_CUR_TM); in xlnx_rtc_read_time()
108 read_time = readl(xrtcdev->reg_base + RTC_SET_TM_RD) - 1; in xlnx_rtc_read_time()
117 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev); in xlnx_rtc_read_alarm() local
119 rtc_time64_to_tm(readl(xrtcdev->reg_base + RTC_ALRM), &alrm->time); in xlnx_rtc_read_alarm()
120 alrm->enabled = readl(xrtcdev->reg_base + RTC_INT_MASK) & RTC_INT_ALRM; in xlnx_rtc_read_alarm()
127 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev); in xlnx_rtc_alarm_irq_enable() local
135 status = readl(xrtcdev->reg_base + RTC_INT_STS); in xlnx_rtc_alarm_irq_enable()
143 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_STS); in xlnx_rtc_alarm_irq_enable()
146 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_EN); in xlnx_rtc_alarm_irq_enable()
148 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_DIS); in xlnx_rtc_alarm_irq_enable()
156 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev); in xlnx_rtc_set_alarm() local
161 writel((u32)alarm_time, (xrtcdev->reg_base + RTC_ALRM)); in xlnx_rtc_set_alarm()
168 static void xlnx_init_rtc(struct xlnx_rtc_dev *xrtcdev) in xlnx_init_rtc() argument
173 rtc_ctrl = readl(xrtcdev->reg_base + RTC_CTRL); in xlnx_init_rtc()
175 writel(rtc_ctrl, xrtcdev->reg_base + RTC_CTRL); in xlnx_init_rtc()
183 xrtcdev->calibval &= RTC_CALIB_MASK; in xlnx_init_rtc()
184 writel(xrtcdev->calibval, (xrtcdev->reg_base + RTC_CALIB_WR)); in xlnx_init_rtc()
197 struct xlnx_rtc_dev *xrtcdev = (struct xlnx_rtc_dev *)id; in xlnx_rtc_interrupt() local
200 status = readl(xrtcdev->reg_base + RTC_INT_STS); in xlnx_rtc_interrupt()
206 writel(RTC_INT_ALRM, xrtcdev->reg_base + RTC_INT_DIS); in xlnx_rtc_interrupt()
209 rtc_update_irq(xrtcdev->rtc, 1, RTC_IRQF | RTC_AF); in xlnx_rtc_interrupt()
216 struct xlnx_rtc_dev *xrtcdev; in xlnx_rtc_probe() local
219 xrtcdev = devm_kzalloc(&pdev->dev, sizeof(*xrtcdev), GFP_KERNEL); in xlnx_rtc_probe()
220 if (!xrtcdev) in xlnx_rtc_probe()
223 platform_set_drvdata(pdev, xrtcdev); in xlnx_rtc_probe()
225 xrtcdev->rtc = devm_rtc_allocate_device(&pdev->dev); in xlnx_rtc_probe()
226 if (IS_ERR(xrtcdev->rtc)) in xlnx_rtc_probe()
227 return PTR_ERR(xrtcdev->rtc); in xlnx_rtc_probe()
229 xrtcdev->rtc->ops = &xlnx_rtc_ops; in xlnx_rtc_probe()
230 xrtcdev->rtc->range_max = U32_MAX; in xlnx_rtc_probe()
232 xrtcdev->reg_base = devm_platform_ioremap_resource(pdev, 0); in xlnx_rtc_probe()
233 if (IS_ERR(xrtcdev->reg_base)) in xlnx_rtc_probe()
234 return PTR_ERR(xrtcdev->reg_base); in xlnx_rtc_probe()
236 xrtcdev->alarm_irq = platform_get_irq_byname(pdev, "alarm"); in xlnx_rtc_probe()
237 if (xrtcdev->alarm_irq < 0) in xlnx_rtc_probe()
238 return xrtcdev->alarm_irq; in xlnx_rtc_probe()
239 ret = devm_request_irq(&pdev->dev, xrtcdev->alarm_irq, in xlnx_rtc_probe()
241 dev_name(&pdev->dev), xrtcdev); in xlnx_rtc_probe()
247 xrtcdev->sec_irq = platform_get_irq_byname(pdev, "sec"); in xlnx_rtc_probe()
248 if (xrtcdev->sec_irq < 0) in xlnx_rtc_probe()
249 return xrtcdev->sec_irq; in xlnx_rtc_probe()
250 ret = devm_request_irq(&pdev->dev, xrtcdev->sec_irq, in xlnx_rtc_probe()
252 dev_name(&pdev->dev), xrtcdev); in xlnx_rtc_probe()
259 &xrtcdev->calibval); in xlnx_rtc_probe()
261 xrtcdev->calibval = RTC_CALIB_DEF; in xlnx_rtc_probe()
263 xlnx_init_rtc(xrtcdev); in xlnx_rtc_probe()
267 return devm_rtc_register_device(xrtcdev->rtc); in xlnx_rtc_probe()
280 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev); in xlnx_rtc_suspend() local
283 enable_irq_wake(xrtcdev->alarm_irq); in xlnx_rtc_suspend()
292 struct xlnx_rtc_dev *xrtcdev = dev_get_drvdata(dev); in xlnx_rtc_resume() local
295 disable_irq_wake(xrtcdev->alarm_irq); in xlnx_rtc_resume()