Skip to content
  • Thomas Petazzoni's avatar
    arm: mvebu: use global interrupts for GPIOs on Armada XP · 5f79c651
    Thomas Petazzoni authored
    
    
    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: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
    5f79c651