Lines Matching refs:timer
125 int omap_dm_timer_get_irq(struct omap_dm_timer *timer);
129 int omap_dm_timer_trigger(struct omap_dm_timer *timer);
255 static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg, in __omap_dm_timer_read() argument
259 while (readl_relaxed(timer->pend) & (reg >> WPSHIFT)) in __omap_dm_timer_read()
262 return readl_relaxed(timer->func_base + (reg & 0xff)); in __omap_dm_timer_read()
265 static inline void __omap_dm_timer_write(struct omap_dm_timer *timer, in __omap_dm_timer_write() argument
269 while (readl_relaxed(timer->pend) & (reg >> WPSHIFT)) in __omap_dm_timer_write()
272 writel_relaxed(val, timer->func_base + (reg & 0xff)); in __omap_dm_timer_write()
275 static inline void __omap_dm_timer_init_regs(struct omap_dm_timer *timer) in __omap_dm_timer_init_regs() argument
280 tidr = readl_relaxed(timer->io_base); in __omap_dm_timer_init_regs()
282 timer->revision = 1; in __omap_dm_timer_init_regs()
283 timer->irq_stat = timer->io_base + OMAP_TIMER_V1_STAT_OFFSET; in __omap_dm_timer_init_regs()
284 timer->irq_ena = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; in __omap_dm_timer_init_regs()
285 timer->irq_dis = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET; in __omap_dm_timer_init_regs()
286 timer->pend = timer->io_base + _OMAP_TIMER_WRITE_PEND_OFFSET; in __omap_dm_timer_init_regs()
287 timer->func_base = timer->io_base; in __omap_dm_timer_init_regs()
289 timer->revision = 2; in __omap_dm_timer_init_regs()
290 timer->irq_stat = timer->io_base + OMAP_TIMER_V2_IRQSTATUS; in __omap_dm_timer_init_regs()
291 timer->irq_ena = timer->io_base + OMAP_TIMER_V2_IRQENABLE_SET; in __omap_dm_timer_init_regs()
292 timer->irq_dis = timer->io_base + OMAP_TIMER_V2_IRQENABLE_CLR; in __omap_dm_timer_init_regs()
293 timer->pend = timer->io_base + in __omap_dm_timer_init_regs()
296 timer->func_base = timer->io_base + OMAP_TIMER_V2_FUNC_OFFSET; in __omap_dm_timer_init_regs()
310 static inline void __omap_dm_timer_enable_posted(struct omap_dm_timer *timer) in __omap_dm_timer_enable_posted() argument
312 if (timer->posted) in __omap_dm_timer_enable_posted()
315 if (timer->errata & OMAP_TIMER_ERRATA_I103_I767) { in __omap_dm_timer_enable_posted()
316 timer->posted = OMAP_TIMER_NONPOSTED; in __omap_dm_timer_enable_posted()
317 __omap_dm_timer_write(timer, OMAP_TIMER_IF_CTRL_REG, 0, 0); in __omap_dm_timer_enable_posted()
321 __omap_dm_timer_write(timer, OMAP_TIMER_IF_CTRL_REG, in __omap_dm_timer_enable_posted()
323 timer->context.tsicr = OMAP_TIMER_CTRL_POSTED; in __omap_dm_timer_enable_posted()
324 timer->posted = OMAP_TIMER_POSTED; in __omap_dm_timer_enable_posted()
337 static inline void __omap_dm_timer_override_errata(struct omap_dm_timer *timer, in __omap_dm_timer_override_errata() argument
340 timer->errata &= ~errata; in __omap_dm_timer_override_errata()
343 static inline void __omap_dm_timer_stop(struct omap_dm_timer *timer, in __omap_dm_timer_stop() argument
348 l = __omap_dm_timer_read(timer, OMAP_TIMER_CTRL_REG, posted); in __omap_dm_timer_stop()
351 __omap_dm_timer_write(timer, OMAP_TIMER_CTRL_REG, l, posted); in __omap_dm_timer_stop()
354 __omap_dm_timer_read(timer, OMAP_TIMER_CTRL_REG, posted); in __omap_dm_timer_stop()
364 writel_relaxed(OMAP_TIMER_INT_OVERFLOW, timer->irq_stat); in __omap_dm_timer_stop()
367 static inline void __omap_dm_timer_load_start(struct omap_dm_timer *timer, in __omap_dm_timer_load_start() argument
371 __omap_dm_timer_write(timer, OMAP_TIMER_COUNTER_REG, load, posted); in __omap_dm_timer_load_start()
372 __omap_dm_timer_write(timer, OMAP_TIMER_CTRL_REG, ctrl, posted); in __omap_dm_timer_load_start()
375 static inline void __omap_dm_timer_int_enable(struct omap_dm_timer *timer, in __omap_dm_timer_int_enable() argument
378 writel_relaxed(value, timer->irq_ena); in __omap_dm_timer_int_enable()
379 __omap_dm_timer_write(timer, OMAP_TIMER_WAKEUP_EN_REG, value, 0); in __omap_dm_timer_int_enable()
383 __omap_dm_timer_read_counter(struct omap_dm_timer *timer, int posted) in __omap_dm_timer_read_counter() argument
385 return __omap_dm_timer_read(timer, OMAP_TIMER_COUNTER_REG, posted); in __omap_dm_timer_read_counter()
388 static inline void __omap_dm_timer_write_status(struct omap_dm_timer *timer, in __omap_dm_timer_write_status() argument
391 writel_relaxed(value, timer->irq_stat); in __omap_dm_timer_write_status()