Merge branch 'next/cleanup' of git://git.linaro.org/people/arnd/arm-soc
[pandora-kernel.git] / drivers / gpio / gpio-mxc.c
index 82f7b65..b81c989 100644 (file)
@@ -32,6 +32,8 @@
 #include <asm-generic/bug.h>
 #include <asm/mach/irq.h>
 
+#define irq_to_gpio(irq)       ((irq) - MXC_GPIO_IRQ_START)
+
 enum mxc_gpio_hwtype {
        IMX1_GPIO,      /* runs on i.mx1 */
        IMX21_GPIO,     /* runs on i.mx21 and i.mx27 */
@@ -343,6 +345,15 @@ static void __devinit mxc_gpio_get_hw(struct platform_device *pdev)
        mxc_gpio_hwtype = hwtype;
 }
 
+static int mxc_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
+{
+       struct bgpio_chip *bgc = to_bgpio_chip(gc);
+       struct mxc_gpio_port *port =
+               container_of(bgc, struct mxc_gpio_port, bgc);
+
+       return port->virtual_irq_start + offset;
+}
+
 static int __devinit mxc_gpio_probe(struct platform_device *pdev)
 {
        struct device_node *np = pdev->dev.of_node;
@@ -409,6 +420,7 @@ static int __devinit mxc_gpio_probe(struct platform_device *pdev)
        if (err)
                goto out_iounmap;
 
+       port->bgc.gc.to_irq = mxc_gpio_to_irq;
        port->bgc.gc.base = pdev->id * 32;
        port->bgc.dir = port->bgc.read_reg(port->bgc.reg_dir);
        port->bgc.data = port->bgc.read_reg(port->bgc.reg_set);