]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
pwm: stm32: Emit debug output also for corner cases of the rounding callbacks
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Sat, 5 Apr 2025 09:27:15 +0000 (11:27 +0200)
committerUwe Kleine-König <ukleinek@kernel.org>
Mon, 14 Apr 2025 06:03:16 +0000 (08:03 +0200)
When you're interested in the actual register settings the driver
chooses or interprets you want to see them also for calls that hit
corner cases.

Make sure that all calls to stm32_pwm_round_waveform_tohw() and
stm32_pwm_round_waveform_fromhw() emit the debug message about the
register settings.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://lore.kernel.org/r/fe154e79319da5ff4159cdc71201a9d3b395e491.1743844730.git.u.kleine-koenig@baylibre.com
[ukleinek: widen scope of rate in stm32_pwm_round_waveform_fromhw() to fix FTBFS]
Signed-off-by: Uwe Kleine-König <ukleinek@kernel.org>
drivers/pwm/pwm-stm32.c

index c6625f51a19912e5e8622a171e745d652a37da1e..4b148f0afeb99f783a2d38fab9e73cf0747de214 100644 (file)
@@ -180,11 +180,11 @@ static int stm32_pwm_round_waveform_tohw(struct pwm_chip *chip,
 
        wfhw->ccr = min_t(u64, ccr, wfhw->arr + 1);
 
+out:
        dev_dbg(&chip->dev, "pwm#%u: %lld/%lld [+%lld] @%lu -> CCER: %08x, PSC: %08x, ARR: %08x, CCR: %08x\n",
                pwm->hwpwm, wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns,
                rate, wfhw->ccer, wfhw->psc, wfhw->arr, wfhw->ccr);
 
-out:
        clk_disable(priv->clk);
 
        return ret;
@@ -213,10 +213,10 @@ static int stm32_pwm_round_waveform_fromhw(struct pwm_chip *chip,
 {
        const struct stm32_pwm_waveform *wfhw = _wfhw;
        struct stm32_pwm *priv = to_stm32_pwm_dev(chip);
+       unsigned long rate = clk_get_rate(priv->clk);
        unsigned int ch = pwm->hwpwm;
 
        if (wfhw->ccer & TIM_CCER_CCxE(ch + 1)) {
-               unsigned long rate = clk_get_rate(priv->clk);
                u64 ccr_ns;
 
                /* The result doesn't overflow for rate >= 15259 */
@@ -236,17 +236,16 @@ static int stm32_pwm_round_waveform_fromhw(struct pwm_chip *chip,
                        wf->duty_length_ns = ccr_ns;
                        wf->duty_offset_ns = 0;
                }
-
-               dev_dbg(&chip->dev, "pwm#%u: CCER: %08x, PSC: %08x, ARR: %08x, CCR: %08x @%lu -> %lld/%lld [+%lld]\n",
-                       pwm->hwpwm, wfhw->ccer, wfhw->psc, wfhw->arr, wfhw->ccr, rate,
-                       wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns);
-
        } else {
                *wf = (struct pwm_waveform){
                        .period_length_ns = 0,
                };
        }
 
+       dev_dbg(&chip->dev, "pwm#%u: CCER: %08x, PSC: %08x, ARR: %08x, CCR: %08x @%lu -> %lld/%lld [+%lld]\n",
+               pwm->hwpwm, wfhw->ccer, wfhw->psc, wfhw->arr, wfhw->ccr, rate,
+               wf->duty_length_ns, wf->period_length_ns, wf->duty_offset_ns);
+
        return 0;
 }