From: "David Rivshin (Allworx)" <drivshin.allworx@gmail.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Tony Lindgren <tony@atomide.com>,
Neil Armstrong <narmstrong@baylibre.com>,
linux-pwm@vger.kernel.org, linux-omap@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Grant Erickson <marathon96@gmail.com>, NeilBrown <neilb@suse.de>,
Joachim Eastwood <manabian@gmail.com>
Subject: Re: [PATCH 4/4] pwm: omap-dmtimer: add dev_dbg() message for effective period and duty cycle
Date: Tue, 2 Feb 2016 18:44:43 -0500 [thread overview]
Message-ID: <20160202184443.1e1b0bf5.drivshin.allworx@gmail.com> (raw)
In-Reply-To: <20160202162330.GA4918@ulmo>
On Tue, 2 Feb 2016 17:23:30 +0100
Thierry Reding <thierry.reding@gmail.com> wrote:
> On Mon, Feb 01, 2016 at 10:59:52AM -0800, Tony Lindgren wrote:
> > Hi,
> >
> > * David Rivshin (Allworx) <drivshin.allworx@gmail.com> [160201
> > 10:23]:
> > > On Sat, 30 Jan 2016 15:51:06 +0100
> > > Neil Armstrong <narmstrong@baylibre.com> wrote:
> > >
> > > > 2016-01-30 5:26 GMT+01:00 David Rivshin (Allworx)
> > > > <drivshin.allworx@gmail.com>:
> > > > > From: David Rivshin <drivshin@allworx.com>
> > > > >
> > > > > After going through the math and constraints checking to
> > > > > compute load and match values, it is helpful to know what the
> > > > > resultant period and duty cycle are.
> > > > >
> > > > > Signed-off-by: David Rivshin <drivshin@allworx.com>
> > > > > ---
> > > > >
> > > > > I found this helpful while testing the other changes, so I
> > > > > included it in case it may be of use to someone in the
> > > > > future. I would have no issues with dropping this if it's not
> > > > > considered worthwhile.
> > > >
> > > > It's useful, but converting it as a sysfs attribute would be
> > > > great !
> > >
> > > Hrm, yes that is an interesting thought. I imagine that many PWM
> > > devices have similar constraints, so perhaps that would be best
> > > handled generically in the pwm core? Maybe as new optional
> > > get_*() ops, a modification to the config() op to add output
> > > params, or just updating new fields in the struct pwm directly?
> >
> > Yeah for /sys entry it should be Linux generic. The other option
> > is to use debugfs for driver specific things.
>
> Let's go with debugfs for this one. This is used for diagnostic
I had looked at using the dbg_show() op to add some additional data.
One thing that discouraged me from going down that path was that
it replaced the call to pwm_dbg_show() for that chip. I wouldn't
want to loose the existing output, as it is useful, but also didn't
like the thought of duplicating the logic/formatting. I think some
way to have both the standard output and add extra output somewhere
(e.g. same line, line after each pwm_device, block after all
pwm_devices on the chip) would make that path more attractive.
Or were you thinking of a separate (per-chip) debugfs file for this
type of information?
> purposes and not typically needed when configuring a PWM. While other
> drivers may compute similar hardware-specific values, there's nothing
> generic to them. The period and duty cycle are the generic input
> values and those are already exposed via sysfs.
Just to clarify, what I was thinking of as generic was the concept
that "period/duty I asked for" and "period/duty I got" may be
different, sometimes to a substantial degree. I could imagine
userspace wanting to know the latter, which is what I think Neil
was suggesting.
For the sake of an example, the input clock for a dmtimer is sometimes
(often?) 32768Hz, which means that the real period and duty_cycle output
are limited to being a multiple of ~61035.2ns (16384Hz). So an attempt
to set a period of 100000ns (10KHz) would result in either 61035.2ns, or
122070.4ns (8192Hz), depending on the implementation of the driver (and
patch 2 changes behavior from the former to the latter). You can also
have cases where you desired a 33% duty cycle, but got a 25% duty cycle
instead.
In a quick look, I see substantially similar calculations (i.e.
clk_rate*period_ns/10^9) in most of the other pwm drivers, which makes
sense for any that are programmed in terms of some input clock. This
type of calculation almost guarantees that requested and actual period/
duty_cycle are going to be different to some degree. Some drivers look
like they have even more complicated behavior, apparently due to other
hardware constraints. For instance, fsl-ftm (among others) looks to be
using a power-of-2 prescaler to fit the period_cycles into a 16bit field.
Of course if the input clock rate for these types of devices is
sufficiently high (enough that the desired period is many input clock
cycles), then the difference between "desired" and "actual" is probably
small enough that noone cares. I'm not sure how common it is that
a) there is a substantial difference, and
b) userspace cares about it, and
c) userspace didn't carefully select an achievable value already
If noone has brought it up before, then I'd guess the answer is "not very".
next prev parent reply other threads:[~2016-02-02 23:44 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-30 4:26 [PATCH 0/4] pwm: omap-dmtimer: fix period/duty_cycle calculation David Rivshin (Allworx)
2016-01-30 4:26 ` [PATCH 1/4] pwm: omap-dmtimer: fix inaccurate " David Rivshin (Allworx)
2016-02-03 10:23 ` Neil Armstrong
2016-02-15 20:24 ` Adam Ford
2016-03-04 15:17 ` Thierry Reding
2016-01-30 4:26 ` [PATCH 2/4] pwm: omap-dmtimer: add sanity checking for load and match values David Rivshin (Allworx)
2016-02-01 18:35 ` David Rivshin (Allworx)
2016-02-03 10:24 ` Neil Armstrong
2016-01-30 4:26 ` [PATCH 3/4] pwm: omap-dmtimer: round load and match values rather than truncate David Rivshin (Allworx)
2016-02-03 10:24 ` Neil Armstrong
2016-03-04 15:18 ` Thierry Reding
2016-01-30 4:26 ` [PATCH 4/4] pwm: omap-dmtimer: add dev_dbg() message for effective period and duty cycle David Rivshin (Allworx)
2016-01-30 14:51 ` Neil Armstrong
2016-02-01 18:22 ` David Rivshin (Allworx)
2016-02-01 18:59 ` Tony Lindgren
2016-02-02 16:23 ` Thierry Reding
2016-02-02 23:44 ` David Rivshin (Allworx) [this message]
2016-02-03 14:14 ` Thierry Reding
2016-02-05 19:51 ` David Rivshin (Allworx)
2016-02-09 12:49 ` Neil Armstrong
2016-01-30 14:52 ` [PATCH 0/4] pwm: omap-dmtimer: fix period/duty_cycle calculation Neil Armstrong
2016-02-01 20:14 ` David Rivshin (Allworx)
2016-02-27 1:31 ` David Rivshin (Allworx)
2016-03-04 15:19 ` Thierry Reding
2016-03-04 16:27 ` David Rivshin (Allworx)
2016-03-04 16:29 ` Adam Ford
2016-03-04 20:01 ` David Rivshin (Allworx)
2016-03-04 20:03 ` Adam Ford
2016-03-04 21:18 ` Thierry Reding
2016-03-04 23:20 ` David Rivshin (Allworx)
2016-03-08 23:23 ` Adam Ford
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=20160202184443.1e1b0bf5.drivshin.allworx@gmail.com \
--to=drivshin.allworx@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=manabian@gmail.com \
--cc=marathon96@gmail.com \
--cc=narmstrong@baylibre.com \
--cc=neilb@suse.de \
--cc=thierry.reding@gmail.com \
--cc=tony@atomide.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).