Lines Matching refs:tc
243 static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) in setup_clkevents() argument
246 struct clk *t2_clk = tc->clk[2]; in setup_clkevents()
247 int irq = tc->irq[2]; in setup_clkevents()
249 ret = clk_prepare_enable(tc->slow_clk); in setup_clkevents()
256 clk_disable_unprepare(tc->slow_clk); in setup_clkevents()
262 clkevt.regs = tc->regs; in setup_clkevents()
272 clk_disable_unprepare(tc->slow_clk); in setup_clkevents()
283 static int __init setup_clkevents(struct atmel_tc *tc, int clk32k_divisor_idx) in setup_clkevents() argument
291 static void __init tcb_setup_dual_chan(struct atmel_tc *tc, int mck_divisor_idx) in tcb_setup_dual_chan() argument
319 static void __init tcb_setup_single_chan(struct atmel_tc *tc, int mck_divisor_idx) in tcb_setup_single_chan() argument
339 struct atmel_tc *tc; in tcb_clksrc_init() local
347 tc = atmel_tc_alloc(CONFIG_ATMEL_TCB_CLKSRC_BLOCK); in tcb_clksrc_init()
348 if (!tc) { in tcb_clksrc_init()
352 tcaddr = tc->regs; in tcb_clksrc_init()
353 pdev = tc->pdev; in tcb_clksrc_init()
355 t0_clk = tc->clk[0]; in tcb_clksrc_init()
389 if (tc->tcb_config && tc->tcb_config->counter_width == 32) { in tcb_clksrc_init()
393 tcb_setup_single_chan(tc, best_divisor_idx); in tcb_clksrc_init()
398 ret = clk_prepare_enable(tc->clk[1]); in tcb_clksrc_init()
404 tcb_setup_dual_chan(tc, best_divisor_idx); in tcb_clksrc_init()
413 ret = setup_clkevents(tc, clk32k_divisor_idx); in tcb_clksrc_init()
423 if (!tc->tcb_config || tc->tcb_config->counter_width != 32) in tcb_clksrc_init()
424 clk_disable_unprepare(tc->clk[1]); in tcb_clksrc_init()
430 atmel_tc_free(tc); in tcb_clksrc_init()