• Uwe Kleine-König's avatar
    pwm: imx27: Ensure clocks being on iff the PWM is on · 2cb5cd90
    Uwe Kleine-König authored
    Up to now the .probe() function didn't enable clocks and relied on the
    core to call the .get_state() callback to have the clock running. The
    latter enabled the needed clocks and kept them running if the PWM wass
    enabled.
    
    This only works correctly if the .get_state() callback is called exactly
    once and this single call happens before unused clocks are disabled by
    the clk core.
    
    The former wasn't true for a short period while commit 01ccf903
    ("pwm: Let pwm_get_state() return the last implemented state") applied
    and not reverted yet and might become wrong in the future.
    
    The latter isn't true any more since commit cfc4c189 ("pwm: Read
    initial hardware state at request time") which results in a running PWM
    being stopped at boot time if for example the consumer lives in a kernel
    module that is only loaded after the clk core disabled unused clocks.
    
    So ensure .probe() is left with the clocks on if the PWM is running and
    .get_state() disables everything it enabled.
    Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
    2cb5cd90
pwm-imx27.c 9.27 KB