On Thu, Sep 09, 2021 at 12:10:42PM +0200, Mårten Lindahl wrote: > When duty-cycle is at full level (100%), the TCNTn and TCMPn registers > needs to be flushed in order to disable the signal. The PWM manual does > not say anything about this, but states that only clearing the TCON > auto-reload bit should be needed, and this seems to be true when the PWM > duty-cycle is not at full level. This can be observed on an Axis > ARTPEC-8, by running: > > echo > pwm/period > echo > pwm/duty_cycle > echo 1 > pwm/enable > echo 0 > pwm/enable > > Since the TCNTn and TCMPn registers are activated when enabling the PWM > (setting TCON auto-reload bit), and are not touched when disabling the > PWM, the double buffered auto-reload function seems to be still active. > Lowering duty-cycle, and restoring it again in between the enabling and > disabling, makes the disable work since it triggers a reload of the > TCNTn and TCMPn registers. > > Fix this by securing a reload of the TCNTn and TCMPn registers when > disabling the PWM and having a full duty-cycle. > > Signed-off-by: Mårten Lindahl Acked-by: Uwe Kleine-König Thanks Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ |