devicetree.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: Clemens Gruber <clemens.gruber@pqgruber.com>,
	linux-pwm@vger.kernel.org,
	Sven Van Asbroeck <TheSven73@gmail.com>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v7 5/8] pwm: core: Support new PWM_STAGGERING_ALLOWED flag
Date: Fri, 9 Apr 2021 13:25:36 +0200	[thread overview]
Message-ID: <YHA5sPuZmbSLU3aM@orome.fritz.box> (raw)
In-Reply-To: <20210408173637.w26njwystfuyrgan@pengutronix.de>

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

On Thu, Apr 08, 2021 at 07:36:37PM +0200, Uwe Kleine-König wrote:
> On Thu, Apr 08, 2021 at 05:51:36PM +0200, Clemens Gruber wrote:
> > On Thu, Apr 08, 2021 at 02:50:40PM +0200, Thierry Reding wrote:
> > > Yes, I think that's basically what this is saying. I think we're perhaps
> > > getting hung up on the terminology here. PWM_STAGGERING_ALLOWED gives
> > > the impression that we're dealing with some provider-specific feature,
> > > whereas what we really want to express is that the PWM doesn't care
> > > exactly when the active cycle starts and based on that a provider that
> > > can support it may optimize the EMI behavior.
> > > 
> > > Maybe we can find a better name for this? Ultimately what this means is
> > > that the consumer is primarily interested in the power output of the PWM
> > > rather than the exact shape of the signal. So perhaps something like
> > > PWM_USAGE_POWER would be more appropriate.
> > 
> > Yes, although it would then no longer be obvious that this feature leads
> > to improved EMI behavior, as long as we mention that in the docs, I
> > think it's a good idea
> > 
> > Maybe document it as follows?
> > PWM_USAGE_POWER - Allow the driver to delay the start of the cycle
> > for EMI improvements, as long as the power output stays the same
> 
> I don't like both names, because for someone who is only halfway into
> PWM stuff it is not understandable. Maybe ALLOW_PHASE_SHIFT?

Heh... how's that any more understandable?

> When a consumer is only interested in the power output than
> 
> 	.period = 20
> 	.duty_cycle = 5
> 
> would also be an allowed response for the request
> 
> 	.period = 200
> 	.duty_cycle = 50
> 
> and this is not what is in the focus here.

Actually, that's *exactly* what's important here. From a consumer point
of view the output power is the key in this case. The specifier is a
description of a particular PWM in the consumer context. And the
consumer not going to care what exactly the PWM controller might end up
configuring to achieve best results. If the controller allows the phase
shift to be changed and the constraints allow it, then that's great, but
it isn't something that the consumer has to know if all it wants is that
the power output is as requested.

Put another way, the more generically we can describe the constraints or
use cases, the more flexibility we get for drivers to fulfill those
constraints. For example one controller might support phase shifting and
use that for PWM_USAGE_POWER for better EMI behaviour. But another PWM
controller may not support it. But it could perhaps want to optimize the
PWM signal by reversing the polarity of one channel or whatever other
mechanism there may be.

If we add a flag such as ALLOW_PHASE_SHIFT, then only controllers that
support programmable phase shift will be able to support this. If some
other mechanism can also be used to support "equivalent power" use
cases, that would have to be described as some other flag, which has
essentially the same meaning. So you can get into a situation where you
have multiple flags used for the same thing.

Thierry

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

  parent reply	other threads:[~2021-04-09 11:25 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-06 16:41 [PATCH v7 1/8] pwm: pca9685: Switch to atomic API Clemens Gruber
2021-04-06 16:41 ` [PATCH v7 2/8] pwm: pca9685: Support hardware readout Clemens Gruber
2021-04-07  5:31   ` Uwe Kleine-König
2021-04-07  7:33     ` Clemens Gruber
2021-04-07  9:09       ` Uwe Kleine-König
2021-04-07  9:53         ` Clemens Gruber
2021-04-06 16:41 ` [PATCH v7 3/8] pwm: pca9685: Improve runtime PM behavior Clemens Gruber
2021-04-09 13:03   ` Thierry Reding
2021-04-09 16:08     ` Clemens Gruber
2021-04-06 16:41 ` [PATCH v7 4/8] dt-bindings: pwm: Support new PWM_STAGGERING_ALLOWED flag Clemens Gruber
2021-04-07  5:33   ` Uwe Kleine-König
2021-04-09 12:27     ` Thierry Reding
2021-04-10 14:01       ` Uwe Kleine-König
2021-04-10 14:02   ` Uwe Kleine-König
2021-04-06 16:41 ` [PATCH v7 5/8] pwm: core: " Clemens Gruber
2021-04-07  5:46   ` Uwe Kleine-König
2021-04-07 20:21     ` Clemens Gruber
2021-04-07 21:34       ` Uwe Kleine-König
2021-04-08 12:50         ` Thierry Reding
2021-04-08 15:51           ` Clemens Gruber
2021-04-08 17:36             ` Uwe Kleine-König
2021-04-08 18:14               ` Clemens Gruber
2021-04-09 11:25               ` Thierry Reding [this message]
2021-04-09 16:02                 ` Clemens Gruber
2021-04-09 21:35                 ` Uwe Kleine-König
2021-04-09 11:10             ` Thierry Reding
2021-04-06 16:41 ` [PATCH v7 6/8] pwm: pca9685: " Clemens Gruber
2021-04-06 16:41 ` [PATCH v7 7/8] pwm: pca9685: Restrict period change for enabled PWMs Clemens Gruber
2021-04-07  6:12   ` Uwe Kleine-König
2021-04-07 20:41     ` Clemens Gruber
2021-04-07 21:38       ` Uwe Kleine-König
2021-04-06 16:41 ` [PATCH v7 8/8] pwm: pca9685: Add error messages for failed regmap calls Clemens Gruber
2021-04-07  6:16   ` Uwe Kleine-König
2021-04-07 20:47     ` Clemens Gruber
2021-04-07 21:41       ` Uwe Kleine-König
2021-04-07  5:24 ` [PATCH v7 1/8] pwm: pca9685: Switch to atomic API Uwe Kleine-König
2021-04-07  7:26   ` Clemens Gruber

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=YHA5sPuZmbSLU3aM@orome.fritz.box \
    --to=thierry.reding@gmail.com \
    --cc=TheSven73@gmail.com \
    --cc=clemens.gruber@pqgruber.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.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).