• Linus Walleij's avatar
    ARM: 7635/1: versatile: fix the PCI IRQ regression · aae09660
    Linus Walleij authored
    commit e3e92a7b upstream.
    
    The PCI IRQs were regressing due to two things:
    
    - The PCI glue layer was using an hard-coded IRQ 27 offset.
      This caused the immediate regression.
    
    - The SIC IRQ mask was inverted (i.e. a bit was indeed set to
      one for each valid IRQ on the SIC, but accidentally inverted
      in the init call). This has been around forever, but we have
      been saved by some other forgiving code that would reserve
      IRQ descriptors in this range, as the versatile is
      non-sparse.
    
    When the IRQs were bumped up 32 steps so as to avoid using IRQ
    zero and avoid touching the 16 legacy IRQs, things broke.
    
    Introduce an explicit valid mask for the IRQs that are active
    on the PIC/SIC, and pass that. Use the BIT() macro from
    <linux/bitops.h> to make sure we hit the right bits, readily
    defined in <mach/platform.h>.
    Reported-by: default avatarTetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    aae09660
pci.c 8.48 KB