]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
sh: extend clock struct with mapped_reg member
authorMagnus Damm <damm@opensource.se>
Thu, 8 Dec 2011 13:58:54 +0000 (22:58 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 9 Dec 2011 09:01:05 +0000 (18:01 +0900)
Add a "mapped_reg" member to struct clk and use that
to keep the ioremapped register based on enable_reg.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
drivers/sh/clk/core.c
include/linux/sh_clk.h

index db257a35e71a545aa724b97d40dbdd6dbf1fe7f2..7715de2629c104de4e98a87836ea2ef308a743c4 100644 (file)
@@ -355,7 +355,7 @@ static int clk_establish_mapping(struct clk *clk)
                 */
                if (!clk->parent) {
                        clk->mapping = &dummy_mapping;
-                       return 0;
+                       goto out;
                }
 
                /*
@@ -384,6 +384,9 @@ static int clk_establish_mapping(struct clk *clk)
        }
 
        clk->mapping = mapping;
+out:
+       clk->mapped_reg = clk->mapping->base;
+       clk->mapped_reg += (phys_addr_t)clk->enable_reg - clk->mapping->phys;
        return 0;
 }
 
@@ -402,10 +405,12 @@ static void clk_teardown_mapping(struct clk *clk)
 
        /* Nothing to do */
        if (mapping == &dummy_mapping)
-               return;
+               goto out;
 
        kref_put(&mapping->ref, clk_destroy_mapping);
        clk->mapping = NULL;
+out:
+       clk->mapped_reg = NULL;
 }
 
 int clk_register(struct clk *clk)
index e834304c0b6a26c615deec9341ff4b5950cf0625..54341d811685a2088897491c2255ba605b71ab43 100644 (file)
@@ -49,6 +49,7 @@ struct clk {
 
        void __iomem            *enable_reg;
        unsigned int            enable_bit;
+       void __iomem            *mapped_reg;
 
        unsigned long           arch_flags;
        void                    *priv;