[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20181107093355.e4n3irrnkybqsjvc@pengutronix.de>
Date: Wed, 7 Nov 2018 10:33:55 +0100
From: Uwe Kleine-König
<u.kleine-koenig@...gutronix.de>
To: Vokáč Michal <Michal.Vokac@...ft.com>
Cc: Thierry Reding <thierry.reding@...il.com>,
Rob Herring <robh+dt@...nel.org>,
Mark Rutland <mark.rutland@....com>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"linux-pwm@...r.kernel.org" <linux-pwm@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Lukasz Majewski <l.majewski@...ess.pl>,
Fabio Estevam <fabio.estevam@....com>,
Lothar Waßmann <LW@...o-electronics.de>,
kernel@...gutronix.de
Subject: Re: [RCF PATCH,v2,2/2] pwm:
imx: Configure output to GPIO in disabled state
Hello Michal,
just to state it more explicitly, I think the following patch (not even
compile tested) is much preferable over your approach:
diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c
index 1d5242c9cde0..af88644b5efb 100644
--- a/drivers/pwm/pwm-imx.c
+++ b/drivers/pwm/pwm-imx.c
@@ -216,7 +216,14 @@ static int imx_pwm_apply_v2(struct pwm_chip *chip, struct pwm_device *pwm,
cr |= MX3_PWMCR_POUTC;
writel(cr, imx->mmio_base + MX3_PWMCR);
- } else if (cstate.enabled) {
+ } else if (cstate.enabled && state->polarity == PWM_POLARITY_NORMAL) {
+ /*
+ * When disabled in hardware the output pin goes to 0
+ * independant of the polarity setting. The expectation of some
+ * people however is that after disabling the pin goes to the
+ * inactive level which isn't given for an inversed pwm, so
+ * only disable for normal polarity.
+ */
writel(0, imx->mmio_base + MX3_PWMCR);
clk_disable_unprepare(imx->clk_per);
I think it solves most if not all problems you want to address with the
pinctrl stuff.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Powered by blists - more mailing lists