diff options
Diffstat (limited to 'arch/ppc/boot/simple/misc-cpci690.c')
-rw-r--r-- | arch/ppc/boot/simple/misc-cpci690.c | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/arch/ppc/boot/simple/misc-cpci690.c b/arch/ppc/boot/simple/misc-cpci690.c index ef08e86c9b25..26860300fa09 100644 --- a/arch/ppc/boot/simple/misc-cpci690.c +++ b/arch/ppc/boot/simple/misc-cpci690.c | |||
@@ -12,16 +12,56 @@ | |||
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/types.h> | 14 | #include <linux/types.h> |
15 | #include <asm/io.h> | ||
15 | #include <platforms/cpci690.h> | 16 | #include <platforms/cpci690.h> |
16 | 17 | ||
18 | #define KB (1024UL) | ||
19 | #define MB (1024UL*KB) | ||
20 | #define GB (1024UL*MB) | ||
21 | |||
17 | extern u32 mv64x60_console_baud; | 22 | extern u32 mv64x60_console_baud; |
18 | extern u32 mv64x60_mpsc_clk_src; | 23 | extern u32 mv64x60_mpsc_clk_src; |
19 | extern u32 mv64x60_mpsc_clk_freq; | 24 | extern u32 mv64x60_mpsc_clk_freq; |
20 | 25 | ||
26 | u32 mag = 0xffff; | ||
27 | |||
28 | unsigned long | ||
29 | get_mem_size(void) | ||
30 | { | ||
31 | u32 size; | ||
32 | |||
33 | switch (in_8(((void __iomem *)CPCI690_BR_BASE + CPCI690_BR_MEM_CTLR)) | ||
34 | & 0x07) { | ||
35 | case 0x01: | ||
36 | size = 256*MB; | ||
37 | break; | ||
38 | case 0x02: | ||
39 | size = 512*MB; | ||
40 | break; | ||
41 | case 0x03: | ||
42 | size = 768*MB; | ||
43 | break; | ||
44 | case 0x04: | ||
45 | size = 1*GB; | ||
46 | break; | ||
47 | case 0x05: | ||
48 | size = 1*GB + 512*MB; | ||
49 | break; | ||
50 | case 0x06: | ||
51 | size = 2*GB; | ||
52 | break; | ||
53 | default: | ||
54 | size = 0; | ||
55 | } | ||
56 | |||
57 | return size; | ||
58 | } | ||
59 | |||
21 | void | 60 | void |
22 | mv64x60_board_init(void __iomem *old_base, void __iomem *new_base) | 61 | mv64x60_board_init(void __iomem *old_base, void __iomem *new_base) |
23 | { | 62 | { |
24 | mv64x60_console_baud = CPCI690_MPSC_BAUD; | 63 | mv64x60_console_baud = CPCI690_MPSC_BAUD; |
25 | mv64x60_mpsc_clk_src = CPCI690_MPSC_CLK_SRC; | 64 | mv64x60_mpsc_clk_src = CPCI690_MPSC_CLK_SRC; |
26 | mv64x60_mpsc_clk_freq = CPCI690_BUS_FREQ; | 65 | mv64x60_mpsc_clk_freq = |
66 | (get_mem_size() >= (1*GB)) ? 100000000 : 133333333; | ||
27 | } | 67 | } |