Skip to content
  • Gregory CLEMENT's avatar
    clk: mvebu: armada-37xx-periph: Fix switching CPU rate from 300Mhz to 1.2GHz · 61c40f35
    Gregory CLEMENT authored
    Switching the CPU from the L2 or L3 frequencies (300 and 200 Mhz
    respectively) to L0 frequency (1.2 Ghz) requires a significant amount
    of time to let VDD stabilize to the appropriate voltage. This amount of
    time is large enough that it cannot be covered by the hardware
    countdown register. Due to this, the CPU might start operating at L0
    before the voltage is stabilized, leading to CPU stalls.
    
    To work around this problem, we prevent switching directly from the
    L2/L3 frequencies to the L0 frequency, and instead switch to the L1
    frequency in-between. The sequence therefore becomes:
    
    1. First switch from L2/L3(200/300MHz) to L1(600MHZ)
    2. Sleep 20ms for stabling VDD voltage
    3. Then switch from L1(600MHZ) to L0(1200Mhz).
    
    It is based on the work done by Ken Ma <make@marvell.com>
    
    Cc: stable@vger.kernel.org
    Fixes: 2089dc33
    
     ("clk: mvebu: armada-37xx-periph: add DVFS support for cpu clocks")
    Signed-off-by: default avatarGregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    61c40f35