Skip to content
  • David Brownell's avatar
    [ARM] 4739/1: at91sam9263: make gpio bank C and D irqs work · e83aff58
    David Brownell authored
    
    
    On the at91sam9263, IRQs for GPIO banks C and D don't currently work.
    This is because banks C, D, and E share one clock and toplevel IRQ, but
    the AT91 code setting up and handling GPIO IRQs expects no sharing.
    This patch:
    
     - Fixes GPIO IRQ setup and handling to cope with GPIO banks that are
       shared like on sam9263 chips, by setting up a list of those banks
       and making the IRQ dispatching logic scan that list.
    
     - Precomputes the address of each bank's registers, saving it with
       other per-bank data so that it no longer needs to be constantly
       recomputed during IRQs and other GPIO operations.  That shrinks
       hot-path code, while helping the GPIO bank irq updates.
    
     - Fixes a minor bug where IRQ_TYPE_NONE was wrongly rejected (it just
       means "use the default", which is "both edges" here).
    
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Acked-by: default avatarAndrew Victor <linux@maxim.org.za>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    e83aff58