forked from luck/tmp_suning_uos_patched
Merge branch 'fortglx/4.12/time' of https://git.linaro.org/people/john.stultz/linux into timers/core
Merge timer updates from John Stultz: A preparatory patch series for correcting the clock event devices via NTP to avoid early timer expiry and reprogramming.
This commit is contained in:
commit
2886a73408
|
@ -230,7 +230,9 @@ static void __init bfin_gptmr0_clockevent_init(struct clock_event_device *evt)
|
|||
clock_tick = get_sclk();
|
||||
evt->mult = div_sc(clock_tick, NSEC_PER_SEC, evt->shift);
|
||||
evt->max_delta_ns = clockevent_delta2ns(-1, evt);
|
||||
evt->max_delta_ticks = (unsigned long)-1;
|
||||
evt->min_delta_ns = clockevent_delta2ns(100, evt);
|
||||
evt->min_delta_ticks = 100;
|
||||
|
||||
evt->cpumask = cpumask_of(0);
|
||||
|
||||
|
@ -344,7 +346,9 @@ void bfin_coretmr_clockevent_init(void)
|
|||
clock_tick = get_cclk() / TIME_SCALE;
|
||||
evt->mult = div_sc(clock_tick, NSEC_PER_SEC, evt->shift);
|
||||
evt->max_delta_ns = clockevent_delta2ns(-1, evt);
|
||||
evt->max_delta_ticks = (unsigned long)-1;
|
||||
evt->min_delta_ns = clockevent_delta2ns(100, evt);
|
||||
evt->min_delta_ticks = 100;
|
||||
|
||||
evt->cpumask = cpumask_of(cpu);
|
||||
|
||||
|
|
|
@ -234,7 +234,9 @@ void __init timer64_init(void)
|
|||
clockevents_calc_mult_shift(cd, c6x_core_freq / TIMER_DIVISOR, 5);
|
||||
|
||||
cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
|
||||
cd->max_delta_ticks = 0x7fffffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(250, cd);
|
||||
cd->min_delta_ticks = 250;
|
||||
|
||||
cd->cpumask = cpumask_of(smp_processor_id());
|
||||
|
||||
|
|
|
@ -199,7 +199,9 @@ void __init time_init_deferred(void)
|
|||
clockevents_calc_mult_shift(ce_dev, sleep_clk_freq, 4);
|
||||
|
||||
ce_dev->max_delta_ns = clockevent_delta2ns(0x7fffffff, ce_dev);
|
||||
ce_dev->max_delta_ticks = 0x7fffffff;
|
||||
ce_dev->min_delta_ns = clockevent_delta2ns(0xf, ce_dev);
|
||||
ce_dev->min_delta_ticks = 0xf;
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
setup_percpu_clockdev();
|
||||
|
|
|
@ -149,8 +149,10 @@ void hw_timer_init(irq_handler_t handler)
|
|||
cf_pit_clockevent.mult = div_sc(FREQ, NSEC_PER_SEC, 32);
|
||||
cf_pit_clockevent.max_delta_ns =
|
||||
clockevent_delta2ns(0xFFFF, &cf_pit_clockevent);
|
||||
cf_pit_clockevent.max_delta_ticks = 0xFFFF;
|
||||
cf_pit_clockevent.min_delta_ns =
|
||||
clockevent_delta2ns(0x3f, &cf_pit_clockevent);
|
||||
cf_pit_clockevent.min_delta_ticks = 0x3f;
|
||||
clockevents_register_device(&cf_pit_clockevent);
|
||||
|
||||
setup_irq(MCF_IRQ_PIT1, &pit_irq);
|
||||
|
|
|
@ -138,7 +138,9 @@ static int __init alchemy_time_init(unsigned int m2int)
|
|||
cd->shift = 32;
|
||||
cd->mult = div_sc(32768, NSEC_PER_SEC, cd->shift);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0xffffffff, cd);
|
||||
cd->min_delta_ns = clockevent_delta2ns(9, cd); /* ~0.28ms */
|
||||
cd->max_delta_ticks = 0xffffffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(9, cd);
|
||||
cd->min_delta_ticks = 9; /* ~0.28ms */
|
||||
clockevents_register_device(cd);
|
||||
setup_irq(m2int, &au1x_rtcmatch2_irqaction);
|
||||
|
||||
|
|
|
@ -145,7 +145,9 @@ void __init plat_time_init(void)
|
|||
|
||||
clockevent_set_clock(&jz4740_clockevent, clk_rate);
|
||||
jz4740_clockevent.min_delta_ns = clockevent_delta2ns(100, &jz4740_clockevent);
|
||||
jz4740_clockevent.min_delta_ticks = 100;
|
||||
jz4740_clockevent.max_delta_ns = clockevent_delta2ns(0xffff, &jz4740_clockevent);
|
||||
jz4740_clockevent.max_delta_ticks = 0xffff;
|
||||
jz4740_clockevent.cpumask = cpumask_of(0);
|
||||
|
||||
clockevents_register_device(&jz4740_clockevent);
|
||||
|
|
|
@ -123,7 +123,9 @@ void sb1480_clockevent_init(void)
|
|||
CLOCK_EVT_FEAT_ONESHOT;
|
||||
clockevent_set_clock(cd, V_SCD_TIMER_FREQ);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd);
|
||||
cd->max_delta_ticks = 0x7fffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(2, cd);
|
||||
cd->min_delta_ticks = 2;
|
||||
cd->rating = 200;
|
||||
cd->irq = irq;
|
||||
cd->cpumask = cpumask_of(cpu);
|
||||
|
|
|
@ -128,7 +128,9 @@ int __init ds1287_clockevent_init(int irq)
|
|||
cd->irq = irq;
|
||||
clockevent_set_clock(cd, 32768);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
|
||||
cd->max_delta_ticks = 0x7fffffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
|
||||
cd->min_delta_ticks = 0x300;
|
||||
cd->cpumask = cpumask_of(0);
|
||||
|
||||
clockevents_register_device(&ds1287_clockevent);
|
||||
|
|
|
@ -152,7 +152,9 @@ static int __init gt641xx_timer0_clockevent_init(void)
|
|||
cd->rating = 200 + gt641xx_base_clock / 10000000;
|
||||
clockevent_set_clock(cd, gt641xx_base_clock);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
|
||||
cd->max_delta_ticks = 0x7fffffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
|
||||
cd->min_delta_ticks = 0x300;
|
||||
cd->cpumask = cpumask_of(0);
|
||||
|
||||
clockevents_register_device(>641xx_timer0_clockevent);
|
||||
|
|
|
@ -123,7 +123,9 @@ void sb1250_clockevent_init(void)
|
|||
CLOCK_EVT_FEAT_ONESHOT;
|
||||
clockevent_set_clock(cd, V_SCD_TIMER_FREQ);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd);
|
||||
cd->max_delta_ticks = 0x7fffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(2, cd);
|
||||
cd->min_delta_ticks = 2;
|
||||
cd->rating = 200;
|
||||
cd->irq = irq;
|
||||
cd->cpumask = cpumask_of(cpu);
|
||||
|
|
|
@ -196,7 +196,9 @@ void __init txx9_clockevent_init(unsigned long baseaddr, int irq,
|
|||
clockevent_set_clock(cd, TIMER_CLK(imbusclk));
|
||||
cd->max_delta_ns =
|
||||
clockevent_delta2ns(0xffffffff >> (32 - TXX9_TIMER_BITS), cd);
|
||||
cd->max_delta_ticks = 0xffffffff >> (32 - TXX9_TIMER_BITS);
|
||||
cd->min_delta_ns = clockevent_delta2ns(0xf, cd);
|
||||
cd->min_delta_ticks = 0xf;
|
||||
cd->irq = irq;
|
||||
cd->cpumask = cpumask_of(0),
|
||||
clockevents_register_device(cd);
|
||||
|
|
|
@ -199,7 +199,9 @@ static void __init ls1x_time_init(void)
|
|||
|
||||
clockevent_set_clock(cd, mips_hpt_frequency);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0xffffff, cd);
|
||||
cd->max_delta_ticks = 0xffffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(0x000300, cd);
|
||||
cd->min_delta_ticks = 0x000300;
|
||||
cd->cpumask = cpumask_of(smp_processor_id());
|
||||
clockevents_register_device(cd);
|
||||
|
||||
|
|
|
@ -123,7 +123,9 @@ void __init setup_mfgpt0_timer(void)
|
|||
cd->cpumask = cpumask_of(cpu);
|
||||
clockevent_set_clock(cd, MFGPT_TICK_RATE);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0xffff, cd);
|
||||
cd->max_delta_ticks = 0xffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(0xf, cd);
|
||||
cd->min_delta_ticks = 0xf;
|
||||
|
||||
/* Enable MFGPT0 Comparator 2 Output to the Interrupt Mapper */
|
||||
_wrmsr(DIVIL_MSR_REG(MFGPT_IRQ), 0, 0x100);
|
||||
|
|
|
@ -241,7 +241,9 @@ void __init setup_hpet_timer(void)
|
|||
cd->cpumask = cpumask_of(cpu);
|
||||
clockevent_set_clock(cd, HPET_FREQ);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
|
||||
cd->max_delta_ticks = 0x7fffffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(HPET_MIN_PROG_DELTA, cd);
|
||||
cd->min_delta_ticks = HPET_MIN_PROG_DELTA;
|
||||
|
||||
clockevents_register_device(cd);
|
||||
setup_irq(HPET_T0_IRQ, &hpet_irq);
|
||||
|
|
|
@ -129,7 +129,9 @@ static int __init ralink_systick_init(struct device_node *np)
|
|||
systick.dev.name = np->name;
|
||||
clockevents_calc_mult_shift(&systick.dev, SYSTICK_FREQ, 60);
|
||||
systick.dev.max_delta_ns = clockevent_delta2ns(0x7fff, &systick.dev);
|
||||
systick.dev.max_delta_ticks = 0x7fff;
|
||||
systick.dev.min_delta_ns = clockevent_delta2ns(0x3, &systick.dev);
|
||||
systick.dev.min_delta_ticks = 0x3;
|
||||
systick.dev.irq = irq_of_parse_and_map(np, 0);
|
||||
if (!systick.dev.irq) {
|
||||
pr_err("%s: request_irq failed", np->name);
|
||||
|
|
|
@ -113,7 +113,9 @@ void hub_rt_clock_event_init(void)
|
|||
cd->features = CLOCK_EVT_FEAT_ONESHOT;
|
||||
clockevent_set_clock(cd, CYCLES_PER_SEC);
|
||||
cd->max_delta_ns = clockevent_delta2ns(0xfffffffffffff, cd);
|
||||
cd->max_delta_ticks = 0xfffffffffffff;
|
||||
cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
|
||||
cd->min_delta_ticks = 0x300;
|
||||
cd->rating = 200;
|
||||
cd->irq = irq;
|
||||
cd->cpumask = cpumask_of(cpu);
|
||||
|
|
|
@ -98,7 +98,9 @@ int __init init_clockevents(void)
|
|||
|
||||
/* Calculate the min / max delta */
|
||||
cd->max_delta_ns = clockevent_delta2ns(TMJCBR_MAX, cd);
|
||||
cd->max_delta_ticks = TMJCBR_MAX;
|
||||
cd->min_delta_ns = clockevent_delta2ns(100, cd);
|
||||
cd->min_delta_ticks = 100;
|
||||
|
||||
cd->rating = 200;
|
||||
cd->cpumask = cpumask_of(smp_processor_id());
|
||||
|
|
|
@ -995,8 +995,10 @@ static void __init init_decrementer_clockevent(void)
|
|||
|
||||
decrementer_clockevent.max_delta_ns =
|
||||
clockevent_delta2ns(decrementer_max, &decrementer_clockevent);
|
||||
decrementer_clockevent.max_delta_ticks = decrementer_max;
|
||||
decrementer_clockevent.min_delta_ns =
|
||||
clockevent_delta2ns(2, &decrementer_clockevent);
|
||||
decrementer_clockevent.min_delta_ticks = 2;
|
||||
|
||||
register_decrementer_clockevent(cpu);
|
||||
}
|
||||
|
|
|
@ -158,7 +158,9 @@ void init_cpu_timer(void)
|
|||
cd->mult = 16777;
|
||||
cd->shift = 12;
|
||||
cd->min_delta_ns = 1;
|
||||
cd->min_delta_ticks = 1;
|
||||
cd->max_delta_ns = LONG_MAX;
|
||||
cd->max_delta_ticks = ULONG_MAX;
|
||||
cd->rating = 400;
|
||||
cd->cpumask = cpumask_of(cpu);
|
||||
cd->set_next_event = s390_next_event;
|
||||
|
|
|
@ -81,8 +81,10 @@ void __init time_init(void)
|
|||
score_clockevent.shift);
|
||||
score_clockevent.max_delta_ns = clockevent_delta2ns((u32)~0,
|
||||
&score_clockevent);
|
||||
score_clockevent.max_delta_ticks = (u32)~0;
|
||||
score_clockevent.min_delta_ns = clockevent_delta2ns(50,
|
||||
&score_clockevent) + 1;
|
||||
score_clockevent.min_delta_ticks = 50;
|
||||
score_clockevent.cpumask = cpumask_of(0);
|
||||
clockevents_register_device(&score_clockevent);
|
||||
}
|
||||
|
|
|
@ -228,7 +228,9 @@ void register_percpu_ce(int cpu)
|
|||
ce->mult = div_sc(sparc_config.clock_rate, NSEC_PER_SEC,
|
||||
ce->shift);
|
||||
ce->max_delta_ns = clockevent_delta2ns(sparc_config.clock_rate, ce);
|
||||
ce->max_delta_ticks = (unsigned long)sparc_config.clock_rate;
|
||||
ce->min_delta_ns = clockevent_delta2ns(100, ce);
|
||||
ce->min_delta_ticks = 100;
|
||||
|
||||
clockevents_register_device(ce);
|
||||
}
|
||||
|
|
|
@ -796,8 +796,10 @@ void __init time_init(void)
|
|||
|
||||
sparc64_clockevent.max_delta_ns =
|
||||
clockevent_delta2ns(0x7fffffffffffffffUL, &sparc64_clockevent);
|
||||
sparc64_clockevent.max_delta_ticks = 0x7fffffffffffffffUL;
|
||||
sparc64_clockevent.min_delta_ns =
|
||||
clockevent_delta2ns(0xF, &sparc64_clockevent);
|
||||
sparc64_clockevent.min_delta_ticks = 0xF;
|
||||
|
||||
printk("clockevent: mult[%x] shift[%d]\n",
|
||||
sparc64_clockevent.mult, sparc64_clockevent.shift);
|
||||
|
|
|
@ -155,6 +155,8 @@ static DEFINE_PER_CPU(struct clock_event_device, tile_timer) = {
|
|||
.name = "tile timer",
|
||||
.features = CLOCK_EVT_FEAT_ONESHOT,
|
||||
.min_delta_ns = 1000,
|
||||
.min_delta_ticks = 1,
|
||||
.max_delta_ticks = MAX_TICK,
|
||||
.rating = 100,
|
||||
.irq = -1,
|
||||
.set_next_event = tile_timer_set_next_event,
|
||||
|
|
|
@ -65,7 +65,9 @@ static struct clock_event_device timer_clockevent = {
|
|||
.set_next_event = itimer_next_event,
|
||||
.shift = 0,
|
||||
.max_delta_ns = 0xffffffff,
|
||||
.min_delta_ns = TIMER_MIN_DELTA, //microsecond resolution should be enough for anyone, same as 640K RAM
|
||||
.max_delta_ticks = 0xffffffff,
|
||||
.min_delta_ns = TIMER_MIN_DELTA,
|
||||
.min_delta_ticks = TIMER_MIN_DELTA, // microsecond resolution should be enough for anyone, same as 640K RAM
|
||||
.irq = 0,
|
||||
.mult = 1,
|
||||
};
|
||||
|
|
|
@ -91,8 +91,10 @@ void __init time_init(void)
|
|||
|
||||
ckevt_puv3_osmr0.max_delta_ns =
|
||||
clockevent_delta2ns(0x7fffffff, &ckevt_puv3_osmr0);
|
||||
ckevt_puv3_osmr0.max_delta_ticks = 0x7fffffff;
|
||||
ckevt_puv3_osmr0.min_delta_ns =
|
||||
clockevent_delta2ns(MIN_OSCR_DELTA * 2, &ckevt_puv3_osmr0) + 1;
|
||||
ckevt_puv3_osmr0.min_delta_ticks = MIN_OSCR_DELTA * 2;
|
||||
ckevt_puv3_osmr0.cpumask = cpumask_of(0);
|
||||
|
||||
setup_irq(IRQ_TIMER0, &puv3_timer_irq);
|
||||
|
|
|
@ -731,8 +731,10 @@ static int __init calibrate_APIC_clock(void)
|
|||
TICK_NSEC, lapic_clockevent.shift);
|
||||
lapic_clockevent.max_delta_ns =
|
||||
clockevent_delta2ns(0x7FFFFF, &lapic_clockevent);
|
||||
lapic_clockevent.max_delta_ticks = 0x7FFFFF;
|
||||
lapic_clockevent.min_delta_ns =
|
||||
clockevent_delta2ns(0xF, &lapic_clockevent);
|
||||
lapic_clockevent.min_delta_ticks = 0xF;
|
||||
lapic_clockevent.features &= ~CLOCK_EVT_FEAT_DUMMY;
|
||||
return 0;
|
||||
}
|
||||
|
@ -778,8 +780,10 @@ static int __init calibrate_APIC_clock(void)
|
|||
lapic_clockevent.shift);
|
||||
lapic_clockevent.max_delta_ns =
|
||||
clockevent_delta2ns(0x7FFFFFFF, &lapic_clockevent);
|
||||
lapic_clockevent.max_delta_ticks = 0x7FFFFFFF;
|
||||
lapic_clockevent.min_delta_ns =
|
||||
clockevent_delta2ns(0xF, &lapic_clockevent);
|
||||
lapic_clockevent.min_delta_ticks = 0xF;
|
||||
|
||||
lapic_timer_frequency = (delta * APIC_DIVISOR) / LAPIC_CAL_LOOPS;
|
||||
|
||||
|
|
|
@ -994,7 +994,9 @@ static struct clock_event_device lguest_clockevent = {
|
|||
.mult = 1,
|
||||
.shift = 0,
|
||||
.min_delta_ns = LG_CLOCK_MIN_DELTA,
|
||||
.min_delta_ticks = LG_CLOCK_MIN_DELTA,
|
||||
.max_delta_ns = LG_CLOCK_MAX_DELTA,
|
||||
.max_delta_ticks = LG_CLOCK_MAX_DELTA,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -390,9 +390,11 @@ static __init int uv_rtc_setup_clock(void)
|
|||
|
||||
clock_event_device_uv.min_delta_ns = NSEC_PER_SEC /
|
||||
sn_rtc_cycles_per_second;
|
||||
clock_event_device_uv.min_delta_ticks = 1;
|
||||
|
||||
clock_event_device_uv.max_delta_ns = clocksource_uv.mask *
|
||||
(NSEC_PER_SEC / sn_rtc_cycles_per_second);
|
||||
clock_event_device_uv.max_delta_ticks = clocksource_uv.mask;
|
||||
|
||||
rc = schedule_on_each_cpu(uv_rtc_register_clockevents);
|
||||
if (rc) {
|
||||
|
|
|
@ -209,7 +209,9 @@ static const struct clock_event_device xen_timerop_clockevent = {
|
|||
.features = CLOCK_EVT_FEAT_ONESHOT,
|
||||
|
||||
.max_delta_ns = 0xffffffff,
|
||||
.max_delta_ticks = 0xffffffff,
|
||||
.min_delta_ns = TIMER_SLOP,
|
||||
.min_delta_ticks = TIMER_SLOP,
|
||||
|
||||
.mult = 1,
|
||||
.shift = 0,
|
||||
|
@ -268,7 +270,9 @@ static const struct clock_event_device xen_vcpuop_clockevent = {
|
|||
.features = CLOCK_EVT_FEAT_ONESHOT,
|
||||
|
||||
.max_delta_ns = 0xffffffff,
|
||||
.max_delta_ticks = 0xffffffff,
|
||||
.min_delta_ns = TIMER_SLOP,
|
||||
.min_delta_ticks = TIMER_SLOP,
|
||||
|
||||
.mult = 1,
|
||||
.shift = 0,
|
||||
|
|
|
@ -257,7 +257,9 @@ dw_apb_clockevent_init(int cpu, const char *name, unsigned rating,
|
|||
clockevents_calc_mult_shift(&dw_ced->ced, freq, APBT_MIN_PERIOD);
|
||||
dw_ced->ced.max_delta_ns = clockevent_delta2ns(0x7fffffff,
|
||||
&dw_ced->ced);
|
||||
dw_ced->ced.max_delta_ticks = 0x7fffffff;
|
||||
dw_ced->ced.min_delta_ns = clockevent_delta2ns(5000, &dw_ced->ced);
|
||||
dw_ced->ced.min_delta_ticks = 5000;
|
||||
dw_ced->ced.cpumask = cpumask_of(cpu);
|
||||
dw_ced->ced.features = CLOCK_EVT_FEAT_PERIODIC |
|
||||
CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_DYNIRQ;
|
||||
|
|
|
@ -114,7 +114,9 @@ static int arch_timer_starting_cpu(unsigned int cpu)
|
|||
|
||||
clk->mult = div_sc(hwtimer_freq, NSEC_PER_SEC, clk->shift);
|
||||
clk->max_delta_ns = clockevent_delta2ns(0x7fffffff, clk);
|
||||
clk->max_delta_ticks = 0x7fffffff;
|
||||
clk->min_delta_ns = clockevent_delta2ns(0xf, clk);
|
||||
clk->min_delta_ticks = 0xf;
|
||||
clk->cpumask = cpumask_of(cpu);
|
||||
|
||||
clockevents_register_device(clk);
|
||||
|
|
|
@ -51,7 +51,9 @@ static struct clock_event_device numachip2_clockevent = {
|
|||
.mult = 1,
|
||||
.shift = 0,
|
||||
.min_delta_ns = 1250,
|
||||
.min_delta_ticks = 1250,
|
||||
.max_delta_ns = LONG_MAX,
|
||||
.max_delta_ticks = LONG_MAX,
|
||||
};
|
||||
|
||||
static void numachip_timer_interrupt(void)
|
||||
|
|
|
@ -815,7 +815,9 @@ static int sh_cmt_register_clockevent(struct sh_cmt_channel *ch,
|
|||
ced->shift = 32;
|
||||
ced->mult = div_sc(ch->cmt->rate, NSEC_PER_SEC, ced->shift);
|
||||
ced->max_delta_ns = clockevent_delta2ns(ch->max_match_value, ced);
|
||||
ced->max_delta_ticks = ch->max_match_value;
|
||||
ced->min_delta_ns = clockevent_delta2ns(0x1f, ced);
|
||||
ced->min_delta_ticks = 0x1f;
|
||||
|
||||
dev_info(&ch->cmt->pdev->dev, "ch%u: used for clock events\n",
|
||||
ch->index);
|
||||
|
|
|
@ -192,7 +192,9 @@ static int sirfsoc_local_timer_starting_cpu(unsigned int cpu)
|
|||
ce->set_next_event = sirfsoc_timer_set_next_event;
|
||||
clockevents_calc_mult_shift(ce, atlas7_timer_rate, 60);
|
||||
ce->max_delta_ns = clockevent_delta2ns(-2, ce);
|
||||
ce->max_delta_ticks = (unsigned long)-2;
|
||||
ce->min_delta_ns = clockevent_delta2ns(2, ce);
|
||||
ce->min_delta_ticks = 2;
|
||||
ce->cpumask = cpumask_of(cpu);
|
||||
|
||||
action->dev_id = ce;
|
||||
|
|
Loading…
Reference in New Issue
Block a user