Merge branch 'gpio-for-grant' of git://sources.calxeda.com/kernel/linux into gpio...
authorGrant Likely <grant.likely@secretlab.ca>
Thu, 5 Jan 2012 18:05:51 +0000 (11:05 -0700)
committerGrant Likely <grant.likely@secretlab.ca>
Thu, 5 Jan 2012 18:05:51 +0000 (11:05 -0700)
Conflicts:
drivers/gpio/gpio-pl061.c

1  2 
MAINTAINERS
drivers/gpio/Kconfig
drivers/gpio/gpio-da9052.c
drivers/gpio/gpio-pl061.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
index 42a5d5672694d845669d366b4ef558b3cc53015f,23065f6b3de17ff3ec814e55eda2bb08ca95e03c..2f399ec7bd66705d26dcec5c5baa61bc3d312756
@@@ -23,7 -22,7 +22,8 @@@
  #include <linux/amba/bus.h>
  #include <linux/amba/pl061.h>
  #include <linux/slab.h>
 +#include <linux/pm.h>
+ #include <asm/mach/irq.h>
  
  #define GPIODIR 0x400
  #define GPIOIS  0x404
  
  #define PL061_GPIO_NR 8
  
 +#ifdef CONFIG_PM
 +struct pl061_context_save_regs {
 +      u8 gpio_data;
 +      u8 gpio_dir;
 +      u8 gpio_is;
 +      u8 gpio_ibe;
 +      u8 gpio_iev;
 +      u8 gpio_ie;
 +};
 +#endif
 +
  struct pl061_gpio {
-       /* We use a list of pl061_gpio structs for each trigger IRQ in the main
-        * interrupts controller of the system. We need this to support systems
-        * in which more that one PL061s are connected to the same IRQ. The ISR
-        * interates through this list to find the source of the interrupt.
-        */
-       struct list_head        list;
        /* Each of the two spinlocks protects a different set of hardware
         * regiters and data structurs. This decouples the code of the IRQ from
         * the GPIO code. This also makes the case of a GPIO routine call from
         * the IRQ code simpler.
         */
        spinlock_t              lock;           /* GPIO registers */
-       spinlock_t              irq_lock;       /* IRQ registers */
  
        void __iomem            *base;
-       unsigned                irq_base;
+       int                     irq_base;
+       struct irq_chip_generic *irq_gc;
        struct gpio_chip        gc;
 +
 +#ifdef CONFIG_PM
 +      struct pl061_context_save_regs csave_regs;
 +#endif
  };
  
  static int pl061_direction_input(struct gpio_chip *gc, unsigned offset)
@@@ -339,15 -276,8 +292,10 @@@ static int pl061_probe(struct amba_devi
                        else
                                pl061_direction_input(&chip->gc, i);
                }
-               irq_set_chip_and_handler(i + chip->irq_base, &pl061_irqchip,
-                                        handle_simple_irq);
-               set_irq_flags(i+chip->irq_base, IRQF_VALID);
-               irq_set_chip_data(i + chip->irq_base, chip);
        }
  
 +      amba_set_drvdata(dev, chip);
 +
        return 0;
  
  iounmap: