diff options
author | Magnus Damm <damm@opensource.se> | 2011-12-08 14:58:54 +0100 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-12-09 10:01:05 +0100 |
commit | eda2030a5b60bb818f062adacbcfb6fd2d366fb9 (patch) | |
tree | 1806b5e9f0d86e3e397973020418ad3144921b65 | |
parent | sh: clkfwk: clock-sh73a0: all div6_clks use SH_CLK_DIV6_EXT() (diff) | |
download | linux-eda2030a5b60bb818f062adacbcfb6fd2d366fb9.tar.xz 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>
-rw-r--r-- | drivers/sh/clk/core.c | 9 | ||||
-rw-r--r-- | include/linux/sh_clk.h | 1 |
2 files changed, 8 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) diff --git a/include/linux/sh_clk.h b/include/linux/sh_clk.h index e834304c0b6a..54341d811685 100644 --- a/include/linux/sh_clk.h +++ b/include/linux/sh_clk.h @@ -49,6 +49,7 @@ struct clk { void __iomem *enable_reg; unsigned int enable_bit; + void __iomem *mapped_reg; unsigned long arch_flags; void *priv; |