clocksource: rockchip: add dynamic irq flag to the timer
authorHuang, Tao <huangtao@rock-chips.com>
Wed, 18 May 2016 10:22:31 +0000 (18:22 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Thu, 19 May 2016 10:29:58 +0000 (18:29 +0800)
The rockchip timer is broadcast timer. Add CLOCK_EVT_FEAT_DYNIRQ
flag and set cpumask to all cpu to save power by avoid unnecessary
wakeups and IPIs.

Change-Id: Ie257972a4a42f6807aed22df695d8b3a4d715045
Signed-off-by: Huang, Tao <huangtao@rock-chips.com>
drivers/clocksource/rockchip_timer.c

index b93fed6533c6f00683f91f45e36e4fdf1e7e0495..f3dfb1a1a61079d655ec06eb751f3dba636ee766 100644 (file)
@@ -150,12 +150,13 @@ static void __init rk_timer_init(struct device_node *np)
        }
 
        ce->name = TIMER_NAME;
-       ce->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
+       ce->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |
+                      CLOCK_EVT_FEAT_DYNIRQ;
        ce->set_next_event = rk_timer_set_next_event;
        ce->set_state_shutdown = rk_timer_shutdown;
        ce->set_state_periodic = rk_timer_set_periodic;
        ce->irq = irq;
-       ce->cpumask = cpumask_of(0);
+       ce->cpumask = cpu_all_mask;
        ce->rating = 250;
 
        ret = request_irq(irq, rk_timer_interrupt, IRQF_TIMER, TIMER_NAME, ce);