int arm_board_timer_init(u32 usecs) { u32 val, irq; u64 counter_mult, counter_shift, counter_mask; counter_mask = 0xFFFFFFFFULL; counter_shift = 20; counter_mult = ((u64)1000000) << counter_shift; counter_mult += (((u64)1000) >> 1); counter_mult = arm_udiv64(counter_mult, ((u64)1000)); irq = IRQ_V2M_TIMER0; val = arm_readl((void *)V2M_SYSCTL) | SCCTRL_TIMEREN0SEL_TIMCLK; arm_writel(val, (void *)V2M_SYSCTL); return sp804_init(usecs, V2M_TIMER0, irq, counter_mask, counter_mult, counter_shift); }
long dhry_iter_per_sec(TimeStamp UserTime, int Number_Of_Runs) { return arm_udiv64(((TimeStamp)Number_Of_Runs * (TimeStamp)1000000), UserTime); }
void generic_timer_change_period(u32 usec) { timer_period_ticks = (arm_udiv64(timer_freq, 1000000) * usec); write_cntv_tval(timer_period_ticks); }