Lines Matching refs:rtc

62 	struct rtc_device	*rtc;  member
72 struct rtc_at32ap700x *rtc = dev_get_drvdata(dev); in at32_rtc_readtime() local
75 now = rtc_readl(rtc, VAL); in at32_rtc_readtime()
83 struct rtc_at32ap700x *rtc = dev_get_drvdata(dev); in at32_rtc_settime() local
89 rtc_writel(rtc, VAL, now); in at32_rtc_settime()
96 struct rtc_at32ap700x *rtc = dev_get_drvdata(dev); in at32_rtc_readalarm() local
98 spin_lock_irq(&rtc->lock); in at32_rtc_readalarm()
99 rtc_time_to_tm(rtc->alarm_time, &alrm->time); in at32_rtc_readalarm()
100 alrm->enabled = rtc_readl(rtc, IMR) & RTC_BIT(IMR_TOPI) ? 1 : 0; in at32_rtc_readalarm()
101 alrm->pending = rtc_readl(rtc, ISR) & RTC_BIT(ISR_TOPI) ? 1 : 0; in at32_rtc_readalarm()
102 spin_unlock_irq(&rtc->lock); in at32_rtc_readalarm()
109 struct rtc_at32ap700x *rtc = dev_get_drvdata(dev); in at32_rtc_setalarm() local
114 rtc_unix_time = rtc_readl(rtc, VAL); in at32_rtc_setalarm()
123 spin_lock_irq(&rtc->lock); in at32_rtc_setalarm()
124 rtc->alarm_time = alarm_unix_time; in at32_rtc_setalarm()
125 rtc_writel(rtc, TOP, rtc->alarm_time); in at32_rtc_setalarm()
127 rtc_writel(rtc, CTRL, rtc_readl(rtc, CTRL) in at32_rtc_setalarm()
130 rtc_writel(rtc, CTRL, rtc_readl(rtc, CTRL) in at32_rtc_setalarm()
132 spin_unlock_irq(&rtc->lock); in at32_rtc_setalarm()
139 struct rtc_at32ap700x *rtc = dev_get_drvdata(dev); in at32_rtc_alarm_irq_enable() local
142 spin_lock_irq(&rtc->lock); in at32_rtc_alarm_irq_enable()
145 if (rtc_readl(rtc, VAL) > rtc->alarm_time) { in at32_rtc_alarm_irq_enable()
149 rtc_writel(rtc, CTRL, rtc_readl(rtc, CTRL) in at32_rtc_alarm_irq_enable()
151 rtc_writel(rtc, ICR, RTC_BIT(ICR_TOPI)); in at32_rtc_alarm_irq_enable()
152 rtc_writel(rtc, IER, RTC_BIT(IER_TOPI)); in at32_rtc_alarm_irq_enable()
154 rtc_writel(rtc, CTRL, rtc_readl(rtc, CTRL) in at32_rtc_alarm_irq_enable()
156 rtc_writel(rtc, IDR, RTC_BIT(IDR_TOPI)); in at32_rtc_alarm_irq_enable()
157 rtc_writel(rtc, ICR, RTC_BIT(ICR_TOPI)); in at32_rtc_alarm_irq_enable()
160 spin_unlock_irq(&rtc->lock); in at32_rtc_alarm_irq_enable()
167 struct rtc_at32ap700x *rtc = (struct rtc_at32ap700x *)dev_id; in at32_rtc_interrupt() local
168 unsigned long isr = rtc_readl(rtc, ISR); in at32_rtc_interrupt()
172 spin_lock(&rtc->lock); in at32_rtc_interrupt()
175 rtc_writel(rtc, ICR, RTC_BIT(ICR_TOPI)); in at32_rtc_interrupt()
176 rtc_writel(rtc, IDR, RTC_BIT(IDR_TOPI)); in at32_rtc_interrupt()
177 rtc_writel(rtc, CTRL, rtc_readl(rtc, CTRL) in at32_rtc_interrupt()
179 rtc_writel(rtc, VAL, rtc->alarm_time); in at32_rtc_interrupt()
181 rtc_update_irq(rtc->rtc, 1, events); in at32_rtc_interrupt()
185 spin_unlock(&rtc->lock); in at32_rtc_interrupt()
201 struct rtc_at32ap700x *rtc; in at32_rtc_probe() local
205 rtc = devm_kzalloc(&pdev->dev, sizeof(struct rtc_at32ap700x), in at32_rtc_probe()
207 if (!rtc) in at32_rtc_probe()
222 rtc->irq = irq; in at32_rtc_probe()
223 rtc->regs = devm_ioremap(&pdev->dev, regs->start, resource_size(regs)); in at32_rtc_probe()
224 if (!rtc->regs) { in at32_rtc_probe()
228 spin_lock_init(&rtc->lock); in at32_rtc_probe()
236 if (!(rtc_readl(rtc, CTRL) & RTC_BIT(CTRL_EN))) { in at32_rtc_probe()
237 rtc_writel(rtc, CTRL, RTC_BIT(CTRL_PCLR)); in at32_rtc_probe()
238 rtc_writel(rtc, IDR, RTC_BIT(IDR_TOPI)); in at32_rtc_probe()
239 rtc_writel(rtc, CTRL, RTC_BF(CTRL_PSEL, 0xe) in at32_rtc_probe()
244 "rtc", rtc); in at32_rtc_probe()
250 platform_set_drvdata(pdev, rtc); in at32_rtc_probe()
252 rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, in at32_rtc_probe()
254 if (IS_ERR(rtc->rtc)) { in at32_rtc_probe()
256 return PTR_ERR(rtc->rtc); in at32_rtc_probe()
262 (unsigned long)rtc->regs, rtc->irq); in at32_rtc_probe()