summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJon Hunter <jon-hunter@ti.com>2013-03-01 11:22:48 -0600
committerGrant Likely <grant.likely@secretlab.ca>2013-03-06 09:12:26 +0800
commit8d4c277e185c31359cf70573d8b0351fb7dd0dfe (patch)
tree5cfaf76d93d54226979a751c4d232944d7c6b6db /drivers
parentede4d7a5b9835510fd1f724367f68d2fa4128453 (diff)
downloadop-kernel-dev-8d4c277e185c31359cf70573d8b0351fb7dd0dfe.zip
op-kernel-dev-8d4c277e185c31359cf70573d8b0351fb7dd0dfe.tar.gz
gpio/omap: warn if bank is not enabled on setting irq type
For OMAP devices, if a gpio is being used as an interrupt source but has not been requested by calling gpio_request(), a call to request_irq() may cause the kernel hang because the gpio bank may be disabled and hence the register access will fail. To prevent such hangs, test for this case and warn if this is detected. Signed-off-by: Jon Hunter <jon-hunter@ti.com> Reviewed-by: Felipe Balbi <balbi@ti.com> Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Acked-by: Kevin Hilman <khilman@linaro.org> Tested-by: Javier Martinez Canillas <javier@dowhile0.org> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpio/gpio-omap.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index c3598d1..0d30c7a 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -427,6 +427,9 @@ static int gpio_irq_type(struct irq_data *d, unsigned type)
int retval;
unsigned long flags;
+ if (WARN_ON(!bank->mod_usage))
+ return -EINVAL;
+
#ifdef CONFIG_ARCH_OMAP1
if (d->irq > IH_MPUIO_BASE)
gpio = OMAP_MPUIO(d->irq - IH_MPUIO_BASE);
OpenPOWER on IntegriCloud