From: "Clément Péron" <peron.clem@gmail.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Mark Rutland <mark.rutland@arm.com>,
linux-pwm@vger.kernel.org,
Jernej Skrabec <jernej.skrabec@siol.net>,
devicetree <devicetree@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Maxime Ripard <mripard@kernel.org>,
Rob Herring <robh+dt@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
Thierry Reding <thierry.reding@gmail.com>,
Philipp Zabel <pza@pengutronix.de>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v3 4/7] pwm: sun4i: Add support to output source clock directly
Date: Fri, 8 Nov 2019 09:34:24 +0100 [thread overview]
Message-ID: <CAJiuCcd3qAP=xODJWcvay6q-MbLeBvX5tAtuUj7dFcp8biXzOw@mail.gmail.com> (raw)
In-Reply-To: <20191107065118.j4s5cghj4ark7sql@pengutronix.de>
Hi Uwe,
On Thu, 7 Nov 2019 at 07:51, Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> wrote:
>
> Hello Clément,
>
> On Wed, Nov 06, 2019 at 10:24:39PM +0100, Clément Péron wrote:
> > On Tue, 5 Nov 2019 at 15:57, Uwe Kleine-König
> > <u.kleine-koenig@pengutronix.de> wrote:
> > > On Tue, Nov 05, 2019 at 02:14:53PM +0100, Clément Péron wrote:
> > > > + bypass = state->enabled &&
> > > > + (state->period * clk_rate >= NSEC_PER_SEC) &&
> > >
> > > This is too coarse. With state->period = 1000000 this is fulfilled
> > > (unless the multiplication overflows).
> >
> > Sorry, misunderstood the previous mail
> >
> > What about something like this ?
> > ((state->period - 1) * clk_rate <= NSEC_PER_SEC) &&
> > ((state->period + 1) * clk_rate >= NSEC_PER_SEC) &&
> > ((state->duty_cycle - 1) * 2 <= state->period) &&
> > ((state->duty_cycle + 1) * 2 >= state->period);
> >
> > We are sure that the user is looking for a PWM around the OSC with a
> > 50% duty cycle ?
>
> This again is too strict. The general policy to fulfill a request is:
>
> 1) provide the longest possible period not bigger than requested
> 2) provide the longest possible duty cycle not bigger than requested
> 3) if possible complete the currently running period before switching
> and don't return to the user before the new setting is active.
> Document the behaviour prominently because the code (usually)
> doesn't allow to understand the hardware's features here.
> 4) A disabled PWM should output the inactive level
Thanks for the explanation
>
> And then there is a corner case: If the user requests .duty_cycle = 0,
> .enabled = 1 it is ok to provide .enabled = 0 iff otherwise 0% isn't
> possible.
>
> So the right check for bypass is:
>
> state->period * clk_rate >= NSEC_PER_SEC &&
> state->period * clk_rate < whatevercanbereachedwithoutbypass &&
> state->duty_cycle * clk_rate * 2 >= NSEC_PER_SEC
The shortest PWM ratio which is not a constant output is 12MHz.
(Prescal 1, 2 entire cycle and 1 active cycle)
So something like this :
state->period * clk_rate >= NSEC_PER_SEC &&
state->period * clk_rate < 2 * NSEC_PER_SEC &&
state->duty_cycle * clk_rate * 2 >= NSEC_PER_SEC
I will send a v4,
Thanks for the help
Regards,
Clément
>
> Best regards
> Uwe
>
> --
> Pengutronix e.K. | Uwe Kleine-König |
> Industrial Linux Solutions | http://www.pengutronix.de/ |
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-11-08 8:34 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-05 13:14 [PATCH v3 0/7] Add support for H6 PWM Clément Péron
2019-11-05 13:14 ` [PATCH v3 1/7] dt-bindings: pwm: allwinner: Add H6 PWM description Clément Péron
2019-11-05 21:33 ` Rob Herring
2019-11-05 13:14 ` [PATCH v3 2/7] pwm: sun4i: Add an optional probe for reset line Clément Péron
2019-11-05 13:36 ` Philipp Zabel
2019-11-05 14:01 ` Clément Péron
2019-11-05 13:53 ` Uwe Kleine-König
2019-11-05 13:14 ` [PATCH v3 3/7] pwm: sun4i: Add an optional probe for bus clock Clément Péron
2019-11-05 13:57 ` Uwe Kleine-König
2019-11-05 14:06 ` Clément Péron
2019-11-05 13:14 ` [PATCH v3 4/7] pwm: sun4i: Add support to output source clock directly Clément Péron
2019-11-05 14:56 ` Uwe Kleine-König
2019-11-06 21:24 ` Clément Péron
2019-11-07 6:51 ` Uwe Kleine-König
2019-11-08 8:34 ` Clément Péron [this message]
2019-11-05 13:14 ` [PATCH v3 5/7] pwm: sun4i: Add support for H6 PWM Clément Péron
2019-11-05 14:57 ` Uwe Kleine-König
2019-11-05 13:14 ` [PATCH v3 6/7] arm64: dts: allwinner: h6: Add PWM node Clément Péron
2019-11-05 13:14 ` [PATCH v3 7/7] [DO NOT MERGE] arm64: allwinner: h6: enable Beelink GS1 PWM Clément Péron
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='CAJiuCcd3qAP=xODJWcvay6q-MbLeBvX5tAtuUj7dFcp8biXzOw@mail.gmail.com' \
--to=peron.clem@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=jernej.skrabec@siol.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mripard@kernel.org \
--cc=pza@pengutronix.de \
--cc=robh+dt@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=u.kleine-koenig@pengutronix.de \
--cc=wens@csie.org \
/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).