Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1c08c9b authored by Lucas Stach's avatar Lucas Stach Committed by Daniel Lezcano
Browse files

clocksource/drivers/imx: Allow timer irq affinity change



Allow the timer core to change the smp affinity of the broadcast timer
irq by setting CLOCK_EVT_FEAT_DYNIRQ flag. For this to work the timer
core needs to be told about the used irq.

This reduces interrupt pressure and wakeups on CPU0 as well as vastly
reducing the number of timer broadcast IPIs.

Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent 31f79874
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -305,13 +305,14 @@ static int __init mxc_clockevent_init(struct imx_timer *imxtm)
	struct irqaction *act = &imxtm->act;
	struct irqaction *act = &imxtm->act;


	ced->name = "mxc_timer1";
	ced->name = "mxc_timer1";
	ced->features = CLOCK_EVT_FEAT_ONESHOT;
	ced->features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_DYNIRQ;
	ced->set_state_shutdown = mxc_shutdown;
	ced->set_state_shutdown = mxc_shutdown;
	ced->set_state_oneshot = mxc_set_oneshot;
	ced->set_state_oneshot = mxc_set_oneshot;
	ced->tick_resume = mxc_shutdown;
	ced->tick_resume = mxc_shutdown;
	ced->set_next_event = imxtm->gpt->set_next_event;
	ced->set_next_event = imxtm->gpt->set_next_event;
	ced->rating = 200;
	ced->rating = 200;
	ced->cpumask = cpumask_of(0);
	ced->cpumask = cpumask_of(0);
	ced->irq = imxtm->irq;
	clockevents_config_and_register(ced, clk_get_rate(imxtm->clk_per),
	clockevents_config_and_register(ced, clk_get_rate(imxtm->clk_per),
					0xff, 0xfffffffe);
					0xff, 0xfffffffe);