• A.s. Dong's avatar
    clk: imx: add gatable clock divider support · 40468079
    A.s. Dong authored
    For dividers with zero indicating clock is disabled, instead of giving a
    warning each time like "clkx: Zero divisor and CLK_DIVIDER_ALLOW_ZERO not
    set" in exist code, we'd like to introduce enable/disable function for it.
    e.g.
    000b - Clock disabled
    001b - Divide by 1
    010b - Divide by 2
    ...
    
    Set rate when the clk is disabled will cache the rate request and only
    when the clk is enabled will the driver actually program the hardware to
    have the requested divider value. Similarly, when the clk is disabled we'll
    write a 0 there, but when the clk is enabled we'll restore whatever rate
    (divider) was chosen last.
    
    It does mean that recalc rate will be sort of odd, because when the clk is
    off it will return 0, and when the clk is on it will return the right rate.
    So to make things work, we'll need to return the cached rate in recalc rate
    when the clk is off and read the hardware when the clk is on.
    
    NOTE for the default off divider, the recalc rate will still return 0 as
    there's still no proper preset rate. Enable such divider will give user
    a reminder error message.
    
    Cc: Stephen Boyd <sboyd@codeaurora.org>
    Cc: Michael Turquette <mturquette@baylibre.com>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: default avatarDong Aisheng <aisheng.dong@nxp.com>
    [sboyd@kernel.org: Include clk.h for sparse warnings]
    Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    40468079
clk-divider-gate.c 5.42 KB