linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lokesh Vutla <lokeshvutla@ti.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
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: Wed, 18 Mar 2020 10:10:37 +0530	[thread overview]
Message-ID: <12f9a721-efd5-d5c0-1468-995b5674ff13@ti.com> (raw)
In-Reply-To: <2a5a06cd-7aca-c450-b048-33329d058eca@ti.com>

Hi Uwe,

On 12/03/20 4:14 PM, Lokesh Vutla wrote:
> Hi Uwe,
> 
> On 12/03/20 2:17 PM, Uwe Kleine-König wrote:
>> On Thu, Mar 12, 2020 at 01:35:32PM +0530, Lokesh Vutla wrote:
>>> On 12/03/20 12:10 PM, Uwe Kleine-König wrote:
>>>> On Thu, Mar 12, 2020 at 09:52:09AM +0530, Lokesh Vutla wrote:
>>>>> Only the Timer control register(TCLR) cannot be updated when the timer
>>>>> is running. Registers like Counter register(TCRR), loader register(TLDR),
>>>>> match register(TMAR) can be updated when the counter is running. Since
>>>>> TCLR is not updated in pwm_omap_dmtimer_config(), do not stop the
>>>>> timer for period/duty_cycle update.
>>>>
>>>> I'm not sure what is sensible here. Stopping the PWM for a short period
>>>> is bad, but maybe emitting a wrong period isn't better. You can however
>>>> optimise it if only one of period or duty_cycle changes.
>>>>
>>>> @Thierry, what is your position here? I tend to say a short stop is
>>>> preferable.
>>>
>>> Short stop has side effects especially in the case where 1PPS is generated using
>>> this PWM. In this case where PWM period is continuously synced with PTP clock,
>>> cannot expect any breaks in PWM. This doesn't fall in the above limitations as
>>> well. as duty_cycle is not a worry and only the rising edge is all that matters.
>>>
>>> Also any specific reason why you wanted to stop rather than having the mentioned
>>> limitation? it is just a corner anyway and doesn't happen all the time.
>>
>> I'm a bit torn here. Which of the two steps out of line is worse depends
>> on what is driven by the PWM in question. And also I think ignoring
>> "just corner cases" is a reliable way into trouble.
> 
> I do agree that corner cases should not be ignored. But in this particular
> driver, just trying to explain the effect of this corner case. On dynamic pwm
> period update, the current pwm cycle might generate a period with mixed
> settings. IMHO, it is okay to live with it and mark it as a limitation as you
> pointed out in case of sifive driver[0].

Not sure what is the conclusion here. If there are no objections on this series,
can it be merged?

Thanks and regards,
Lokesh

> 
> 
>>
>> The usual PWM contributer (understandably) cares mostly about their own
>> problem they have to solve. If however you take a step back and care
>> about the PWM framework as a whole to be capable to solve problems in
>> general, such that any consumer just has to know that there is a PWM and
>> start requesting specific settings for their work to get done, it gets
>> obvious that you want some kind of uniform behaviour of each hardware
>> driver. And then a short inactive break between two periods is more
>> common and better understandable than a mixed period.
> 
> But the problem here is that inactive breaks between two periods is not desired.
> Because the pwm is used to generate a 1PPS signal and is continuously
> synchronized with PTP clock.
> 
> I am up if this can be solved generically. But updating period is very specific
> to hardware implementation. Not sure what generic solution can be brought out of
> this. Please correct me if I am wrong.
> 
> [0]
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pwm/pwm-sifive.c#n7
> 
> Thanks and regards,
> Lokesh
> 

  parent reply	other threads:[~2020-03-18  4:41 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 [this message]
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
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=12f9a721-efd5-d5c0-1468-995b5674ff13@ti.com \
    --to=lokeshvutla@ti.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=nsekhar@ti.com \
    --cc=thierry.reding@gmail.com \
    --cc=tony@atomide.com \
    --cc=u.kleine-koenig@pengutronix.de \
    --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).