linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>,
	devicetree@vger.kernel.org, linux-pwm@vger.kernel.org,
	Paul Barker <pbarker@konsulko.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Marcel Ziswiler <marcel.ziswiler@toradex.com>,
	Igor Opaniuk <igor.opaniuk@toradex.com>,
	Philippe Schenker <philippe.schenker@toradex.com>,
	Rob Herring <robh+dt@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 2/7] dt-bindings: pwm: document the PWM polarity flag
Date: Thu, 19 Mar 2020 00:19:10 +0100	[thread overview]
Message-ID: <20200318231910.GA2885069@ulmo> (raw)
In-Reply-To: <20200317213056.futfiwn4qgr2njye@pengutronix.de>

[-- Attachment #1: Type: text/plain, Size: 3179 bytes --]

On Tue, Mar 17, 2020 at 10:30:56PM +0100, Uwe Kleine-König wrote:
> Hello Thierry,
> 
> On Tue, Mar 17, 2020 at 06:43:44PM +0100, Thierry Reding wrote:
> > On Tue, Mar 17, 2020 at 02:32:26PM +0200, Oleksandr Suvorov wrote:
> > > Add the description of PWM_POLARITY_NORMAL flag.
> > > 
> > > Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
> > > ---
> > > 
> > >  Documentation/devicetree/bindings/pwm/pwm.txt | 1 +
> > >  1 file changed, 1 insertion(+)
> > > 
> > > diff --git a/Documentation/devicetree/bindings/pwm/pwm.txt b/Documentation/devicetree/bindings/pwm/pwm.txt
> > > index 084886bd721e..440c6b9a6a4e 100644
> > > --- a/Documentation/devicetree/bindings/pwm/pwm.txt
> > > +++ b/Documentation/devicetree/bindings/pwm/pwm.txt
> > > @@ -46,6 +46,7 @@ period in nanoseconds.
> > >  Optionally, the pwm-specifier can encode a number of flags (defined in
> > >  <dt-bindings/pwm/pwm.h>) in a third cell:
> > >  - PWM_POLARITY_INVERTED: invert the PWM signal polarity
> > > +- PWM_POLARITY_NORMAL: don't invert the PWM signal polarity
> > 
> > This doesn't make sense. PWM_POLARITY_NORMAL is not part of the DT ABI.
> 
> "is not part of the DT ABI" is hardly a good reason. If it's sensible to
> be used, it is sensible to define it.

That's exactly it. It's not sensible at all to use it. If you define it
here it means people are allowed to do stuff like this:

	pwms = <&pwm 1234 PWM_POLARITY_INVERTED | PWM_POLARITY_NORMAL>;

which doesn't make sense. What's more, it impossible for the code to
even notice that you're being silly because | PWM_POLARITY_NORMAL is
just | 0 and that's just a nop.

Thierry

> > The third cell of the specifier is a bitmask of flags.
> > 
> > PWM_POLARITY_NORMAL is an enumeration value that evaluates to 0, so it
> > makes absolutely no sense as a flag.
> 
> Using 0 or PWM_POLARITY_NORMAL doesn't have an effect on the compiled
> device tree, that's true. But having the term PWM_POLARITY_NORMAL (in
> contrast to a plain 0) in a dts file is useful in my eyes for human
> readers.

Yes, I suppose that's true.

> > PWM signals are considered to be "normal" by default, so no flag is
> > necessary to specify that.
> 
> GPIOs are considered to be active high by default, still there is
> GPIO_ACTIVE_HIGH (which also evaluates to 0). Also there is
> IRQ_TYPE_NONE.

