From: Tony Lindgren Date: Fri, 16 Jan 2015 22:50:50 +0000 (-0800) Subject: gpio: omap: Fix bad device access with setup_irq() X-Git-Tag: omap-for-v4.1/prcm-dts-mfd-syscon-fix~195^2~3 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d009c8c61f96b50c068c8122e929352c359f877;p=pandora-kernel.git gpio: omap: Fix bad device access with setup_irq() Similar to omap_gpio_irq_type() let's make sure that the GPIO is usable as an interrupt if the platform init code did not call gpio_request(). Otherwise we can get invalid device access after setup_irq(): WARNING: CPU: 0 PID: 1 at drivers/bus/omap_l3_noc.c:147 l3_interrupt_handler+0x214/0x340() 44000000.ocp:L3 Custom Error: MASTER MPU TARGET L4CFG (Idle): Data Access in Supervisor mode during Functional access ... [] (__irq_svc) from [] (_raw_spin_unlock_irqrestore+0x34/0x44) [] (_raw_spin_unlock_irqrestore) from [] (__setup_irq+0x244/0x530) [] (__setup_irq) from [] (setup_irq+0x40/0x8c) [] (setup_irq) from [] (omap_system_dma_probe+0x1d4/0x2b4) [] (omap_system_dma_probe) from [] (platform_drv_probe+0x44/0xa4) ... We can fix this the same way omap_gpio_irq_type() is handling it. Note that the long term solution is to change the gpio-omap driver to handle the banks as separate driver instances. This will allow us to rely on just runtime PM for tracking the bank specific state. Reported-by: Russell King Cc: Javier Martinez Canillas Cc: Kevin Hilman Cc: Santosh Shilimkar Tested-by: Felipe Balbi Signed-off-by: Tony Lindgren Signed-off-by: Linus Walleij --- Reading git-diff-tree failed