aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/gpio-mxc.c12
-rw-r--r--drivers/gpio/gpio-mxs.c2
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index 82f7b65baf72..b81c98992114 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -32,6 +32,8 @@
32#include <asm-generic/bug.h> 32#include <asm-generic/bug.h>
33#include <asm/mach/irq.h> 33#include <asm/mach/irq.h>
34 34
35#define irq_to_gpio(irq) ((irq) - MXC_GPIO_IRQ_START)
36
35enum mxc_gpio_hwtype { 37enum mxc_gpio_hwtype {
36 IMX1_GPIO, /* runs on i.mx1 */ 38 IMX1_GPIO, /* runs on i.mx1 */
37 IMX21_GPIO, /* runs on i.mx21 and i.mx27 */ 39 IMX21_GPIO, /* runs on i.mx21 and i.mx27 */
@@ -343,6 +345,15 @@ static void __devinit mxc_gpio_get_hw(struct platform_device *pdev)
343 mxc_gpio_hwtype = hwtype; 345 mxc_gpio_hwtype = hwtype;
344} 346}
345 347
348static int mxc_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
349{
350 struct bgpio_chip *bgc = to_bgpio_chip(gc);
351 struct mxc_gpio_port *port =
352 container_of(bgc, struct mxc_gpio_port, bgc);
353
354 return port->virtual_irq_start + offset;
355}
356
346static int __devinit mxc_gpio_probe(struct platform_device *pdev) 357static int __devinit mxc_gpio_probe(struct platform_device *pdev)
347{ 358{
348 struct device_node *np = pdev->dev.of_node; 359 struct device_node *np = pdev->dev.of_node;
@@ -409,6 +420,7 @@ static int __devinit mxc_gpio_probe(struct platform_device *pdev)
409 if (err) 420 if (err)
410 goto out_iounmap; 421 goto out_iounmap;
411 422
423 port->bgc.gc.to_irq = mxc_gpio_to_irq;
412 port->bgc.gc.base = pdev->id * 32; 424 port->bgc.gc.base = pdev->id * 32;
413 port->bgc.dir = port->bgc.read_reg(port->bgc.reg_dir); 425 port->bgc.dir = port->bgc.read_reg(port->bgc.reg_dir);
414 port->bgc.data = port->bgc.read_reg(port->bgc.reg_set); 426 port->bgc.data = port->bgc.read_reg(port->bgc.reg_set);
diff --git a/drivers/gpio/gpio-mxs.c b/drivers/gpio/gpio-mxs.c
index af55a8577c2e..292b50481db9 100644
--- a/drivers/gpio/gpio-mxs.c
+++ b/drivers/gpio/gpio-mxs.c
@@ -49,6 +49,8 @@
49#define GPIO_INT_LEV_MASK (1 << 0) 49#define GPIO_INT_LEV_MASK (1 << 0)
50#define GPIO_INT_POL_MASK (1 << 1) 50#define GPIO_INT_POL_MASK (1 << 1)
51 51
52#define irq_to_gpio(irq) ((irq) - MXS_GPIO_IRQ_START)
53
52struct mxs_gpio_port { 54struct mxs_gpio_port {
53 void __iomem *base; 55 void __iomem *base;
54 int id; 56 int id;