• Home
  • Raw
  • Download

Lines Matching refs:rtc

61 	struct rtc_device *rtc;  member
68 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); in lpc32xx_rtc_read_time() local
70 elapsed_sec = rtc_readl(rtc, LPC32XX_RTC_UCOUNT); in lpc32xx_rtc_read_time()
78 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); in lpc32xx_rtc_set_mmss() local
81 spin_lock_irq(&rtc->lock); in lpc32xx_rtc_set_mmss()
84 tmp = rtc_readl(rtc, LPC32XX_RTC_CTRL); in lpc32xx_rtc_set_mmss()
85 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp | LPC32XX_RTC_CTRL_CNTR_DIS); in lpc32xx_rtc_set_mmss()
86 rtc_writel(rtc, LPC32XX_RTC_UCOUNT, secs); in lpc32xx_rtc_set_mmss()
87 rtc_writel(rtc, LPC32XX_RTC_DCOUNT, 0xFFFFFFFF - secs); in lpc32xx_rtc_set_mmss()
88 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp &= ~LPC32XX_RTC_CTRL_CNTR_DIS); in lpc32xx_rtc_set_mmss()
90 spin_unlock_irq(&rtc->lock); in lpc32xx_rtc_set_mmss()
98 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); in lpc32xx_rtc_read_alarm() local
100 rtc_time_to_tm(rtc_readl(rtc, LPC32XX_RTC_MATCH0), &wkalrm->time); in lpc32xx_rtc_read_alarm()
101 wkalrm->enabled = rtc->alarm_enabled; in lpc32xx_rtc_read_alarm()
102 wkalrm->pending = !!(rtc_readl(rtc, LPC32XX_RTC_INTSTAT) & in lpc32xx_rtc_read_alarm()
111 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); in lpc32xx_rtc_set_alarm() local
122 spin_lock_irq(&rtc->lock); in lpc32xx_rtc_set_alarm()
125 tmp = rtc_readl(rtc, LPC32XX_RTC_CTRL); in lpc32xx_rtc_set_alarm()
126 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp & ~LPC32XX_RTC_CTRL_MATCH0); in lpc32xx_rtc_set_alarm()
128 rtc_writel(rtc, LPC32XX_RTC_MATCH0, alarmsecs); in lpc32xx_rtc_set_alarm()
130 rtc->alarm_enabled = wkalrm->enabled; in lpc32xx_rtc_set_alarm()
132 rtc_writel(rtc, LPC32XX_RTC_INTSTAT, in lpc32xx_rtc_set_alarm()
134 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp | in lpc32xx_rtc_set_alarm()
138 spin_unlock_irq(&rtc->lock); in lpc32xx_rtc_set_alarm()
146 struct lpc32xx_rtc *rtc = dev_get_drvdata(dev); in lpc32xx_rtc_alarm_irq_enable() local
149 spin_lock_irq(&rtc->lock); in lpc32xx_rtc_alarm_irq_enable()
150 tmp = rtc_readl(rtc, LPC32XX_RTC_CTRL); in lpc32xx_rtc_alarm_irq_enable()
153 rtc->alarm_enabled = 1; in lpc32xx_rtc_alarm_irq_enable()
156 rtc->alarm_enabled = 0; in lpc32xx_rtc_alarm_irq_enable()
160 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp); in lpc32xx_rtc_alarm_irq_enable()
161 spin_unlock_irq(&rtc->lock); in lpc32xx_rtc_alarm_irq_enable()
168 struct lpc32xx_rtc *rtc = dev; in lpc32xx_rtc_alarm_interrupt() local
170 spin_lock(&rtc->lock); in lpc32xx_rtc_alarm_interrupt()
173 rtc_writel(rtc, LPC32XX_RTC_CTRL, in lpc32xx_rtc_alarm_interrupt()
174 rtc_readl(rtc, LPC32XX_RTC_CTRL) & in lpc32xx_rtc_alarm_interrupt()
176 rtc->alarm_enabled = 0; in lpc32xx_rtc_alarm_interrupt()
182 rtc_writel(rtc, LPC32XX_RTC_MATCH0, 0xFFFFFFFF); in lpc32xx_rtc_alarm_interrupt()
183 rtc_writel(rtc, LPC32XX_RTC_INTSTAT, LPC32XX_RTC_INTSTAT_MATCH0); in lpc32xx_rtc_alarm_interrupt()
185 spin_unlock(&rtc->lock); in lpc32xx_rtc_alarm_interrupt()
187 rtc_update_irq(rtc->rtc, 1, RTC_IRQF | RTC_AF); in lpc32xx_rtc_alarm_interrupt()
203 struct lpc32xx_rtc *rtc; in lpc32xx_rtc_probe() local
220 rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL); in lpc32xx_rtc_probe()
221 if (unlikely(!rtc)) { in lpc32xx_rtc_probe()
225 rtc->irq = rtcirq; in lpc32xx_rtc_probe()
235 rtc->rtc_base = devm_ioremap(&pdev->dev, res->start, size); in lpc32xx_rtc_probe()
236 if (!rtc->rtc_base) { in lpc32xx_rtc_probe()
241 spin_lock_init(&rtc->lock); in lpc32xx_rtc_probe()
248 tmp = rtc_readl(rtc, LPC32XX_RTC_CTRL); in lpc32xx_rtc_probe()
249 if (rtc_readl(rtc, LPC32XX_RTC_KEY) != LPC32XX_RTC_KEY_ONSW_LOADVAL) { in lpc32xx_rtc_probe()
257 rtc_writel(rtc, LPC32XX_RTC_CTRL, tmp); in lpc32xx_rtc_probe()
260 rtc_writel(rtc, LPC32XX_RTC_MATCH0, 0xFFFFFFFF); in lpc32xx_rtc_probe()
261 rtc_writel(rtc, LPC32XX_RTC_INTSTAT, in lpc32xx_rtc_probe()
267 rtc_writel(rtc, LPC32XX_RTC_KEY, in lpc32xx_rtc_probe()
270 rtc_writel(rtc, LPC32XX_RTC_CTRL, in lpc32xx_rtc_probe()
274 platform_set_drvdata(pdev, rtc); in lpc32xx_rtc_probe()
276 rtc->rtc = devm_rtc_device_register(&pdev->dev, RTC_NAME, in lpc32xx_rtc_probe()
278 if (IS_ERR(rtc->rtc)) { in lpc32xx_rtc_probe()
281 return PTR_ERR(rtc->rtc); in lpc32xx_rtc_probe()
288 if (rtc->irq >= 0) { in lpc32xx_rtc_probe()
289 if (devm_request_irq(&pdev->dev, rtc->irq, in lpc32xx_rtc_probe()
291 0, pdev->name, rtc) < 0) { in lpc32xx_rtc_probe()
293 rtc->irq = -1; in lpc32xx_rtc_probe()
304 struct lpc32xx_rtc *rtc = platform_get_drvdata(pdev); in lpc32xx_rtc_remove() local
306 if (rtc->irq >= 0) in lpc32xx_rtc_remove()
318 struct lpc32xx_rtc *rtc = platform_get_drvdata(pdev); in lpc32xx_rtc_suspend() local
320 if (rtc->irq >= 0) { in lpc32xx_rtc_suspend()
322 enable_irq_wake(rtc->irq); in lpc32xx_rtc_suspend()
324 disable_irq_wake(rtc->irq); in lpc32xx_rtc_suspend()
333 struct lpc32xx_rtc *rtc = platform_get_drvdata(pdev); in lpc32xx_rtc_resume() local
335 if (rtc->irq >= 0 && device_may_wakeup(&pdev->dev)) in lpc32xx_rtc_resume()
336 disable_irq_wake(rtc->irq); in lpc32xx_rtc_resume()
345 struct lpc32xx_rtc *rtc = platform_get_drvdata(pdev); in lpc32xx_rtc_freeze() local
347 spin_lock_irq(&rtc->lock); in lpc32xx_rtc_freeze()
349 rtc_writel(rtc, LPC32XX_RTC_CTRL, in lpc32xx_rtc_freeze()
350 rtc_readl(rtc, LPC32XX_RTC_CTRL) & in lpc32xx_rtc_freeze()
353 spin_unlock_irq(&rtc->lock); in lpc32xx_rtc_freeze()
361 struct lpc32xx_rtc *rtc = platform_get_drvdata(pdev); in lpc32xx_rtc_thaw() local
363 if (rtc->alarm_enabled) { in lpc32xx_rtc_thaw()
364 spin_lock_irq(&rtc->lock); in lpc32xx_rtc_thaw()
366 rtc_writel(rtc, LPC32XX_RTC_CTRL, in lpc32xx_rtc_thaw()
367 rtc_readl(rtc, LPC32XX_RTC_CTRL) | in lpc32xx_rtc_thaw()
370 spin_unlock_irq(&rtc->lock); in lpc32xx_rtc_thaw()