From: "Uwe Kleine-König" <u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: Brian Norris <briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Cc: linux-pwm <linux-pwm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>,
Maxime Ripard
<maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
"open list:ARM/Rockchip SoC..."
<linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
Thierry Reding
<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Sascha Hauer <kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Subject: Re: [PATCH v2 1/3] pwm: rockchip: Don't update the state for the caller of pwm_apply_state()
Date: Mon, 29 Apr 2019 08:56:13 +0200 [thread overview]
Message-ID: <20190429065613.n52uwgys5eugmssd@pengutronix.de> (raw)
In-Reply-To: <CA+ASDXO=szekU97iTDK9vqWjT+JtAKeCNTyoY=8aSi5d+v4mkA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Thu, Apr 18, 2019 at 05:27:05PM -0700, Brian Norris wrote:
> Hi,
>
> I'm not sure if I'm misreading you, but I thought I'd add here before
> this expires out of my inbox:
>
> On Mon, Apr 8, 2019 at 7:39 AM Uwe Kleine-König
> <u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org> wrote:
> > My intention here is more to make all drivers behave the same way and
> > because only two drivers updated the pwm_state this was the variant I
> > removed.
>
> To be clear, this patch on its own is probably breaking things. Just
> because the other drivers don't implement the documented behavior
> doesn't mean you should break this driver. Maybe the others just
> aren't used in precise enough scenarios where this matters.
>
> > When you say that the caller might actually care about the exact
> > parameters I fully agree. In this case however the consumer should be
> > able to know the result before actually applying it. So if you do
> >
> > pwm_apply_state(pwm, { .period = 17, .duty_cycle = 12, ...})
> >
> > and this results in .period = 100 and .duty_cycle = 0 then probably the
> > bad things you want to know about already happend. So my idea is a new
> > function pwm_round_state() that does the adaptions to pwm_state without
> > applying it to the hardware. After that pwm_apply_state could do the
> > following:
> >
> > rstate = pwm_round_state(pwm, state)
> > pwm.apply(pwm, state)
> > gstate = pwm_get_state(pwm)
> >
> > if rstate != gstate:
> > warn about problems
>
> For our case (we're using this with pwm-regulator), I don't recall [*]
> we need to be 100% precise about the period, but we do need to be as
> precise as possible with the duty:period ratio -- so once we get the
> "feedback" from the underlying PWM driver what the real period will
> be, we adjust the duty appropriately.
I admit that I didn't understood the whole situation and (some) things
are worse with my patches applied. I still think that changing the
caller's state variable is bad design, but of course pwm_get_state
should return the currently implemented configuration.
> So I don't see that "warning" would really help for this particular case.
>
> > But before doing that I think it would be sensible to also fix the rules
> > how the round_state callback is supposed to round.
>
> I'm not quite sure I grok exactly what you're planning, but I would
> much appreciate if you didn't break things on the way toward fixing
> them ;)
There are currently no rules how the driver should behave for example if
the consumer requests
.duty_cycle = 10, .period = 50
and the hardware can only implement multiples of 3 for both values. The
obvious candidates are:
- .duty_cycle = 9, .period = 51 (round nearest for both)
- .duty_cycle = 12, .period = 51 (round up)
- .duty_cycle = 9, .period = 48 (round down)
- .duty_cycle = 9, .period = 45 (round duty_cycle and keep proportion)
- return error (which code?)
And there are some other variants (e.g. round duty_cycle to nearest and
period in the same direction) that might be sensible.
Also it should be possible to know the result before actually
configuring the hardware. Otherwise things might already go wrong
because the driver implements a setting that is too far from the
requested configuration.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
next prev parent reply other threads:[~2019-04-29 6:56 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-12 21:46 [PATCH v2 0/3] pwm: ensure pwm_apply_state() doesn't modify the state argument Uwe Kleine-König
[not found] ` <20190312214605.10223-1-u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-03-12 21:46 ` [PATCH v2 1/3] pwm: rockchip: Don't update the state for the caller of pwm_apply_state() Uwe Kleine-König
[not found] ` <20190312214605.10223-2-u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-03-30 9:17 ` Heiko Stuebner
2019-04-01 22:45 ` Doug Anderson
[not found] ` <CAD=FV=WZHouhGcxOgNG3006XajJQaAp0uq9WjeKRikQx1ru4TA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-04-08 14:39 ` Uwe Kleine-König
[not found] ` <20190408143914.uucb5dwafq3cnsmk-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-04-19 0:27 ` Brian Norris
[not found] ` <CA+ASDXO=szekU97iTDK9vqWjT+JtAKeCNTyoY=8aSi5d+v4mkA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-04-29 6:56 ` Uwe Kleine-König [this message]
[not found] ` <20190429065613.n52uwgys5eugmssd-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-04-29 11:18 ` Thierry Reding
2019-04-29 13:11 ` Uwe Kleine-König
[not found] ` <20190429131127.x535uhhtputb7zwl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-04-29 16:28 ` Thierry Reding
2019-04-30 9:14 ` Uwe Kleine-König
2019-04-29 18:04 ` Doug Anderson
[not found] ` <CAD=FV=U71u39ZHkBBfAXVAP=_hY-bAw3L7JdhC=36jkUVxPOmQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-04-30 9:28 ` Uwe Kleine-König
[not found] ` <20190430092824.ijtq3gfh6mqujvnk-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-04-30 14:38 ` Doug Anderson
[not found] ` <CAD=FV=WUi0NbsRDJA_4WeC62QYXjLNH2OygU1FOCx==W0SyqpQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2019-05-02 6:48 ` Uwe Kleine-König
2019-05-02 7:16 ` Boris Brezillon
[not found] ` <20190502091638.0f5a40b0-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-05-02 7:33 ` Uwe Kleine-König
[not found] ` <20190502073326.sgqgkiexjkipvi27-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-05-02 8:09 ` Boris Brezillon
[not found] ` <20190502100951.23ef9ed1-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>
2019-05-02 8:42 ` Uwe Kleine-König
[not found] ` <20190502084243.anz5myut63g4torn-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-05-03 10:59 ` Thierry Reding
2019-05-03 19:59 ` Uwe Kleine-König
2019-04-29 11:03 ` Thierry Reding
2019-04-29 12:31 ` Uwe Kleine-König
[not found] ` <20190429123102.7wfcdqusn24g5rm7-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2019-04-29 16:17 ` Thierry Reding
2019-04-29 21:08 ` Uwe Kleine-König
2019-04-29 10:49 ` Thierry Reding
2019-03-12 21:46 ` [PATCH v2 2/3] pwm: sun4i: " Uwe Kleine-König
2019-03-12 21:46 ` [PATCH v2 3/3] pwm: ensure pwm_apply_state() doesn't modify the state argument Uwe Kleine-König
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=20190429065613.n52uwgys5eugmssd@pengutronix.de \
--to=u.kleine-koenig-bicnvbalz9megne8c9+irq@public.gmane.org \
--cc=briannorris-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org \
--cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
--cc=linux-pwm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=maxime.ripard-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
--cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=wens-jdAy2FN1RRM@public.gmane.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).