arm: mvebu: Use local interrupt only for the timer 0
authorGregory CLEMENT <gregory.clement@free-electrons.com>
Wed, 20 Mar 2013 15:09:35 +0000 (16:09 +0100)
committerJason Cooper <jason@lakedaemon.net>
Thu, 28 Mar 2013 16:45:42 +0000 (16:45 +0000)
commit7f23f62fc31c5c97947414c0937a72e08a947a41
treec39b9b00e05f95cdd00f2fe87bb27400613f61e4
parent2992714d431976c4b154875bd18ba61bf4df3b93
arm: mvebu: Use local interrupt only for the timer 0

The commit 3a6f08a37 "arm: mvebu: Add support for local interrupt",
managed the 28th first interrupts as local interrupt to match the
hardware specification. Among these interrupts there are the Gigabits
Ethernet ones used by the mvneta driver. Unfortunately the state of
the percpu_irq API prevents the driver to use it.

Indeed the interrupts have to be freed when the .stop() function is
called. As the free_percpu_irq() function don't disable the interrupt
line, we have to do it on each CPU before calling this. The function
disable_percpu_irq() only disable the percpu on the current CPU and
there is no function which allows to disable a percpu irq on a given
CPU. Waiting for the extension of the percpu_irq API, this fix allows
to use again the mvneta driver.

Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/mach-mvebu/irq-armada-370-xp.c