Commit 3e05f24a authored by Simon Horman's avatar Simon Horman

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: default avatarSimon Horman <horms+renesas@verge.net.au>
parent 3325cbe8
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/sh_clk.h> #include <linux/sh_clk.h>
#include <linux/clkdev.h> #include <linux/clkdev.h>
#include <mach/r8a7779.h>
#include "clock.h" #include "clock.h"
#include "common.h" #include "common.h"
...@@ -52,9 +53,6 @@ ...@@ -52,9 +53,6 @@
#define MSTPCR3 IOMEM(0xffc8003c) #define MSTPCR3 IOMEM(0xffc8003c)
#define MSTPSR1 IOMEM(0xffc80044) #define MSTPSR1 IOMEM(0xffc80044)
#define MODEMR 0xffcc0020
/* ioremap() through clock mapping mandatory to avoid /* ioremap() through clock mapping mandatory to avoid
* collision with ARM coherent DMA virtual memory range. * collision with ARM coherent DMA virtual memory range.
*/ */
...@@ -207,14 +205,9 @@ static struct clk_lookup lookups[] = { ...@@ -207,14 +205,9 @@ static struct clk_lookup lookups[] = {
void __init r8a7779_clock_init(void) void __init r8a7779_clock_init(void)
{ {
void __iomem *modemr = ioremap_nocache(MODEMR, PAGE_SIZE); u32 mode = r8a7779_read_mode_pins();
u32 mode;
int k, ret = 0; int k, ret = 0;
BUG_ON(!modemr);
mode = ioread32(modemr);
iounmap(modemr);
if (mode & MD(1)) { if (mode & MD(1)) {
plla_clk.rate = 1500000000; plla_clk.rate = 1500000000;
......
...@@ -20,6 +20,7 @@ extern void r8a7779_add_early_devices(void); ...@@ -20,6 +20,7 @@ extern void r8a7779_add_early_devices(void);
extern void r8a7779_add_standard_devices(void); extern void r8a7779_add_standard_devices(void);
extern void r8a7779_add_standard_devices_dt(void); extern void r8a7779_add_standard_devices_dt(void);
extern void r8a7779_init_late(void); extern void r8a7779_init_late(void);
extern u32 r8a7779_read_mode_pins(void);
extern void r8a7779_clock_init(void); extern void r8a7779_clock_init(void);
extern void r8a7779_pinmux_init(void); extern void r8a7779_pinmux_init(void);
extern void r8a7779_pm_init(void); extern void r8a7779_pm_init(void);
......
...@@ -762,6 +762,24 @@ void __init r8a7779_add_standard_devices_dt(void) ...@@ -762,6 +762,24 @@ void __init r8a7779_add_standard_devices_dt(void)
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 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 = { static const char *r8a7779_compat_dt[] __initdata = {
"renesas,r8a7779", "renesas,r8a7779",
NULL, NULL,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment