static __init void omap_init_mpu_timer(void) { set_cyc2ns_scale(MPU_TICKS_PER_SEC / 1000); omap_timer.offset = omap_mpu_timer_gettimeoffset; setup_irq(INT_TIMER1, &omap_mpu_timer1_irq); setup_irq(INT_TIMER2, &omap_mpu_timer_irq); omap_mpu_timer_start(0, 0xffffffff); omap_mpu_timer_start(1, MPU_TIMER_TICK_PERIOD); }
static __init void omap_init_mpu_timer(unsigned long rate) { setup_irq(INT_TIMER1, &omap_mpu_timer1_irq); omap_mpu_timer_start(0, (rate / HZ) - 1, 1); clockevent_mpu_timer1.cpumask = cpumask_of(0); clockevents_config_and_register(&clockevent_mpu_timer1, rate, 1, -1); }
static void __init omap_init_clocksource(unsigned long rate) { omap_mpu_timer_regs_t __iomem *timer = omap_mpu_timer_base(1); static char err[] __initdata = KERN_ERR "%s: can't register clocksource!\n"; omap_mpu_timer_start(1, ~0, 1); init_sched_clock(&cd, mpu_update_sched_clock, 32, rate); if (clocksource_mmio_init(&timer->read_tim, "mpu_timer2", rate, 300, 32, clocksource_mmio_readl_down)) printk(err, "mpu_timer2"); }
static void __init omap_init_clocksource(unsigned long rate) { static char err[] __initdata = KERN_ERR "%s: can't register clocksource!\n"; clocksource_mpu.mult = clocksource_khz2mult(rate/1000, clocksource_mpu.shift); setup_irq(INT_TIMER2, &omap_mpu_timer2_irq); omap_mpu_timer_start(1, ~0, 1); if (clocksource_register(&clocksource_mpu)) printk(err, clocksource_mpu.name); }
static __init void omap_init_mpu_timer(unsigned long rate) { setup_irq(INT_TIMER1, &omap_mpu_timer1_irq); omap_mpu_timer_start(0, (rate / HZ) - 1, 1); clockevent_mpu_timer1.mult = div_sc(rate, NSEC_PER_SEC, clockevent_mpu_timer1.shift); clockevent_mpu_timer1.max_delta_ns = clockevent_delta2ns(-1, &clockevent_mpu_timer1); clockevent_mpu_timer1.min_delta_ns = clockevent_delta2ns(1, &clockevent_mpu_timer1); clockevent_mpu_timer1.cpumask = cpumask_of(0); clockevents_register_device(&clockevent_mpu_timer1); }
/* * --------------------------------------------------------------------------- * MPU timer 1 ... count down to zero, interrupt, reload * --------------------------------------------------------------------------- */ static int omap_mpu_set_next_event(unsigned long cycles, struct clock_event_device *evt) { omap_mpu_timer_start(0, cycles, 0); return 0; }