• Maxime Ripard's avatar
    clk: Fix phase init check · c3944ec8
    Maxime Ripard authored
    Commit 27608786 ("clk: Bail out when calculating phase fails during
    clk registration") introduced a check on error values at the time the
    clock is registered to bail out when such an error occurs. However, it
    doesn't check whether the returned value is positive which will happen
    if the driver returns a non-zero phase. Since a phase is usually a
    non-zero positive number this ends up returning something that isn't 0
    to the caller of __clk_core_init(), making most clks fail to register
    if they implement a phase clk op and return anything besides 0 for the
    phase.
    
    Fix this by returning the error if phase is less than zero or just
    return zero if the phase is a positive number.
    
    Fixes: 27608786 ("clk: Bail out when calculating phase fails during clk registration")
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://lkml.kernel.org/r/20200225134248.919889-1-maxime@cerno.techReported-by: default avatar"kernelci.org bot" <bot@kernelci.org>
    [sboyd@kernel.org: Reword commit text to provide clarity]
    Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    c3944ec8
clk.c 123 KB