• Jay Buddhabhatti's avatar
    drivers: clk: zynqmp: calculate closest mux rate · b782921d
    Jay Buddhabhatti authored
    Currently zynqmp clock driver is not calculating closest mux rate and
    because of that Linux is not setting proper frequency for CPU and
    not able to set given frequency for dynamic frequency scaling.
    
    E.g., In current logic initial acpu clock parent and frequency as below
    apll1                  0    0    0  2199999978    0     0  50000      Y
        acpu0_mux          0    0    0  2199999978    0     0  50000      Y
            acpu0_idiv1    0    0    0  2199999978    0     0  50000      Y
                acpu0      0    0    0  2199999978    0     0  50000      Y
    
    After changing acpu frequency to 549999994 Hz using CPU freq scaling its
    selecting incorrect parent which is not closest frequency.
    rpll_to_xpd            0    0    0  1599999984    0     0  50000      Y
        acpu0_mux          0    0    0  1599999984    0     0  50000      Y
            acpu0_div1     0    0    0   533333328    0     0  50000      Y
                acpu0      0    0    0   533333328    0     0  50000      Y
    
    Parent should remain same since 549999994 = 2199999978 / 4.
    
    So use __clk_mux_determine_rate_closest() generic function to calculate
    closest rate for mux clock. After this change its selecting correct
    parent and correct clock rate.
    apll1                  0    0    0  2199999978    0     0  50000      Y
        acpu0_mux          0    0    0  2199999978    0     0  50000      Y
            acpu0_div1     0    0    0   549999995    0     0  50000      Y
                acpu0      0    0    0   549999995    0     0  50000      Y
    
    Fixes: 3fde0e16 ("drivers: clk: Add ZynqMP clock driver")
    Signed-off-by: default avatarJay Buddhabhatti <jay.buddhabhatti@amd.com>
    Link: https://lore.kernel.org/r/20231129112916.23125-2-jay.buddhabhatti@amd.comSigned-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    b782921d
clk-mux-zynqmp.c 4.21 KB