• Home
  • Raw
  • Download

Lines Matching refs:timer

70 	struct mchp_pit64b_timer	timer;  member
103 static inline void mchp_pit64b_reset(struct mchp_pit64b_timer *timer, in mchp_pit64b_reset() argument
111 writel_relaxed(MCHP_PIT64B_CR_SWRST, timer->base + MCHP_PIT64B_CR); in mchp_pit64b_reset()
112 writel_relaxed(mode | timer->mode, timer->base + MCHP_PIT64B_MR); in mchp_pit64b_reset()
113 writel_relaxed(high, timer->base + MCHP_PIT64B_MSB_PR); in mchp_pit64b_reset()
114 writel_relaxed(low, timer->base + MCHP_PIT64B_LSB_PR); in mchp_pit64b_reset()
115 writel_relaxed(irqs, timer->base + MCHP_PIT64B_IER); in mchp_pit64b_reset()
116 writel_relaxed(MCHP_PIT64B_CR_START, timer->base + MCHP_PIT64B_CR); in mchp_pit64b_reset()
131 struct mchp_pit64b_timer *timer = to_mchp_pit64b_timer(cedev); in mchp_pit64b_clkevt_shutdown() local
133 writel_relaxed(MCHP_PIT64B_CR_SWRST, timer->base + MCHP_PIT64B_CR); in mchp_pit64b_clkevt_shutdown()
140 struct mchp_pit64b_timer *timer = to_mchp_pit64b_timer(cedev); in mchp_pit64b_clkevt_set_periodic() local
142 mchp_pit64b_reset(timer, mchp_pit64b_ce_cycles, MCHP_PIT64B_MR_CONT, in mchp_pit64b_clkevt_set_periodic()
151 struct mchp_pit64b_timer *timer = to_mchp_pit64b_timer(cedev); in mchp_pit64b_clkevt_set_next_event() local
153 mchp_pit64b_reset(timer, evt, MCHP_PIT64B_MR_ONE_SHOT, in mchp_pit64b_clkevt_set_next_event()
161 struct mchp_pit64b_timer *timer = to_mchp_pit64b_timer(cedev); in mchp_pit64b_clkevt_suspend() local
163 writel_relaxed(MCHP_PIT64B_CR_SWRST, timer->base + MCHP_PIT64B_CR); in mchp_pit64b_clkevt_suspend()
164 if (timer->mode & MCHP_PIT64B_MR_SGCLK) in mchp_pit64b_clkevt_suspend()
165 clk_disable_unprepare(timer->gclk); in mchp_pit64b_clkevt_suspend()
166 clk_disable_unprepare(timer->pclk); in mchp_pit64b_clkevt_suspend()
171 struct mchp_pit64b_timer *timer = to_mchp_pit64b_timer(cedev); in mchp_pit64b_clkevt_resume() local
173 clk_prepare_enable(timer->pclk); in mchp_pit64b_clkevt_resume()
174 if (timer->mode & MCHP_PIT64B_MR_SGCLK) in mchp_pit64b_clkevt_resume()
175 clk_prepare_enable(timer->gclk); in mchp_pit64b_clkevt_resume()
183 readl_relaxed(irq_data->timer.base + MCHP_PIT64B_ISR); in mchp_pit64b_interrupt()
240 static int __init mchp_pit64b_init_mode(struct mchp_pit64b_timer *timer, in mchp_pit64b_init_mode() argument
247 pclk_rate = clk_get_rate(timer->pclk); in mchp_pit64b_init_mode()
251 timer->mode = 0; in mchp_pit64b_init_mode()
254 gclk_round = clk_round_rate(timer->gclk, max_rate); in mchp_pit64b_init_mode()
266 timer->mode |= MCHP_PIT64B_MR_SGCLK; in mchp_pit64b_init_mode()
267 clk_set_rate(timer->gclk, gclk_round); in mchp_pit64b_init_mode()
281 timer->mode |= MCHP_PIT64B_MR_SGCLK; in mchp_pit64b_init_mode()
282 clk_set_rate(timer->gclk, gclk_round); in mchp_pit64b_init_mode()
286 timer->mode |= MCHP_PIT64B_PRES_TO_MODE(best_pres); in mchp_pit64b_init_mode()
289 timer->mode & MCHP_PIT64B_MR_SGCLK ? "gclk" : "pclk", best_pres, in mchp_pit64b_init_mode()
290 timer->mode & MCHP_PIT64B_MR_SGCLK ? in mchp_pit64b_init_mode()
296 static int __init mchp_pit64b_init_clksrc(struct mchp_pit64b_timer *timer, in mchp_pit64b_init_clksrc() argument
301 mchp_pit64b_reset(timer, ULLONG_MAX, MCHP_PIT64B_MR_CONT, 0); in mchp_pit64b_init_clksrc()
303 mchp_pit64b_cs_base = timer->base; in mchp_pit64b_init_clksrc()
305 ret = clocksource_mmio_init(timer->base, MCHP_PIT64B_NAME, clk_rate, in mchp_pit64b_init_clksrc()
312 timer->base + MCHP_PIT64B_CR); in mchp_pit64b_init_clksrc()
322 static int __init mchp_pit64b_init_clkevt(struct mchp_pit64b_timer *timer, in mchp_pit64b_init_clkevt() argument
334 ce->timer.base = timer->base; in mchp_pit64b_init_clkevt()
335 ce->timer.pclk = timer->pclk; in mchp_pit64b_init_clkevt()
336 ce->timer.gclk = timer->gclk; in mchp_pit64b_init_clkevt()
337 ce->timer.mode = timer->mode; in mchp_pit64b_init_clkevt()
366 struct mchp_pit64b_timer timer; in mchp_pit64b_dt_init_timer() local
372 timer.pclk = of_clk_get_by_name(node, "pclk"); in mchp_pit64b_dt_init_timer()
373 if (IS_ERR(timer.pclk)) in mchp_pit64b_dt_init_timer()
374 return PTR_ERR(timer.pclk); in mchp_pit64b_dt_init_timer()
376 timer.gclk = of_clk_get_by_name(node, "gclk"); in mchp_pit64b_dt_init_timer()
377 if (IS_ERR(timer.gclk)) in mchp_pit64b_dt_init_timer()
378 return PTR_ERR(timer.gclk); in mchp_pit64b_dt_init_timer()
380 timer.base = of_iomap(node, 0); in mchp_pit64b_dt_init_timer()
381 if (!timer.base) in mchp_pit64b_dt_init_timer()
393 ret = mchp_pit64b_init_mode(&timer, freq); in mchp_pit64b_dt_init_timer()
397 ret = clk_prepare_enable(timer.pclk); in mchp_pit64b_dt_init_timer()
401 if (timer.mode & MCHP_PIT64B_MR_SGCLK) { in mchp_pit64b_dt_init_timer()
402 ret = clk_prepare_enable(timer.gclk); in mchp_pit64b_dt_init_timer()
406 clk_rate = clk_get_rate(timer.gclk); in mchp_pit64b_dt_init_timer()
408 clk_rate = clk_get_rate(timer.pclk); in mchp_pit64b_dt_init_timer()
410 clk_rate = clk_rate / (MCHP_PIT64B_MODE_TO_PRES(timer.mode) + 1); in mchp_pit64b_dt_init_timer()
413 ret = mchp_pit64b_init_clkevt(&timer, clk_rate, irq); in mchp_pit64b_dt_init_timer()
415 ret = mchp_pit64b_init_clksrc(&timer, clk_rate); in mchp_pit64b_dt_init_timer()
423 if (timer.mode & MCHP_PIT64B_MR_SGCLK) in mchp_pit64b_dt_init_timer()
424 clk_disable_unprepare(timer.gclk); in mchp_pit64b_dt_init_timer()
426 clk_disable_unprepare(timer.pclk); in mchp_pit64b_dt_init_timer()
430 iounmap(timer.base); in mchp_pit64b_dt_init_timer()