Patch by Jon Loeliger, 16 Jul 2004:
[oweals/u-boot.git] / cpu / ppc4xx / speed.c
index 7172fe3ea8046b36d3476be01d3147c3b504c29d..be0de0c32a08433a50379a8bc6eee6b8c7183322 100644 (file)
@@ -247,7 +247,7 @@ void get_sys_info (sys_info_t * sysInfo)
        unsigned long temp1;
        unsigned long lfdiv;
        unsigned long m;
-       unsigned long prbdv0;    
+       unsigned long prbdv0;
 
        /* Extract configured divisors */
        mfsdr( sdr_sdstp0,strp0 );
@@ -383,8 +383,13 @@ void get_sys_info (PPC405_SYS_INFO * sysInfo)
         */
        pllmr0_ccdv = ((pllmr0 & PLLMR0_CPU_DIV_MASK) >> 20) + 1;
        if (pllmr1 & PLLMR1_SSCS_MASK) {
-               sysInfo->freqProcessor = (CONFIG_SYS_CLK_FREQ * sysInfo->pllFbkDiv)
-                       / pllmr0_ccdv;
+               /*
+                * This is true if FWDVA == FWDVB:
+                * sysInfo->freqProcessor = (CONFIG_SYS_CLK_FREQ * sysInfo->pllFbkDiv)
+                *      / pllmr0_ccdv;
+                */
+               sysInfo->freqProcessor = (CONFIG_SYS_CLK_FREQ * sysInfo->pllFbkDiv * sysInfo->pllFwdDivB)
+                       / sysInfo->pllFwdDiv / pllmr0_ccdv;
        } else {
                sysInfo->freqProcessor = CONFIG_SYS_CLK_FREQ / pllmr0_ccdv;
        }