aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/sh/clk/core.c9
-rw-r--r--include/linux/sh_clk.h1
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)
355 */ 355 */
356 if (!clk->parent) { 356 if (!clk->parent) {
357 clk->mapping = &dummy_mapping; 357 clk->mapping = &dummy_mapping;
358 return 0; 358 goto out;
359 } 359 }
360 360
361 /* 361 /*
@@ -384,6 +384,9 @@ static int clk_establish_mapping(struct clk *clk)
384 } 384 }
385 385
386 clk->mapping = mapping; 386 clk->mapping = mapping;
387out:
388 clk->mapped_reg = clk->mapping->base;
389 clk->mapped_reg += (phys_addr_t)clk->enable_reg - clk->mapping->phys;
387 return 0; 390 return 0;
388} 391}
389 392
@@ -402,10 +405,12 @@ static void clk_teardown_mapping(struct clk *clk)
402 405
403 /* Nothing to do */ 406 /* Nothing to do */
404 if (mapping == &dummy_mapping) 407 if (mapping == &dummy_mapping)
405 return; 408 goto out;
406 409
407 kref_put(&mapping->ref, clk_destroy_mapping); 410 kref_put(&mapping->ref, clk_destroy_mapping);
408 clk->mapping = NULL; 411 clk->mapping = NULL;
412out:
413 clk->mapped_reg = NULL;
409} 414}
410 415
411int clk_register(struct clk *clk) 416int 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 {
49 49
50 void __iomem *enable_reg; 50 void __iomem *enable_reg;
51 unsigned int enable_bit; 51 unsigned int enable_bit;
52 void __iomem *mapped_reg;
52 53
53 unsigned long arch_flags; 54 unsigned long arch_flags;
54 void *priv; 55 void *priv;