]> git.baikalelectronics.ru Git - kernel.git/commit
arm: mvebu: use global interrupts for GPIOs on Armada XP
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 7 Jan 2013 16:26:58 +0000 (17:26 +0100)
committerJason Cooper <jason@lakedaemon.net>
Tue, 8 Jan 2013 12:35:46 +0000 (12:35 +0000)
commit548e624cd7b1c9222239960f9b21b357782e8a64
tree3ded2af3bfb93c58c10e5422f5b89273a36b82aa
parent1f97c0b8c698a49371047bd898070c3e46c5004e
arm: mvebu: use global interrupts for GPIOs on Armada XP

The Armada XP GPIO controller has two ways of notifying interrupts:
using global interrupts or using per-CPU interrupts. In an attempt to
use the best available features, the 'marvell,armadaxp-gpio'
compatible string selects a variant of the gpio-mvebu driver that
makes use of the per-CPU interrupts.

Unfortunately, this doesn't work properly in a SMP context, because we
fall into cases where the GPIO interrupt is enabled on CPU X at the
GPIO controller level, but on CPU Y at the interrupt controller
level. It is not yet clear how to fix that easily.

So for 3.8, our approach is to switch to global interrupts for GPIOs,
so that we do not fall into this per-CPU interrupts problem.

This patch therefore fixes GPIO interrupts on Armada XP
platforms. Without this patch, GPIO interrupts simply do not work
reliably, because their proper operation depends on which CPU the code
requesting the interrupt is running.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/boot/dts/armada-xp-mv78230.dtsi
arch/arm/boot/dts/armada-xp-mv78260.dtsi
arch/arm/boot/dts/armada-xp-mv78460.dtsi