aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2008-02-26 14:10:50 -0500
committerTony Lindgren <tony@atomide.com>2008-03-05 03:23:19 -0500
commit8ba55c5c139f9be26b87d3aab9998f54d8d3057a (patch)
tree305c108c17900332bcffe78b34c1b618680ab12e
parentb8488fbe6d2f32ff4ad2f8f348a50e42389fc727 (diff)
ARM: OMAP: fix false lockdep warnings
Remove false lockdep warnings about lock recursion when declaring IRQs as being wake-capable, by marking putting GPIO irq_desc locks into their own class. (Thanks to Peter Zijlstra for helping track down such a small fix to this problem.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
-rw-r--r--arch/arm/plat-omap/gpio.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 56f4d1394d56..9030495509f8 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -1277,6 +1277,11 @@ static struct clk *gpio_fclks[OMAP34XX_NR_GPIOS];
1277static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS]; 1277static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS];
1278#endif 1278#endif
1279 1279
1280/* This lock class tells lockdep that GPIO irqs are in a different
1281 * category than their parents, so it won't report false recursion.
1282 */
1283static struct lock_class_key gpio_lock_class;
1284
1280static int __init _omap_gpio_init(void) 1285static int __init _omap_gpio_init(void)
1281{ 1286{
1282 int i; 1287 int i;
@@ -1450,6 +1455,7 @@ static int __init _omap_gpio_init(void)
1450#endif 1455#endif
1451 for (j = bank->virtual_irq_start; 1456 for (j = bank->virtual_irq_start;
1452 j < bank->virtual_irq_start + gpio_count; j++) { 1457 j < bank->virtual_irq_start + gpio_count; j++) {
1458 lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
1453 set_irq_chip_data(j, bank); 1459 set_irq_chip_data(j, bank);
1454 if (bank_is_mpuio(bank)) 1460 if (bank_is_mpuio(bank))
1455 set_irq_chip(j, &mpuio_irq_chip); 1461 set_irq_chip(j, &mpuio_irq_chip);