]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
clk: pwm: Let .get_duty_cycle() return the real duty cycle
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Wed, 30 Apr 2025 09:57:46 +0000 (11:57 +0200)
committerStephen Boyd <sboyd@kernel.org>
Fri, 20 Jun 2025 01:09:54 +0000 (18:09 -0700)
pwm_get_state() returns the last requested pwm_state which might differ
from what the lowlevel PWM driver actually implemented. For the purpose
of .get_duty_cycle() the latter is the more interesting info, so use
that to determine the output parameter.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/3db08ded39c09aaa5004b3b8b1238111f199e819.1746006578.git.ukleinek@baylibre.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk-pwm.c

index bd4f21c22004621018e020c9deeffc31ed721280..429150bba8cf021b947b875f435f68ad637b07fe 100644 (file)
@@ -48,8 +48,11 @@ static int clk_pwm_get_duty_cycle(struct clk_hw *hw, struct clk_duty *duty)
 {
        struct clk_pwm *clk_pwm = to_clk_pwm(hw);
        struct pwm_state state;
+       int ret;
 
-       pwm_get_state(clk_pwm->pwm, &state);
+       ret = pwm_get_state_hw(clk_pwm->pwm, &state);
+       if (ret)
+               return ret;
 
        duty->num = state.duty_cycle;
        duty->den = state.period;