]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ARM: shmobile: Introduce r8a7790_read_mode_pins()
authorMagnus Damm <damm@opensource.se>
Thu, 11 Jul 2013 16:22:19 +0000 (01:22 +0900)
committerSimon Horman <horms+renesas@verge.net.au>
Wed, 17 Jul 2013 05:26:56 +0000 (14:26 +0900)
Break out the r8a7790 boot mode code into a separate
function so it can be shared by multiple users.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
arch/arm/mach-shmobile/clock-r8a7790.c
arch/arm/mach-shmobile/include/mach/r8a7790.h
arch/arm/mach-shmobile/setup-r8a7790.c

index 62d8162c7e7055a7261b2a864c3fad60108e2c10..50d96f9cf981ed13b26aac352ad67b2553f8b811 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/clkdev.h>
 #include <mach/clock.h>
 #include <mach/common.h>
+#include <mach/r8a7790.h>
 
 /*
  *   MD                EXTAL           PLL0    PLL1    PLL3
@@ -42,8 +43,6 @@
  *     see "p1 / 2" on R8A7790_CLOCK_ROOT() below
  */
 
-#define MD(nr) (1 << nr)
-
 #define CPG_BASE 0xe6150000
 #define CPG_LEN 0x1000
 
@@ -53,7 +52,6 @@
 #define SMSTPCR5 0xe6150144
 #define SMSTPCR7 0xe615014c
 
-#define MODEMR         0xE6160060
 #define SDCKCR         0xE6150074
 #define SD2CKCR                0xE6150078
 #define SD3CKCR                0xE615007C
@@ -288,14 +286,9 @@ static struct clk_lookup lookups[] = {
 
 void __init r8a7790_clock_init(void)
 {
-       void __iomem *modemr = ioremap_nocache(MODEMR, PAGE_SIZE);
-       u32 mode;
+       u32 mode = r8a7790_read_mode_pins();
        int k, ret = 0;
 
-       BUG_ON(!modemr);
-       mode = ioread32(modemr);
-       iounmap(modemr);
-
        switch (mode & (MD(14) | MD(13))) {
        case 0:
                R8A7790_CLOCK_ROOT(15, &extal_clk, 172, 208, 106, 88);
index 7851cc1bc9fb55636479102492ac6753eddda1ae..7aaef409a059f17411b3cfb55537cd69924b5658 100644 (file)
@@ -7,4 +7,7 @@ void r8a7790_pinmux_init(void);
 void r8a7790_init_delay(void);
 void r8a7790_timer_init(void);
 
+#define MD(nr) BIT(nr)
+u32 r8a7790_read_mode_pins(void);
+
 #endif /* __ASM_R8A7790_H__ */
index f01542e13e58bca868b095af372c5b2150b62917..6acddc139d884dc85d5efdf299187046f981281c 100644 (file)
@@ -196,6 +196,20 @@ void __init r8a7790_add_standard_devices(void)
        r8a7790_register_cmt(00);
 }
 
+#define MODEMR 0xe6160060
+
+u32 __init r8a7790_read_mode_pins(void)
+{
+       void __iomem *modemr = ioremap_nocache(MODEMR, 4);
+       u32 mode;
+
+       BUG_ON(!modemr);
+       mode = ioread32(modemr);
+       iounmap(modemr);
+
+       return mode;
+}
+
 void __init r8a7790_timer_init(void)
 {
        void __iomem *cntcr;