Lines Matching refs:tc
181 static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) in setup_clkevents() argument
184 struct clk *t2_clk = tc->clk[2]; in setup_clkevents()
185 int irq = tc->irq[2]; in setup_clkevents()
193 clkevt.regs = tc->regs; in setup_clkevents()
213 static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) in setup_clkevents() argument
221 static void __init tcb_setup_dual_chan(struct atmel_tc *tc, int mck_divisor_idx) in tcb_setup_dual_chan() argument
249 static void __init tcb_setup_single_chan(struct atmel_tc *tc, int mck_divisor_idx) in tcb_setup_single_chan() argument
269 struct atmel_tc *tc; in tcb_clksrc_init() local
277 tc = atmel_tc_alloc(CONFIG_ATMEL_TCB_CLKSRC_BLOCK); in tcb_clksrc_init()
278 if (!tc) { in tcb_clksrc_init()
282 tcaddr = tc->regs; in tcb_clksrc_init()
283 pdev = tc->pdev; in tcb_clksrc_init()
285 t0_clk = tc->clk[0]; in tcb_clksrc_init()
319 if (tc->tcb_config && tc->tcb_config->counter_width == 32) { in tcb_clksrc_init()
323 tcb_setup_single_chan(tc, best_divisor_idx); in tcb_clksrc_init()
328 ret = clk_prepare_enable(tc->clk[1]); in tcb_clksrc_init()
334 tcb_setup_dual_chan(tc, best_divisor_idx); in tcb_clksrc_init()
343 ret = setup_clkevents(tc, clk32k_divisor_idx); in tcb_clksrc_init()
353 if (!tc->tcb_config || tc->tcb_config->counter_width != 32) in tcb_clksrc_init()
354 clk_disable_unprepare(tc->clk[1]); in tcb_clksrc_init()
360 atmel_tc_free(tc); in tcb_clksrc_init()