summaryrefslogtreecommitdiffstats
path: root/drivers/sh
diff options
context:
space:
mode:
authorMagnus Damm2011-12-08 14:58:54 +0100
committerPaul Mundt2011-12-09 10:01:05 +0100
commiteda2030a5b60bb818f062adacbcfb6fd2d366fb9 (patch)
tree1806b5e9f0d86e3e397973020418ad3144921b65 /drivers/sh
parentsh: clkfwk: clock-sh73a0: all div6_clks use SH_CLK_DIV6_EXT() (diff)
downloadkernel-qcow2-linux-eda2030a5b60bb818f062adacbcfb6fd2d366fb9.tar.gz
kernel-qcow2-linux-eda2030a5b60bb818f062adacbcfb6fd2d366fb9.tar.xz
kernel-qcow2-linux-eda2030a5b60bb818f062adacbcfb6fd2d366fb9.zip
sh: extend clock struct with mapped_reg member
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>
Diffstat (limited to 'drivers/sh')
-rw-r--r--drivers/sh/clk/core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/sh/clk/core.c b/drivers/sh/clk/core.c
index db257a35e71a..7715de2629c1 100644
--- a/drivers/sh/clk/core.c
+++ b/drivers/sh/clk/core.c
@@ -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)