--- /dev/null
+From 6dd599f8af0166805951f4421a78ba716d78321a Mon Sep 17 00:00:00 2001
+From: David Jander <david@protonic.nl>
+Date: Wed, 8 Jun 2011 11:37:45 -0600
+Subject: gpio/pca953x: Fix warning of enabled interrupts in handler
+
+From: David Jander <david@protonic.nl>
+
+commit 6dd599f8af0166805951f4421a78ba716d78321a upstream.
+
+When using nested threaded irqs, use handle_nested_irq(). This function
+does not call the chip handler, so no handler is set.
+
+Signed-off-by: David Jander <david@protonic.nl>
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+Cc: Steven Rostedt <rostedt@goodmis.org>
+Cc: Yong Zhang <yong.zhang0@gmail.com>
+Cc: Manfred Gruber <m.gruber@unverspurt.at>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpio/pca953x.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpio/pca953x.c
++++ b/drivers/gpio/pca953x.c
+@@ -437,7 +437,7 @@ static irqreturn_t pca953x_irq_handler(i
+
+ do {
+ level = __ffs(pending);
+- generic_handle_irq(level + chip->irq_base);
++ handle_nested_irq(level + chip->irq_base);
+
+ pending &= ~(1 << level);
+ } while (pending);
+@@ -481,8 +481,8 @@ static int pca953x_irq_setup(struct pca9
+ int irq = lvl + chip->irq_base;
+
+ irq_set_chip_data(irq, chip);
+- irq_set_chip_and_handler(irq, &pca953x_irq_chip,
+- handle_simple_irq);
++ irq_set_chip(irq, &pca953x_irq_chip);
++ irq_set_nested_thread(irq, true);
+ #ifdef CONFIG_ARM
+ set_irq_flags(irq, IRQF_VALID);
+ #else