static void __init kona_timer_init(struct device_node *node) { kona_timers_init(node); kona_timer_clockevents_init(); setup_irq(timers.tmr_irq, &kona_timer_irq); kona_timer_set_next_event((arch_timer_rate / HZ), NULL); }
static int __init kona_timer_init(struct device_node *node) { u32 freq; struct clk *external_clk; external_clk = of_clk_get_by_name(node, NULL); if (!IS_ERR(external_clk)) { arch_timer_rate = clk_get_rate(external_clk); clk_prepare_enable(external_clk); } else if (!of_property_read_u32(node, "clock-frequency", &freq)) { arch_timer_rate = freq; } else { pr_err("Kona Timer v1 unable to determine clock-frequency"); return -EINVAL; } /* Setup IRQ numbers */ timers.tmr_irq = irq_of_parse_and_map(node, 0); /* Setup IO addresses */ timers.tmr_regs = of_iomap(node, 0); kona_timer_disable_and_clear(timers.tmr_regs); kona_timer_clockevents_init(); setup_irq(timers.tmr_irq, &kona_timer_irq); kona_timer_set_next_event((arch_timer_rate / HZ), NULL); return 0; }