gpio/omap: optimise interrupt service routine

The OMAP GPIO interrupt service routine is checking each bit in the
GPIO interrupt status register to see which bits are set. It is not
efficient to check every bit especially if only a few bits are set.
Therefore, instead of checking every bit use the __ffs() function,
which returns the location of the first set bit, to find all the set
bits.

This optimisation was suggested-by and developed in collaboration
with Felipe Balbi.

Cc: Felipe Balbi <balbi@ti.com>

Signed-off-by: Jon Hunter <jon-hunter@ti.com>
gpio/omap: force restore if context loss is not detectable

When booting with device-tree the function pointer for detecting context
loss is not populated. Ideally, the pm_runtime framework should be
enhanced to allow a means for reporting context/state loss and we could
avoid populating such function pointers altogether. In the interim until
a generic non-device specific solution is in place, force a restore of
the gpio bank when enabling the gpio controller.

Adds a new device-tree property for the OMAP GPIO controller to indicate
if the GPIO controller is located in a power-domain that never loses
power and hence will always maintain its logic state.

Signed-off-by: Jon Hunter <jon-hunter@ti.com>
ARM: dts: OMAP2+: Identify GPIO banks that are always powered

Add the "ti,gpio-always-on" property to the appropriate GPIO banks to
indicate which banks are always powered and will never lose logic state.

Cc: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Jon Hunter <jon-hunter@ti.com>
Merge branch 'omap-dma-for-v3.10' into omap-daily-testing
Merge branch 'omap-dmtimer-for-v3.10' into omap-daily-testing
Merge branch 'omap-dt-for-v3.10-take2' into omap-daily-testing
Merge branch 'omap-gpio-for-v3.10' into omap-daily-testing
Merge branch 'omap-gpmc-for-v3.10' into omap-daily-testing
Merge branch 'omap-timer-for-v3.10' into omap-daily-testing