Lines Matching refs:t

55 	struct dmtimer_systimer t;  member
61 struct dmtimer_systimer t; member
66 static bool dmtimer_systimer_revision1(struct dmtimer_systimer *t) in dmtimer_systimer_revision1() argument
68 u32 tidr = readl_relaxed(t->base); in dmtimer_systimer_revision1()
73 static void dmtimer_systimer_enable(struct dmtimer_systimer *t) in dmtimer_systimer_enable() argument
77 if (dmtimer_systimer_revision1(t)) in dmtimer_systimer_enable()
82 writel_relaxed(val, t->base + t->sysc); in dmtimer_systimer_enable()
85 static void dmtimer_systimer_disable(struct dmtimer_systimer *t) in dmtimer_systimer_disable() argument
87 if (!dmtimer_systimer_revision1(t)) in dmtimer_systimer_disable()
90 writel_relaxed(DMTIMER_TYPE1_DISABLE, t->base + t->sysc); in dmtimer_systimer_disable()
93 static int __init dmtimer_systimer_type1_reset(struct dmtimer_systimer *t) in dmtimer_systimer_type1_reset() argument
95 void __iomem *syss = t->base + OMAP_TIMER_V1_SYS_STAT_OFFSET; in dmtimer_systimer_type1_reset()
99 dmtimer_systimer_enable(t); in dmtimer_systimer_type1_reset()
100 writel_relaxed(BIT(1) | BIT(2), t->base + t->ifctrl); in dmtimer_systimer_type1_reset()
108 static int __init dmtimer_systimer_type2_reset(struct dmtimer_systimer *t) in dmtimer_systimer_type2_reset() argument
110 void __iomem *sysc = t->base + t->sysc; in dmtimer_systimer_type2_reset()
113 dmtimer_systimer_enable(t); in dmtimer_systimer_type2_reset()
122 static int __init dmtimer_systimer_reset(struct dmtimer_systimer *t) in dmtimer_systimer_reset() argument
126 if (dmtimer_systimer_revision1(t)) in dmtimer_systimer_reset()
127 ret = dmtimer_systimer_type1_reset(t); in dmtimer_systimer_reset()
129 ret = dmtimer_systimer_type2_reset(t); in dmtimer_systimer_reset()
325 static int __init dmtimer_systimer_init_clock(struct dmtimer_systimer *t, in dmtimer_systimer_init_clock() argument
354 t->ick = clock; in dmtimer_systimer_init_clock()
356 t->fck = clock; in dmtimer_systimer_init_clock()
364 struct dmtimer_systimer *t) in dmtimer_systimer_setup() argument
373 t->base = of_iomap(np, 0); in dmtimer_systimer_setup()
374 if (!t->base) in dmtimer_systimer_setup()
387 error = dmtimer_systimer_init_clock(t, np->parent, "fck", &rate); in dmtimer_systimer_setup()
391 t->rate = rate; in dmtimer_systimer_setup()
393 error = dmtimer_systimer_init_clock(t, np->parent, "ick", &rate); in dmtimer_systimer_setup()
397 if (dmtimer_systimer_revision1(t)) { in dmtimer_systimer_setup()
398 t->irq_stat = OMAP_TIMER_V1_STAT_OFFSET; in dmtimer_systimer_setup()
399 t->irq_ena = OMAP_TIMER_V1_INT_EN_OFFSET; in dmtimer_systimer_setup()
400 t->pend = _OMAP_TIMER_WRITE_PEND_OFFSET; in dmtimer_systimer_setup()
403 t->irq_stat = OMAP_TIMER_V2_IRQSTATUS; in dmtimer_systimer_setup()
404 t->irq_ena = OMAP_TIMER_V2_IRQENABLE_SET; in dmtimer_systimer_setup()
406 t->pend = regbase + _OMAP_TIMER_WRITE_PEND_OFFSET; in dmtimer_systimer_setup()
409 t->sysc = OMAP_TIMER_OCP_CFG_OFFSET; in dmtimer_systimer_setup()
410 t->load = regbase + _OMAP_TIMER_LOAD_OFFSET; in dmtimer_systimer_setup()
411 t->counter = regbase + _OMAP_TIMER_COUNTER_OFFSET; in dmtimer_systimer_setup()
412 t->ctrl = regbase + _OMAP_TIMER_CTRL_OFFSET; in dmtimer_systimer_setup()
413 t->wakeup = regbase + _OMAP_TIMER_WAKEUP_EN_OFFSET; in dmtimer_systimer_setup()
414 t->ifctrl = regbase + _OMAP_TIMER_IF_CTRL_OFFSET; in dmtimer_systimer_setup()
416 dmtimer_systimer_reset(t); in dmtimer_systimer_setup()
417 dmtimer_systimer_enable(t); in dmtimer_systimer_setup()
418 pr_debug("dmtimer rev %08x sysc %08x\n", readl_relaxed(t->base), in dmtimer_systimer_setup()
419 readl_relaxed(t->base + t->sysc)); in dmtimer_systimer_setup()
424 iounmap(t->base); in dmtimer_systimer_setup()
439 struct dmtimer_systimer *t = &clkevt->t; in dmtimer_clockevent_interrupt() local
441 writel_relaxed(OMAP_TIMER_INT_OVERFLOW, t->base + t->irq_stat); in dmtimer_clockevent_interrupt()
451 struct dmtimer_systimer *t = &clkevt->t; in dmtimer_set_next_event() local
452 void __iomem *pend = t->base + t->pend; in dmtimer_set_next_event()
456 writel_relaxed(0xffffffff - cycles, t->base + t->counter); in dmtimer_set_next_event()
460 writel_relaxed(OMAP_TIMER_CTRL_ST, t->base + t->ctrl); in dmtimer_set_next_event()
468 struct dmtimer_systimer *t = &clkevt->t; in dmtimer_clockevent_shutdown() local
469 void __iomem *ctrl = t->base + t->ctrl; in dmtimer_clockevent_shutdown()
479 udelay(3500000 / t->rate + 1); in dmtimer_clockevent_shutdown()
481 writel_relaxed(OMAP_TIMER_INT_OVERFLOW, t->base + t->irq_stat); in dmtimer_clockevent_shutdown()
489 struct dmtimer_systimer *t = &clkevt->t; in dmtimer_set_periodic() local
490 void __iomem *pend = t->base + t->pend; in dmtimer_set_periodic()
497 writel_relaxed(clkevt->period, t->base + t->load); in dmtimer_set_periodic()
501 writel_relaxed(clkevt->period, t->base + t->counter); in dmtimer_set_periodic()
506 t->base + t->ctrl); in dmtimer_set_periodic()
514 struct dmtimer_systimer *t = &clkevt->t; in omap_clockevent_idle() local
516 dmtimer_systimer_disable(t); in omap_clockevent_idle()
517 clk_disable(t->fck); in omap_clockevent_idle()
523 struct dmtimer_systimer *t = &clkevt->t; in omap_clockevent_unidle() local
526 error = clk_enable(t->fck); in omap_clockevent_unidle()
530 dmtimer_systimer_enable(t); in omap_clockevent_unidle()
531 writel_relaxed(OMAP_TIMER_INT_OVERFLOW, t->base + t->irq_ena); in omap_clockevent_unidle()
532 writel_relaxed(OMAP_TIMER_INT_OVERFLOW, t->base + t->wakeup); in omap_clockevent_unidle()
543 struct dmtimer_systimer *t; in dmtimer_clkevt_init_common() local
546 t = &clkevt->t; in dmtimer_clkevt_init_common()
567 error = dmtimer_systimer_setup(np, &clkevt->t); in dmtimer_clkevt_init_common()
571 clkevt->period = 0xffffffff - DIV_ROUND_CLOSEST(t->rate, HZ); in dmtimer_clkevt_init_common()
578 writel_relaxed(OMAP_TIMER_CTRL_POSTED, t->base + t->ifctrl); in dmtimer_clkevt_init_common()
585 writel_relaxed(OMAP_TIMER_INT_OVERFLOW, t->base + t->irq_ena); in dmtimer_clkevt_init_common()
586 writel_relaxed(OMAP_TIMER_INT_OVERFLOW, t->base + t->wakeup); in dmtimer_clkevt_init_common()
590 "always-on " : "", t->rate, np->parent); in dmtimer_clkevt_init_common()
595 iounmap(t->base); in dmtimer_clkevt_init_common()
617 clockevents_config_and_register(&clkevt->dev, clkevt->t.rate, in dmtimer_clockevent_init()
666 struct dmtimer_systimer *t = &clkevt->t; in omap_dmtimer_starting_cpu() local
668 clockevents_config_and_register(dev, t->rate, 3, ULONG_MAX); in omap_dmtimer_starting_cpu()
677 struct dmtimer_systimer *t = &clkevt->t; in dmtimer_percpu_timer_startup() local
679 if (t->sysc) { in dmtimer_percpu_timer_startup()
717 struct dmtimer_systimer *t = &clksrc->t; in dmtimer_clocksource_read_cycles() local
719 return (u64)readl_relaxed(t->base + t->counter); in dmtimer_clocksource_read_cycles()
732 struct dmtimer_systimer *t = &clksrc->t; in dmtimer_clocksource_suspend() local
734 clksrc->loadval = readl_relaxed(t->base + t->counter); in dmtimer_clocksource_suspend()
735 dmtimer_systimer_disable(t); in dmtimer_clocksource_suspend()
736 clk_disable(t->fck); in dmtimer_clocksource_suspend()
742 struct dmtimer_systimer *t = &clksrc->t; in dmtimer_clocksource_resume() local
745 error = clk_enable(t->fck); in dmtimer_clocksource_resume()
749 dmtimer_systimer_enable(t); in dmtimer_clocksource_resume()
750 writel_relaxed(clksrc->loadval, t->base + t->counter); in dmtimer_clocksource_resume()
752 t->base + t->ctrl); in dmtimer_clocksource_resume()
758 struct dmtimer_systimer *t; in dmtimer_clocksource_init() local
767 t = &clksrc->t; in dmtimer_clocksource_init()
769 error = dmtimer_systimer_setup(np, t); in dmtimer_clocksource_init()
785 writel_relaxed(0, t->base + t->counter); in dmtimer_clocksource_init()
787 t->base + t->ctrl); in dmtimer_clocksource_init()
794 dmtimer_sched_clock_counter = t->base + t->counter; in dmtimer_clocksource_init()
795 sched_clock_register(dmtimer_read_sched_clock, 32, t->rate); in dmtimer_clocksource_init()
798 if (clocksource_register_hz(dev, t->rate)) in dmtimer_clocksource_init()