static bool_t virt_cs_init(struct clocksource_t * cs) { u64_t rate = arm64_timer_frequecy(); cs->mult = clocksource_hz2mult(rate, cs->shift); arm64_timer_start(); return TRUE; }
static bool_t ce_init(struct clockevent_t * ce) { struct clockevent_pdata_t * pdat = (struct clockevent_pdata_t *)ce->priv; clockevent_calc_mult_shift(ce, arm64_timer_frequecy(), 10); ce->min_delta_ns = clockevent_delta2ns(ce, 0x1); ce->max_delta_ns = clockevent_delta2ns(ce, 0xffffffff); if(!request_irq(pdat->irq, ce_interrupt, IRQ_TYPE_NONE, ce)) return FALSE; arm64_timer_interrupt_disable(); return TRUE; }