• Anton Vorontsov's avatar
    [POWERPC] 8xx: Timebase frequency should not depend on bus-frequency · 50530378
    Anton Vorontsov authored
    m8xx_setup.c says:
       /* Force all 8xx processors to use divide by 16 processor clock. */
    
    And at the same time it is using bus-frequency for calculating
    timebase.  It is okay for most setups because bus-frequency is
    equal to clock-frequency.
    
    The problem emerges when cpu frequency is > 66MHz, quoting
    u-boot/cpu/mpc8xx/speed.c:
    
            if (gd->cpu_clk <= 66000000) {
                    sccr_reg |= SCCR_EBDF00;        /* bus division factor = 1 */
                    gd->bus_clk = gd->cpu_clk;
            } else {
                    sccr_reg |= SCCR_EBDF01;        /* bus division factor = 2 */
                    gd->bus_clk = gd->cpu_clk / 2;
            }
    
    So in case of cpu clock > 66MHz, bus_clk = cpu_clk / 2. An then, from
    Linux, we calculate timebase frequency as tb_freq = bus_clk / 16,
    that is cpu_clk / 2 / 16, which is wrong.
    
    This fixes the system time drifting problem on the EP885C board
    running at 133MHz.
    Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    50530378
m8xx_setup.c 6.47 KB