linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Lokesh Vutla <lokeshvutla@ti.com>
Cc: Thierry Reding <thierry.reding@gmail.com>,
	Tony Lindgren <tony@atomide.com>,
	Linux OMAP Mailing List <linux-omap@vger.kernel.org>,
	linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org,
	Sekhar Nori <nsekhar@ti.com>, Vignesh R <vigneshr@ti.com>,
	kernel@pengutronix.de
Subject: Re: [PATCH v3 4/5] pwm: omap-dmtimer: Do not disable pwm before changing period/duty_cycle
Date: Fri, 3 Apr 2020 15:59:38 +0200	[thread overview]
Message-ID: <20200403135938.qmrvhclm6evfibqj@pengutronix.de> (raw)
In-Reply-To: <5dbdbc15-ff29-f577-0632-6a28378b0104@ti.com>

Hello,

On Fri, Apr 03, 2020 at 02:21:38PM +0530, Lokesh Vutla wrote:
> On 02/04/20 7:32 PM, Uwe Kleine-König wrote:
> > Having said that I don't know how critical this really is. Given that
> > the PWM under discussion doesn't complete periods on stop, it probably
> > isn't.
> 
> It is a limitation with the existing driver as well. Nothing is being changed
> regarding stopping of PWM. The same is marked under the limitations in the driver.

What I wrote was ambiguous and I think you understood the meaning I
didn't intend. What I wanted to say is: Given that the PWM stops
abruptly there is only little (if any at all) advantage of
"stop-to-update" over "racy-atomic-update" as we see broken cycles no
matter which alternative we pick.

> > I spend some time thinking about when the glitch actually happens.
> > Currently the load value is written first and then the match value.
> > If no period ends between the two writes there is only a problem when in
> > the currently running period the match event didn't happen yet. Then we
> > see a cycle with
> > 
> >    .period = oldperiod + newperiod
> >    .dutycycle = oldperiod + newdutycycle
> > 
> > (if the new match value isn't hit in the current cycle) or one with
> > 
> >    .period = oldperiod
> >    .duty_cycle = newdutycycle + (oldperiod - newperiod)
> > 
> > (if the new match value is hit in the current cycle). The probability
> > that one of the two happen is: olddutycycle / oldperiod which is quite
> > probable. (With olddutycycle = oldperiod there is no problem though.)
> > 
> > If after writing the new load value and before writing the new match
> > value a period ends it might happen that we see a cycle with
> > 
> >   .period = newperiod
> >   .dutycycle = olddutycycle + (newperiod - oldperiod)
> > 
> > (if the previous match value is used) or one with
> > 
> >   .period = 2 * newperiod
> >   .dutycycle = newperiod + newdutycycle
> > 
> > (if new match value is written too late for the first cycle with the new
> > period).
> 
> That's exactly why we have marked in the Limitations sections that the current
> period might produce a cycle with mixed settings.  Frankly, I'm a bit torn here.
> There are other PWMs inside Linux with  similar limitations and documented
> similarly. If there is an overall objection for such hardware, the entire policy
> should be changed or the framework should be updated to allow user to choose for
> dynamic updates. IMHO, this series should not be blocked for this decision.

Yes, there are other drivers that have similar "problems" and the status
quo is that depending on the driver author one or the other workaround
is chosen. I think the PWM framework would benefit if there were a
common guideline which path to choose in such a situation.

> Please consider it for the coming merge window.

It's already in next, so I assume it will be merged.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | https://www.pengutronix.de/ |

  reply	other threads:[~2020-04-03 13:59 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-12  4:22 [PATCH v3 0/5] pwm: omap-dmtimer: Allow for dynamic pwm period updates Lokesh Vutla
2020-03-12  4:22 ` [PATCH v3 1/5] pwm: omap-dmtimer: Drop unused header file Lokesh Vutla
2020-03-12  6:35   ` Uwe Kleine-König
2020-03-12  4:22 ` [PATCH v3 2/5] pwm: omap-dmtimer: Update description for pwm omap dm timer Lokesh Vutla
2020-03-12  6:35   ` Uwe Kleine-König
2020-03-12  4:22 ` [PATCH v3 3/5] pwm: omap-dmtimer: Fix pwm enabling sequence Lokesh Vutla
2020-03-12  4:22 ` [PATCH v3 4/5] pwm: omap-dmtimer: Do not disable pwm before changing period/duty_cycle Lokesh Vutla
2020-03-12  6:40   ` Uwe Kleine-König
2020-03-12  8:05     ` Lokesh Vutla
2020-03-12  8:47       ` Uwe Kleine-König
2020-03-12 10:44         ` Lokesh Vutla
2020-03-12 14:21           ` Richard Cochran
2020-03-12 17:14             ` Lokesh Vutla
2020-03-18  4:40           ` Lokesh Vutla
2020-03-30 14:14     ` Thierry Reding
2020-03-30 19:16       ` Uwe Kleine-König
2020-03-31 20:45         ` Thierry Reding
2020-04-01  8:22           ` Uwe Kleine-König
2020-04-01 10:22             ` Lokesh Vutla
2020-04-01 11:47               ` Uwe Kleine-König
2020-04-01 18:39                 ` Thierry Reding
2020-04-01 20:36                   ` Uwe Kleine-König
2020-04-01 18:28             ` Thierry Reding
2020-04-01 20:31               ` Uwe Kleine-König
2020-04-01 21:37                 ` Thierry Reding
2020-04-02 14:02                   ` Uwe Kleine-König
2020-04-03  8:51                     ` Lokesh Vutla
2020-04-03 13:59                       ` Uwe Kleine-König [this message]
2020-03-31 15:29       ` Lokesh Vutla
2020-03-31 20:10         ` Thierry Reding
2020-04-01 10:15           ` Lokesh Vutla
2020-03-12  4:22 ` [PATCH v3 5/5] pwm: omap-dmtimer: Implement .apply callback Lokesh Vutla
2020-03-13 15:31   ` Tony Lindgren
2020-03-23 11:30 ` [PATCH v3 0/5] pwm: omap-dmtimer: Allow for dynamic pwm period updates Lokesh Vutla
2020-03-30 14:04   ` Thierry Reding

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=20200403135938.qmrvhclm6evfibqj@pengutronix.de \
    --to=u.kleine-koenig@pengutronix.de \
    --cc=kernel@pengutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=lokeshvutla@ti.com \
    --cc=nsekhar@ti.com \
    --cc=thierry.reding@gmail.com \
    --cc=tony@atomide.com \
    --cc=vigneshr@ti.com \
    /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).