| From 7ee34ef34d077800db82b8999237b02f11213ff2 Mon Sep 17 00:00:00 2001 |
| From: Simon Horman <horms+renesas@verge.net.au> |
| Date: Thu, 15 May 2014 20:32:01 +0900 |
| Subject: ARM: shmobile: r8a7779: Add helper to read mode pins |
| |
| Add and use helper to read mode pins. |
| This will be re-used when moving marzen-reference to |
| the common clock framework. |
| |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| (cherry picked from commit 3e05f24aa95bb043f1103b41392b61ce83d2675e) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| arch/arm/mach-shmobile/clock-r8a7779.c | 11 ++--------- |
| arch/arm/mach-shmobile/include/mach/r8a7779.h | 1 + |
| arch/arm/mach-shmobile/setup-r8a7779.c | 18 ++++++++++++++++++ |
| 3 files changed, 21 insertions(+), 9 deletions(-) |
| |
| diff --git a/arch/arm/mach-shmobile/clock-r8a7779.c b/arch/arm/mach-shmobile/clock-r8a7779.c |
| index d81539a26dbd..5dd66a21f036 100644 |
| --- a/arch/arm/mach-shmobile/clock-r8a7779.c |
| +++ b/arch/arm/mach-shmobile/clock-r8a7779.c |
| @@ -23,6 +23,7 @@ |
| #include <linux/io.h> |
| #include <linux/sh_clk.h> |
| #include <linux/clkdev.h> |
| +#include <mach/r8a7779.h> |
| #include "clock.h" |
| #include "common.h" |
| |
| @@ -52,9 +53,6 @@ |
| #define MSTPCR3 IOMEM(0xffc8003c) |
| #define MSTPSR1 IOMEM(0xffc80044) |
| |
| -#define MODEMR 0xffcc0020 |
| - |
| - |
| /* ioremap() through clock mapping mandatory to avoid |
| * collision with ARM coherent DMA virtual memory range. |
| */ |
| @@ -207,14 +205,9 @@ static struct clk_lookup lookups[] = { |
| |
| void __init r8a7779_clock_init(void) |
| { |
| - void __iomem *modemr = ioremap_nocache(MODEMR, PAGE_SIZE); |
| - u32 mode; |
| + u32 mode = r8a7779_read_mode_pins(); |
| int k, ret = 0; |
| |
| - BUG_ON(!modemr); |
| - mode = ioread32(modemr); |
| - iounmap(modemr); |
| - |
| if (mode & MD(1)) { |
| plla_clk.rate = 1500000000; |
| |
| diff --git a/arch/arm/mach-shmobile/include/mach/r8a7779.h b/arch/arm/mach-shmobile/include/mach/r8a7779.h |
| index def10a29e09a..5ef0bad6334d 100644 |
| --- a/arch/arm/mach-shmobile/include/mach/r8a7779.h |
| +++ b/arch/arm/mach-shmobile/include/mach/r8a7779.h |
| @@ -20,6 +20,7 @@ extern void r8a7779_add_early_devices(void); |
| extern void r8a7779_add_standard_devices(void); |
| extern void r8a7779_add_standard_devices_dt(void); |
| extern void r8a7779_init_late(void); |
| +extern u32 r8a7779_read_mode_pins(void); |
| extern void r8a7779_clock_init(void); |
| extern void r8a7779_pinmux_init(void); |
| extern void r8a7779_pm_init(void); |
| diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c |
| index e2bd28de39d0..c00e42254822 100644 |
| --- a/arch/arm/mach-shmobile/setup-r8a7779.c |
| +++ b/arch/arm/mach-shmobile/setup-r8a7779.c |
| @@ -762,6 +762,24 @@ void __init r8a7779_add_standard_devices_dt(void) |
| of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
| } |
| |
| +#define MODEMR 0xffcc0020 |
| + |
| +u32 __init r8a7779_read_mode_pins(void) |
| +{ |
| + static u32 mode; |
| + static bool mode_valid; |
| + |
| + if (!mode_valid) { |
| + void __iomem *modemr = ioremap_nocache(MODEMR, PAGE_SIZE); |
| + BUG_ON(!modemr); |
| + mode = ioread32(modemr); |
| + iounmap(modemr); |
| + mode_valid = true; |
| + } |
| + |
| + return mode; |
| +} |
| + |
| static const char *r8a7779_compat_dt[] __initdata = { |
| "renesas,r8a7779", |
| NULL, |
| -- |
| 2.1.2 |
| |