eg. because of rounding error we can get 799Mhz instead of 800Mhz.

Signed-off-by: Dejan Minic <[EMAIL PROTECTED]>
Signed-off-by: Srikanth Srinivasan <[EMAIL PROTECTED]>
Signed-off-by: Kumar Gala <[EMAIL PROTECTED]>
---

renamed integer_round to rounded_divide per Andy's request.

 cpu/mpc85xx/cpu.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/cpu/mpc85xx/cpu.c b/cpu/mpc85xx/cpu.c
index dcd8817..8efae26 100644
--- a/cpu/mpc85xx/cpu.c
+++ b/cpu/mpc85xx/cpu.c
@@ -65,6 +65,11 @@ struct cpu_type cpu_type_list [] = {
        CPU_TYPE_ENTRY(8572_E),
 };

+static inline unsigned long rounded_divide (unsigned long val, unsigned long 
div)
+{
+       return ((val + (div/2)) / div);
+}
+
 int checkcpu (void)
 {
        sys_info_t sysinfo;
@@ -116,22 +121,21 @@ int checkcpu (void)
        get_sys_info(&sysinfo);

        puts("Clock Configuration:\n");
-       printf("       CPU:%4lu MHz, ", sysinfo.freqProcessor / 1000000);
-       printf("CCB:%4lu MHz,\n", sysinfo.freqSystemBus / 1000000);
-
+       printf("       CPU:%4lu MHz, ", 
rounded_divide(sysinfo.freqProcessor,1000000));
+       printf("CCB:%4lu MHz,\n", 
rounded_divide(sysinfo.freqSystemBus,1000000));
        ddr_ratio = ((gur->porpllsr) & 0x00003e00) >> 9;
        switch (ddr_ratio) {
        case 0x0:
                printf("       DDR:%4lu MHz (%lu MT/s data rate), ",
-               sysinfo.freqDDRBus / 2000000, sysinfo.freqDDRBus / 1000000);
+               rounded_divide(sysinfo.freqDDRBus,2000000), 
rounded_divide(sysinfo.freqDDRBus,1000000));
                break;
        case 0x7:
                printf("       DDR:%4lu MHz (%lu MT/s data rate) (Synchronous), 
",
-               sysinfo.freqDDRBus / 2000000, sysinfo.freqDDRBus / 1000000);
+               rounded_divide(sysinfo.freqDDRBus, 2000000), 
rounded_divide(sysinfo.freqDDRBus, 1000000));
                break;
        default:
                printf("       DDR:%4lu MHz (%lu MT/s data rate) 
(Asynchronous), ",
-               sysinfo.freqDDRBus / 2000000, sysinfo.freqDDRBus / 1000000);
+               rounded_divide(sysinfo.freqDDRBus, 2000000), 
rounded_divide(sysinfo.freqDDRBus,1000000));
                break;
        }

@@ -154,7 +158,7 @@ int checkcpu (void)
                 clkdiv *= 2;
 #endif
                printf("LBC:%4lu MHz\n",
-                      sysinfo.freqSystemBus / 1000000 / clkdiv);
+                      rounded_divide(sysinfo.freqSystemBus, 1000000) / clkdiv);
        } else {
                printf("LBC: unknown (lcrr: 0x%08x)\n", lcrr);
        }
-- 
1.5.4.1


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users

Reply via email to