From: Lorenz Brun <lorenz@brun.one>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Thierry Reding <thierry.reding@gmail.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: Re: [PATCH] pwm: mediatek: support inverted polarity
Date: Fri, 03 Mar 2023 23:23:07 +0100 [thread overview]
Message-ID: <J6UYQR.PWF59DFFYYO71@brun.one> (raw)
In-Reply-To: <20230303211725.7wtxdxjqpxlrp77b@pengutronix.de>
On Fri, Mar 3 2023 at 22:17:25 +01:00:00, Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> wrote:
> On Fri, Mar 03, 2023 at 09:58:21PM +0100, Lorenz Brun wrote:
>> According to the MT7986 Reference Manual the Mediatek PWM
>> controller
>> doesn't appear to have support for inverted polarity.
>>
>> This implements the same solution as in pwm-meson and just inverts
>> the
>> duty cycle instead, which results in the same outcome.
>
> This idea is broken. This was recently discussed on the linux-pwm list
> and I hope will be fixed soon. See
> https://lore.kernel.org/linux-pwm/20230228093911.bh2sbp4tyfir2z5g@pengutronix.de/T/#meda75ffbd4ef2048991ea2cd091c0c14b1bb09c2
>
Is the issue here emulating PWM_POLARITY_INVERSED by inverting the
period or the overflow issues?
This driver currently rejects PWM_POLARITY_INVERSED, but the problem is
that I have a board which inverts the output of the PWM peripheral
(low-side MOSFET for higher-voltage open-drain output), thus I need to
set the PWM node to output an inverted signal so that the final
open-drain output behaves correctly as the signal has been inverted
twice now.
In my specific case this logic could also be added to pwm-fan, but this
would lead to more complexity there as this type of circuit is
generally handled by the PWM driver.
> So this patch won't be accepted, still pointing out a style problem
> below.
>
>> Signed-off-by: Lorenz Brun <lorenz@brun.one>
>> ---
>> drivers/pwm/pwm-mediatek.c | 13 +++++++++----
>> 1 file changed, 9 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c
>> index 5b5eeaff35da..6f4a54c8299f 100644
>> --- a/drivers/pwm/pwm-mediatek.c
>> +++ b/drivers/pwm/pwm-mediatek.c
>> @@ -202,9 +202,7 @@ static int pwm_mediatek_apply(struct pwm_chip
>> *chip, struct pwm_device *pwm,
>> const struct pwm_state *state)
>> {
>> int err;
>> -
>> - if (state->polarity != PWM_POLARITY_NORMAL)
>> - return -EINVAL;
>> + u64 duty_cycle;
>>
>> if (!state->enabled) {
>> if (pwm->state.enabled)
>> @@ -213,7 +211,14 @@ static int pwm_mediatek_apply(struct pwm_chip
>> *chip, struct pwm_device *pwm,
>> return 0;
>> }
>>
>> - err = pwm_mediatek_config(pwm->chip, pwm, state->duty_cycle,
>> state->period);
>> + // According to the MT7986 Reference Manual the peripheral does
>> not
>> + // appear to have the capability to invert the output. Instead
>> just
>> + // invert the duty cycle.
>
> Wrong commenting style, please stick to C-style comments (/* ... */)
I can fix that if I end up submitting a V2 of this patch, but this
didn't get picked up by checkpatch.
>
>> + duty_cycle = state->duty_cycle;
>> + if (state->polarity == PWM_POLARITY_INVERSED)
>> + duty_cycle = state->period - state->duty_cycle;
>> +
>> + err = pwm_mediatek_config(pwm->chip, pwm, duty_cycle,
>> state->period);
>> if (err)
>> return err;
>
> Best regards
> Uwe
>
> --
> Pengutronix e.K. | Uwe Kleine-König
> |
> Industrial Linux Solutions |
> https://www.pengutronix.de/ |
Regards,
Lorenz
WARNING: multiple messages have this Message-ID (diff)
From: Lorenz Brun <lorenz@brun.one>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Thierry Reding <thierry.reding@gmail.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org
Subject: Re: [PATCH] pwm: mediatek: support inverted polarity
Date: Fri, 03 Mar 2023 23:23:07 +0100 [thread overview]
Message-ID: <J6UYQR.PWF59DFFYYO71@brun.one> (raw)
In-Reply-To: <20230303211725.7wtxdxjqpxlrp77b@pengutronix.de>
On Fri, Mar 3 2023 at 22:17:25 +01:00:00, Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> wrote:
> On Fri, Mar 03, 2023 at 09:58:21PM +0100, Lorenz Brun wrote:
>> According to the MT7986 Reference Manual the Mediatek PWM
>> controller
>> doesn't appear to have support for inverted polarity.
>>
>> This implements the same solution as in pwm-meson and just inverts
>> the
>> duty cycle instead, which results in the same outcome.
>
> This idea is broken. This was recently discussed on the linux-pwm list
> and I hope will be fixed soon. See
> https://lore.kernel.org/linux-pwm/20230228093911.bh2sbp4tyfir2z5g@pengutronix.de/T/#meda75ffbd4ef2048991ea2cd091c0c14b1bb09c2
>
Is the issue here emulating PWM_POLARITY_INVERSED by inverting the
period or the overflow issues?
This driver currently rejects PWM_POLARITY_INVERSED, but the problem is
that I have a board which inverts the output of the PWM peripheral
(low-side MOSFET for higher-voltage open-drain output), thus I need to
set the PWM node to output an inverted signal so that the final
open-drain output behaves correctly as the signal has been inverted
twice now.
In my specific case this logic could also be added to pwm-fan, but this
would lead to more complexity there as this type of circuit is
generally handled by the PWM driver.
> So this patch won't be accepted, still pointing out a style problem
> below.
>
>> Signed-off-by: Lorenz Brun <lorenz@brun.one>
>> ---
>> drivers/pwm/pwm-mediatek.c | 13 +++++++++----
>> 1 file changed, 9 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c
>> index 5b5eeaff35da..6f4a54c8299f 100644
>> --- a/drivers/pwm/pwm-mediatek.c
>> +++ b/drivers/pwm/pwm-mediatek.c
>> @@ -202,9 +202,7 @@ static int pwm_mediatek_apply(struct pwm_chip
>> *chip, struct pwm_device *pwm,
>> const struct pwm_state *state)
>> {
>> int err;
>> -
>> - if (state->polarity != PWM_POLARITY_NORMAL)
>> - return -EINVAL;
>> + u64 duty_cycle;
>>
>> if (!state->enabled) {
>> if (pwm->state.enabled)
>> @@ -213,7 +211,14 @@ static int pwm_mediatek_apply(struct pwm_chip
>> *chip, struct pwm_device *pwm,
>> return 0;
>> }
>>
>> - err = pwm_mediatek_config(pwm->chip, pwm, state->duty_cycle,
>> state->period);
>> + // According to the MT7986 Reference Manual the peripheral does
>> not
>> + // appear to have the capability to invert the output. Instead
>> just
>> + // invert the duty cycle.
>
> Wrong commenting style, please stick to C-style comments (/* ... */)
I can fix that if I end up submitting a V2 of this patch, but this
didn't get picked up by checkpatch.
>
>> + duty_cycle = state->duty_cycle;
>> + if (state->polarity == PWM_POLARITY_INVERSED)
>> + duty_cycle = state->period - state->duty_cycle;
>> +
>> + err = pwm_mediatek_config(pwm->chip, pwm, duty_cycle,
>> state->period);
>> if (err)
>> return err;
>
> Best regards
> Uwe
>
> --
> Pengutronix e.K. | Uwe Kleine-König
> |
> Industrial Linux Solutions |
> https://www.pengutronix.de/ |
Regards,
Lorenz
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-03-03 22:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-03 20:58 [PATCH] pwm: mediatek: support inverted polarity Lorenz Brun
2023-03-03 20:58 ` Lorenz Brun
2023-03-03 21:17 ` Uwe Kleine-König
2023-03-03 21:17 ` Uwe Kleine-König
2023-03-03 22:23 ` Lorenz Brun [this message]
2023-03-03 22:23 ` Lorenz Brun
2023-03-04 10:18 ` Uwe Kleine-König
2023-03-04 10:18 ` Uwe Kleine-König
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=J6UYQR.PWF59DFFYYO71@brun.one \
--to=lorenz@brun.one \
--cc=angelogioacchino.delregno@collabora.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pwm@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=thierry.reding@gmail.com \
--cc=u.kleine-koenig@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.