Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1400701
| Path | csiph.com!news.freedyn.net!aioe.org!gothmog.csi.it!bofh.it!news.nic.it!robomod |
|---|---|
| From | Guillermo Rodriguez <guille.rodriguez@gmail.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH] pwm: atmel: Fix disabling of PWM channels |
| Date | Fri, 13 May 2016 13:20:02 +0200 |
| Message-ID | <ryjiq-2bj-13@gated-at.bofh.it> (permalink) |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=u5JwR+krhaCgCphdc069W0nIkqaAYN+xrdD+EuUj600=; b=fH7JWS82oFK9Wv7/4PzwRaEvowlGpLN9lqemr+iaQY30+0xhlotmQxRt7LOoSUbUPj AW1Go8bPFuGffba6EIaT2rAXgtO+szOQ9jjZ9Bkns22zrPpzg4JqrdXBQWkJqEsNZEV+ sNxuEZd8uHhQheqdZ2iHjipvge6rd2WCdSQvbjve9zudoMJuchr94y5e9nY+d/MSc3hd 5SM3YDKg+7W4WXskGmQ62gx7GhBeP3vCkk8zEf0x0ABM58yih6js+jd9HK0bsIgqR2Fh jGRDwCa/dBADpcM0+jsVF/FcZQchOSU7es9AMHp4nmd20aDOnJIzKynT1WtsfxIjM9x4 7Y2w== |
| X-Google-Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=u5JwR+krhaCgCphdc069W0nIkqaAYN+xrdD+EuUj600=; b=bBvYQCkqpuhle62dmqUR8/FYdwXI2j1QcA947+OhHocIeo4TwvWuzeDvU+4JKr3Yde h+aRxoDeBH28uxWxzFzKlAaHm4tLivAL/wbpGkh/FDS4tekzqZUdbC2NokPdUUTkjhb5 NQTvMJqB+uDHf+b1sb1ua3b3Fw+ueUrDJ5lpW5VYg8W8y3CTAhAGEYl3jH+32wLO+bMv p/CML5LpfuhzkMlX11iNOhwCGE+Rl7S/IIj1UM8VexxzfPf6GMSZNmQmPJLb41n+2xyh WQp5thbHLtWKdaY+l2GBNYdzXPsLkkNHNTqvX3ol7j1Vyercb65EvdvQuoYWQWkIl9Uk cqfw== |
| X-Gm-Message-State | AOPr4FVQxhpth3Wo2DCWz6f1TMiSeH+ZqIQg4Kr4lBTxd4ECOSODdIoa4/K7awGTOAFwMw== |
| X-Received | by 10.194.248.135 with SMTP id ym7mr15239241wjc.174.1463137839274; Fri, 13 May 2016 04:10:39 -0700 (PDT) |
| X-Mailer | git-send-email 1.7.9.5 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 36 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Guillermo Rodriguez <guille.rodriguez@gmail.com> |
| X-Original-Date | Fri, 13 May 2016 13:09:37 +0200 |
| X-Original-Message-ID | <1463137777-27103-1-git-send-email-guille.rodriguez@gmail.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1400701 |
Show key headers only | View raw
When disabling a PWM channel, the PWM clock was being stopped
immediately after writing to PWM_DIS. As a result, the disabling
of the PWM channel did not complete properly, and the PWM output
might be left at the wrong level.
Fix this by waiting for the channel to be effectively disabled
(by checking the PWM_SR register) before disabling the clock.
Signed-off-by: Guillermo Rodriguez <guille.rodriguez@gmail.com>
---
drivers/pwm/pwm-atmel.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/pwm/pwm-atmel.c b/drivers/pwm/pwm-atmel.c
index 0e4bd4e..a714434 100644
--- a/drivers/pwm/pwm-atmel.c
+++ b/drivers/pwm/pwm-atmel.c
@@ -271,6 +271,16 @@ static void atmel_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
mutex_unlock(&atmel_pwm->isr_lock);
atmel_pwm_writel(atmel_pwm, PWM_DIS, 1 << pwm->hwpwm);
+ /*
+ * Wait for the PWM channel disable operation to be effective before
+ * stopping the clock.
+ */
+ timeout = jiffies + 2 * HZ;
+ while ((atmel_pwm_readl(atmel_pwm, PWM_SR)& (1 << pwm->hwpwm)) &&
+ time_before(jiffies, timeout)) {
+ usleep_range(10, 100);
+ }
+
clk_disable(atmel_pwm->clk);
}
--
1.7.9.5
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH] pwm: atmel: Fix disabling of PWM channels Guillermo Rodriguez <guille.rodriguez@gmail.com> - 2016-05-13 13:20 +0200
csiph-web