gpio/nomadik: use ioremap() instead of static mappings
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 17 Apr 2012 08:15:54 +0000 (10:15 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 24 Apr 2012 07:36:04 +0000 (09:36 +0200)
We were using a custom io_p2v() (physical-to-virtual) translation
macro, but it's fully possible to just ioremap() this memory
now, so skip use of static addresses altogether.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-nomadik.c

index 7b45d88b4f44256b845a7505639cd43502303b93..b35eb25209ecdc8b9e3212ff95e0414aaf9307de 100644 (file)
@@ -28,8 +28,6 @@
 
 #include <plat/pincfg.h>
 #include <plat/gpio-nomadik.h>
-#include <mach/hardware.h>
-#include <asm/gpio.h>
 
 /*
  * The GPIO module in the Nomadik family of Systems-on-Chip is an
@@ -1139,6 +1137,7 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
        struct resource *res;
        struct clk *clk;
        int secondary_irq;
+       void __iomem *base;
        int irq;
        int ret;
 
@@ -1169,10 +1168,16 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
                goto out;
        }
 
+       base = ioremap(res->start, resource_size(res));
+       if (!base) {
+               ret = -ENOMEM;
+               goto out_release;
+       }
+
        clk = clk_get(&dev->dev, NULL);
        if (IS_ERR(clk)) {
                ret = PTR_ERR(clk);
-               goto out_release;
+               goto out_unmap;
        }
 
        nmk_chip = kzalloc(sizeof(*nmk_chip), GFP_KERNEL);
@@ -1186,7 +1191,7 @@ static int __devinit nmk_gpio_probe(struct platform_device *dev)
         */
        nmk_chip->bank = dev->id;
        nmk_chip->clk = clk;
-       nmk_chip->addr = io_p2v(res->start);
+       nmk_chip->addr = base;
        nmk_chip->chip = nmk_gpio_template;
        nmk_chip->parent_irq = irq;
        nmk_chip->secondary_parent_irq = secondary_irq;
@@ -1226,6 +1231,8 @@ out_free:
 out_clk:
        clk_disable(clk);
        clk_put(clk);
+out_unmap:
+       iounmap(base);
 out_release:
        release_mem_region(res->start, resource_size(res));
 out: