linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] pwm: pca9685: fix period change with same duty cycle
@ 2016-12-13 15:52 Clemens Gruber
  2016-12-13 15:52 ` [PATCH 2/2] pwm: pca9685: fix prescaler initialization Clemens Gruber
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Clemens Gruber @ 2016-12-13 15:52 UTC (permalink / raw)
  To: linux-pwm
  Cc: Thierry Reding, linux-kernel, linux-stable, Florian Vaussard,
	Clemens Gruber

When first implementing support for changing the output frequency, an
optimization was added to continue the PWM after changing the prescaler
without having to reprogram the ON and OFF registers for the duty cycle,
in case the duty cycle stayed the same.
This was flawed, because we compared the absolute value of the duty
cycle in nanoseconds instead of the ratio to the period.

Fix the problem by removing the shortcut.

Fixes: 01ec8472009c9 ("pwm-pca9685: Support changing the output
frequency")
Cc: <stable@vger.kernel.org> # v4.3+
Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com>
---
 drivers/pwm/pwm-pca9685.c | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/drivers/pwm/pwm-pca9685.c b/drivers/pwm/pwm-pca9685.c
index 117fccf..01a6a83 100644
--- a/drivers/pwm/pwm-pca9685.c
+++ b/drivers/pwm/pwm-pca9685.c
@@ -65,7 +65,6 @@
 #define PCA9685_MAXCHAN		0x10
 
 #define LED_FULL		(1 << 4)
-#define MODE1_RESTART		(1 << 7)
 #define MODE1_SLEEP		(1 << 4)
 #define MODE2_INVRT		(1 << 4)
 #define MODE2_OUTDRV		(1 << 2)
@@ -117,16 +116,6 @@ static int pca9685_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
 			udelay(500);
 
 			pca->period_ns = period_ns;
-
-			/*
-			 * If the duty cycle did not change, restart PWM with
-			 * the same duty cycle to period ratio and return.
-			 */
-			if (duty_ns == pca->duty_ns) {
-				regmap_update_bits(pca->regmap, PCA9685_MODE1,
-						   MODE1_RESTART, 0x1);
-				return 0;
-			}
 		} else {
 			dev_err(chip->dev,
 				"prescaler not set: period out of bounds!\n");
-- 
2.10.2

^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2017-01-25 18:05 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-12-13 15:52 [PATCH 1/2] pwm: pca9685: fix period change with same duty cycle Clemens Gruber
2016-12-13 15:52 ` [PATCH 2/2] pwm: pca9685: fix prescaler initialization Clemens Gruber
2017-01-18 10:57   ` Thierry Reding
2017-01-18 11:09     ` Andy Shevchenko
2017-01-18 13:53       ` Clemens Gruber
2017-01-18 14:01         ` Andy Shevchenko
2017-01-18 14:25           ` Clemens Gruber
2017-01-19 12:34             ` Andy Shevchenko
2017-01-19 14:49               ` Clemens Gruber
2017-01-19 16:10                 ` Andy Shevchenko
2017-01-19 16:52                   ` Clemens Gruber
2017-01-19 16:58                     ` Andy Shevchenko
2017-01-20  6:39                     ` Thierry Reding
2017-01-20  9:58                       ` Andy Shevchenko
2017-01-25 18:05                       ` Clemens Gruber
2017-01-18 10:56 ` [PATCH 1/2] pwm: pca9685: fix period change with same duty cycle Thierry Reding
2017-01-18 11:09   ` Mika Westerberg
2017-01-20  6:44 ` Thierry Reding

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).