clocksource: Add clockevent support to NPS400 driver
authorNoam Camus <noamca@mellanox.com>
Thu, 17 Nov 2016 07:12:43 +0000 (09:12 +0200)
committerVineet Gupta <vgupta@synopsys.com>
Wed, 30 Nov 2016 19:54:25 +0000 (11:54 -0800)
commit60263dcd821b9558ea08b112d9d31ffbe3ac643f
treef77ab6f38364a802f839b6ec310bbafd4837df3b
parent0465fb495f9c9698de08ff103905008e5f38e8f1
clocksource: Add clockevent support to NPS400 driver

Till now we used clockevent from generic ARC driver.
This was enough as long as we worked with simple multicore SoC.
When we are working with multithread SoC each HW thread can be
scheduled to receive timer interrupt using timer mask register.
This patch will provide a way to control clock events per HW thread.

The design idea is that for each core there is dedicated register
(TSI) serving all 16 HW threads.
The register is a bitmask with one bit for each HW thread.
When HW thread wants that next expiration of timer interrupt will
hit it then the proper bit should be set in this dedicated register.
When timer expires all HW threads within this core which their bit
is set at the TSI register will be interrupted.

Driver can be used from device tree by:
compatible = "ezchip,nps400-timer0" <-- for clocksource
compatible = "ezchip,nps400-timer1" <-- for clockevent

Note that name convention for timer0/timer1 was taken from legacy
ARC design. This design is our base before adding HW threads.
For backward compatibility we keep "ezchip,nps400-timer" for clocksource

Signed-off-by: Noam Camus <noamca@mellanox.com>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Documentation/devicetree/bindings/timer/ezchip,nps400-timer0.txt [new file with mode: 0644]
Documentation/devicetree/bindings/timer/ezchip,nps400-timer1.txt [moved from Documentation/devicetree/bindings/timer/ezchip,nps400-timer.txt with 52% similarity]
drivers/clocksource/timer-nps.c