davinci: gpio bugfixes
authorDavid Brownell <dbrownell@users.sourceforge.net>
Sun, 7 Dec 2008 19:46:23 +0000 (11:46 -0800)
committerKevin Hilman <khilman@deeprootsystems.com>
Mon, 27 Apr 2009 16:49:43 +0000 (09:49 -0700)
commit474dad54baee8f8abe63ac334357a37021147701
tree1d8f57b71f2e36ac9442b9d6fad685234f1ae853
parenta4768d2275cb7c0d2a665b9ad4de07834be0714b
davinci: gpio bugfixes

Update the DaVinci GPIO code to work better on non-dm6446 parts,
notably the dm355:

 - Only handle the number of GPIOs the chip actually has.  So
   for example on dm6467, GPIO-42 is the last GPIO, and trying
   to use GPIO-43 now fails cleanly; or GPIO-72 on dm6446.

 - Enable GPIO interrupts on each 16-bit GPIO-irq bank ...
   previously, only the first five were enabled, so GPIO-80
   and above (on dm355) wouldn't trigger IRQs.

 - Use the right IRQ for each GPIO bank.  The wrong values were
   used for dm355 chips, so GPIO IRQs got routed incorrectly.

 - Handle up to four pairs of 16-bit GPIO banks ... previously
   only three were handled, so accessing GPIO-96 and up (e.g. on
   dm355) would oops.

 - Update several comments that were dm6446-specific.

Verified by receiving GPIO-1 (dm9000) and GPIO-5 (msp430) IRQs
on the DM355 EVM.

One thing this doesn't do is handle the way some of the GPIO
numbers on dm6467 are reserved but aren't valid as GPIOs.  Some
bitmap logic could fix that if needed.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
arch/arm/mach-davinci/gpio.c
arch/arm/mach-davinci/include/mach/gpio.h