[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200228095651.32464-5-lokeshvutla@ti.com>
Date: Fri, 28 Feb 2020 15:26:49 +0530
From: Lokesh Vutla <lokeshvutla@...com>
To: Thierry Reding <thierry.reding@...il.com>,
Uwe Kleine-König
<u.kleine-koenig@...gutronix.de>
CC: Tony Lindgren <tony@...mide.com>,
Linux OMAP Mailing List <linux-omap@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <linux-pwm@...r.kernel.org>,
Sekhar Nori <nsekhar@...com>, Vignesh R <vigneshr@...com>,
Lokesh Vutla <lokeshvutla@...com>
Subject: [PATCH v2 4/6] pwm: omap-dmtimer: Fix pwm disabling sequence
pwm_omap_dmtimer_disable() calls .stop callback which abruptly stops the
timer counter. This doesn't complete the current pwm cycle and
immediately disables the pwm. Instead disable the auto reload
functionality which allows to complete the current pwm cycle and then
disables the timer.
Signed-off-by: Lokesh Vutla <lokeshvutla@...com>
---
drivers/pwm/pwm-omap-dmtimer.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
index bc338619232d..89b3c25d02b8 100644
--- a/drivers/pwm/pwm-omap-dmtimer.c
+++ b/drivers/pwm/pwm-omap-dmtimer.c
@@ -93,8 +93,16 @@ static void pwm_omap_dmtimer_disable(struct pwm_chip *chip,
{
struct pwm_omap_dmtimer_chip *omap = to_pwm_omap_dmtimer_chip(chip);
+ /*
+ * Disable auto reload so that the current cycle gets completed and
+ * then the counter stops.
+ */
mutex_lock(&omap->mutex);
- omap->pdata->stop(omap->dm_timer);
+ omap->pdata->set_pwm(omap->dm_timer,
+ pwm_get_polarity(pwm) == PWM_POLARITY_INVERSED,
+ true, OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE,
+ false);
+
mutex_unlock(&omap->mutex);
}
--
2.23.0
Powered by blists - more mailing lists