Lines Matching refs:tc
191 static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) in setup_clkevents() argument
194 struct clk *t2_clk = tc->clk[2]; in setup_clkevents()
195 int irq = tc->irq[2]; in setup_clkevents()
197 ret = clk_prepare_enable(tc->slow_clk); in setup_clkevents()
204 clk_disable_unprepare(tc->slow_clk); in setup_clkevents()
210 clkevt.regs = tc->regs; in setup_clkevents()
220 clk_disable_unprepare(tc->slow_clk); in setup_clkevents()
231 static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) in setup_clkevents() argument
239 static void __init tcb_setup_dual_chan(struct atmel_tc *tc, int mck_divisor_idx) in tcb_setup_dual_chan() argument
267 static void __init tcb_setup_single_chan(struct atmel_tc *tc, int mck_divisor_idx) in tcb_setup_single_chan() argument
287 struct atmel_tc *tc; in tcb_clksrc_init() local
295 tc = atmel_tc_alloc(CONFIG_ATMEL_TCB_CLKSRC_BLOCK); in tcb_clksrc_init()
296 if (!tc) { in tcb_clksrc_init()
300 tcaddr = tc->regs; in tcb_clksrc_init()
301 pdev = tc->pdev; in tcb_clksrc_init()
303 t0_clk = tc->clk[0]; in tcb_clksrc_init()
337 if (tc->tcb_config && tc->tcb_config->counter_width == 32) { in tcb_clksrc_init()
341 tcb_setup_single_chan(tc, best_divisor_idx); in tcb_clksrc_init()
346 ret = clk_prepare_enable(tc->clk[1]); in tcb_clksrc_init()
352 tcb_setup_dual_chan(tc, best_divisor_idx); in tcb_clksrc_init()
361 ret = setup_clkevents(tc, clk32k_divisor_idx); in tcb_clksrc_init()
371 if (!tc->tcb_config || tc->tcb_config->counter_width != 32) in tcb_clksrc_init()
372 clk_disable_unprepare(tc->clk[1]); in tcb_clksrc_init()
378 atmel_tc_free(tc); in tcb_clksrc_init()