Searched hist:"2 cb5cd90" (Results 1 – 1 of 1) sorted by relevance
/openbmc/linux/drivers/pwm/ |
H A D | pwm-imx27.c | 2cb5cd90 Mon Feb 10 15:22:40 CST 2020 Uwe Kleine-König <u.kleine-koenig@pengutronix.de> pwm: imx27: Ensure clocks being on iff the PWM is on
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 01ccf903edd6 ("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 cfc4c189bc70 ("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: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Thierry Reding <thierry.reding@gmail.com> 2cb5cd90 Mon Feb 10 15:22:40 CST 2020 Uwe Kleine-König <u.kleine-koenig@pengutronix.de> pwm: imx27: Ensure clocks being on iff the PWM is on 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 01ccf903edd6 ("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 cfc4c189bc70 ("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: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
|