I'm aware of these. They carry the same risks as I mentioned above,
though. You can easily make mistakes that no software will be able to
detect. If you make a GPIO GPIO_ACTIVE_HIGH | GPIO_ACTIVE_LOW, it
becomes really confusing as to what that means. It really means that the
GPIO will be active-low because GPIO_ACTIVE_HIGH doesn't do anything.
But just reading that may make you think that perhaps HIGH is better
(because, well, it's high, or perhaps because it is listed first).
Having both may also be interpreted as "don't care".

In my opinion things become much easier when you don't have any of the
alternatives. If you don't specify PWM_POLARITY_INVERTED, well, it's
just not going to be inverted, it's going to be normal. No need to be
extra verbose about that.

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2020-03-18 23:19 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200317123231.2843297-1-oleksandr.suvorov@toradex.com>
2020-03-17 12:32 ` [RFC PATCH 1/7] pwm: rename the PWM_POLARITY_INVERSED enum Oleksandr Suvorov
2020-03-17 13:34   ` Paul Barker
2020-03-17 21:32     ` Uwe Kleine-König
2020-03-17 16:26   ` Claudiu.Beznea
2020-03-17 16:39     ` Oleksandr Suvorov
2020-03-17 17:40   ` Thierry Reding
2020-03-17 21:00     ` Uwe Kleine-König
2020-03-18 22:59       ` Thierry Reding
2020-03-19  6:50         ` Uwe Kleine-König
2020-03-19 16:37           ` Thierry Reding
2020-03-19 17:30             ` Uwe Kleine-König
2020-03-19 11:40         ` Oleksandr Suvorov
2020-03-19 12:10           ` Uwe Kleine-König
2020-03-19 12:57             ` Oleksandr Suvorov
2020-03-19 16:44           ` Thierry Reding
2020-03-18 11:47     ` Oleksandr Suvorov
2020-03-17 12:32 ` [RFC PATCH 2/7] dt-bindings: pwm: document the PWM polarity flag Oleksandr Suvorov
2020-03-17 17:43   ` Thierry Reding
2020-03-17 21:30     ` Uwe Kleine-König
2020-03-18 23:05       ` Thierry Reding
2020-03-19  7:05         ` Uwe Kleine-König
2020-03-19 17:04           ` Thierry Reding
2020-03-30 21:00             ` Rob Herring
2020-03-18 23:19       ` Thierry Reding [this message]
2020-03-17 22:58   ` Laurent Pinchart
2020-03-17 12:32 ` [RFC PATCH 3/7] dt-bindings: pwm: add normal " Oleksandr Suvorov
2020-03-17 13:36   ` Paul Barker
2020-03-17 14:06     ` Oleksandr Suvorov
2020-03-17 21:36   ` Uwe Kleine-König
2020-03-17 22:56   ` Laurent Pinchart
2020-03-18  9:20     ` Uwe Kleine-König
2020-03-17 12:32 ` [RFC PATCH 4/7] dt-bindings: pwm: add description of PWM polarity Oleksandr Suvorov
2020-03-17 23:01   ` Laurent Pinchart
2020-03-18 11:37     ` Oleksandr Suvorov
2020-03-18 12:29       ` Laurent Pinchart
2020-03-18 12:36         ` Oleksandr Suvorov
2020-03-17 12:32 ` [RFC PATCH 5/7] pwm: replace polarity enum with macros Oleksandr Suvorov
2020-03-17 12:32 ` [RFC PATCH 6/7] arm64: dts: pwm: replace polarity constant with macro Oleksandr Suvorov
2020-03-20 10:03   ` Krzysztof Kozlowski
2020-03-17 12:32 ` [RFC PATCH 7/7] arm: " Oleksandr Suvorov
2020-03-20 10:02   ` Krzysztof Kozlowski

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=20200318231910.GA2885069@ulmo \
    --to=thierry.reding@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=igor.opaniuk@toradex.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=marcel.ziswiler@toradex.com \
    --cc=oleksandr.suvorov@toradex.com \
    --cc=pbarker@konsulko.com \
    --cc=philippe.schenker@toradex.com \
    --cc=robh+dt@kernel.org \
    --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 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).