diff options
Diffstat (limited to 'arch/mn10300/proc-mn103e010/proc-init.c')
-rw-r--r-- | arch/mn10300/proc-mn103e010/proc-init.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/mn10300/proc-mn103e010/proc-init.c b/arch/mn10300/proc-mn103e010/proc-init.c index 0cee7878bee9..27b97980dca4 100644 --- a/arch/mn10300/proc-mn103e010/proc-init.c +++ b/arch/mn10300/proc-mn103e010/proc-init.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <asm/fpu.h> | 12 | #include <asm/fpu.h> |
13 | #include <asm/rtc.h> | 13 | #include <asm/rtc.h> |
14 | #include <asm/busctl-regs.h> | ||
14 | 15 | ||
15 | /* | 16 | /* |
16 | * initialise the on-silicon processor peripherals | 17 | * initialise the on-silicon processor peripherals |
@@ -75,3 +76,37 @@ asmlinkage void __init processor_init(void) | |||
75 | 76 | ||
76 | calibrate_clock(); | 77 | calibrate_clock(); |
77 | } | 78 | } |
79 | |||
80 | /* | ||
81 | * determine the memory size and base from the memory controller regs | ||
82 | */ | ||
83 | void __init get_mem_info(unsigned long *mem_base, unsigned long *mem_size) | ||
84 | { | ||
85 | unsigned long base, size; | ||
86 | |||
87 | *mem_base = 0; | ||
88 | *mem_size = 0; | ||
89 | |||
90 | base = SDBASE(0); | ||
91 | if (base & SDBASE_CE) { | ||
92 | size = (base & SDBASE_CBAM) << SDBASE_CBAM_SHIFT; | ||
93 | size = ~size + 1; | ||
94 | base &= SDBASE_CBA; | ||
95 | |||
96 | printk(KERN_INFO "SDRAM[0]: %luMb @%08lx\n", size >> 20, base); | ||
97 | *mem_size += size; | ||
98 | *mem_base = base; | ||
99 | } | ||
100 | |||
101 | base = SDBASE(1); | ||
102 | if (base & SDBASE_CE) { | ||
103 | size = (base & SDBASE_CBAM) << SDBASE_CBAM_SHIFT; | ||
104 | size = ~size + 1; | ||
105 | base &= SDBASE_CBA; | ||
106 | |||
107 | printk(KERN_INFO "SDRAM[1]: %luMb @%08lx\n", size >> 20, base); | ||
108 | *mem_size += size; | ||
109 | if (*mem_base == 0) | ||
110 | *mem_base = base; | ||
111 | } | ||
112 | } | ||