diff options
Diffstat (limited to 'arch/powerpc/boot/ebony.c')
-rw-r--r-- | arch/powerpc/boot/ebony.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/arch/powerpc/boot/ebony.c b/arch/powerpc/boot/ebony.c index 68beb4947190..f61364c47a76 100644 --- a/arch/powerpc/boot/ebony.c +++ b/arch/powerpc/boot/ebony.c | |||
@@ -31,66 +31,6 @@ | |||
31 | 31 | ||
32 | static u8 *ebony_mac0, *ebony_mac1; | 32 | static u8 *ebony_mac0, *ebony_mac1; |
33 | 33 | ||
34 | /* Calculate 440GP clocks */ | ||
35 | void ibm440gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk) | ||
36 | { | ||
37 | u32 sys0 = mfdcr(DCRN_CPC0_SYS0); | ||
38 | u32 cr0 = mfdcr(DCRN_CPC0_CR0); | ||
39 | u32 cpu, plb, opb, ebc, tb, uart0, uart1, m; | ||
40 | u32 opdv = CPC0_SYS0_OPDV(sys0); | ||
41 | u32 epdv = CPC0_SYS0_EPDV(sys0); | ||
42 | |||
43 | if (sys0 & CPC0_SYS0_BYPASS) { | ||
44 | /* Bypass system PLL */ | ||
45 | cpu = plb = sysclk; | ||
46 | } else { | ||
47 | if (sys0 & CPC0_SYS0_EXTSL) | ||
48 | /* PerClk */ | ||
49 | m = CPC0_SYS0_FWDVB(sys0) * opdv * epdv; | ||
50 | else | ||
51 | /* CPU clock */ | ||
52 | m = CPC0_SYS0_FBDV(sys0) * CPC0_SYS0_FWDVA(sys0); | ||
53 | cpu = sysclk * m / CPC0_SYS0_FWDVA(sys0); | ||
54 | plb = sysclk * m / CPC0_SYS0_FWDVB(sys0); | ||
55 | } | ||
56 | |||
57 | opb = plb / opdv; | ||
58 | ebc = opb / epdv; | ||
59 | |||
60 | /* FIXME: Check if this is for all 440GP, or just Ebony */ | ||
61 | if ((mfpvr() & 0xf0000fff) == 0x40000440) | ||
62 | /* Rev. B 440GP, use external system clock */ | ||
63 | tb = sysclk; | ||
64 | else | ||
65 | /* Rev. C 440GP, errata force us to use internal clock */ | ||
66 | tb = cpu; | ||
67 | |||
68 | if (cr0 & CPC0_CR0_U0EC) | ||
69 | /* External UART clock */ | ||
70 | uart0 = ser_clk; | ||
71 | else | ||
72 | /* Internal UART clock */ | ||
73 | uart0 = plb / CPC0_CR0_UDIV(cr0); | ||
74 | |||
75 | if (cr0 & CPC0_CR0_U1EC) | ||
76 | /* External UART clock */ | ||
77 | uart1 = ser_clk; | ||
78 | else | ||
79 | /* Internal UART clock */ | ||
80 | uart1 = plb / CPC0_CR0_UDIV(cr0); | ||
81 | |||
82 | printf("PPC440GP: SysClk = %dMHz (%x)\n\r", | ||
83 | (sysclk + 500000) / 1000000, sysclk); | ||
84 | |||
85 | dt_fixup_cpu_clocks(cpu, tb, 0); | ||
86 | |||
87 | dt_fixup_clock("/plb", plb); | ||
88 | dt_fixup_clock("/plb/opb", opb); | ||
89 | dt_fixup_clock("/plb/opb/ebc", ebc); | ||
90 | dt_fixup_clock("/plb/opb/serial@40000200", uart0); | ||
91 | dt_fixup_clock("/plb/opb/serial@40000300", uart1); | ||
92 | } | ||
93 | |||
94 | #define EBONY_FPGA_PATH "/plb/opb/ebc/fpga" | 34 | #define EBONY_FPGA_PATH "/plb/opb/ebc/fpga" |
95 | #define EBONY_FPGA_FLASH_SEL 0x01 | 35 | #define EBONY_FPGA_FLASH_SEL 0x01 |
96 | #define EBONY_SMALL_FLASH_PATH "/plb/opb/ebc/small-flash" | 36 | #define EBONY_SMALL_FLASH_PATH "/plb/opb/ebc/small-flash" |