diff options
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpio-mxc.c | 12 | ||||
-rw-r--r-- | drivers/gpio/gpio-mxs.c | 2 |
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 | |||
35 | enum mxc_gpio_hwtype { | 37 | enum 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 | ||
348 | static 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 | |||
346 | static int __devinit mxc_gpio_probe(struct platform_device *pdev) | 357 | static 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 | |||
52 | struct mxs_gpio_port { | 54 | struct mxs_gpio_port { |
53 | void __iomem *base; | 55 | void __iomem *base; |
54 | int id; | 56 | int id; |