• Maxime Ripard's avatar
    clk: Always set the rate on clk_set_range_rate · c80ac50c
    Maxime Ripard authored
    When we change a clock minimum or maximum using clk_set_rate_range(),
    clk_set_min_rate() or clk_set_max_rate(), the current code will only
    trigger a new rate change if the rate is outside of the new boundaries.
    
    However, a clock driver might want to always keep the clock rate to
    one of its boundary, for example the minimum to keep the power
    consumption as low as possible.
    
    Since they don't always get called though, clock providers don't have the
    opportunity to implement this behaviour.
    
    Let's trigger a clk_set_rate() on the previous requested rate every time
    clk_set_rate_range() is called. That way, providers that care about the
    new boundaries have a chance to adjust the rate, while providers that
    don't care about those new boundaries will return the same rate than
    before, which will be ignored by clk_set_rate() and won't result in a
    new rate change.
    Suggested-by: default avatarStephen Boyd <sboyd@kernel.org>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://lore.kernel.org/r/20220225143534.405820-7-maxime@cerno.techSigned-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    c80ac50c
clk.c 131 KB