All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@gmail.com>
To: Clemens Gruber <clemens.gruber@pqgruber.com>
Cc: "Andy Shevchenko" <andy.shevchenko@gmail.com>,
	"Matthias Schiffer" <matthias.schiffer@ew.tq-group.com>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	linux-pwm@vger.kernel.org,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	"Sven Van Asbroeck" <TheSven73@gmail.com>
Subject: Re: [PATCH 1/4] pwm: pca9685: remove unused duty_cycle struct element
Date: Wed, 1 Apr 2020 19:45:40 +0200	[thread overview]
Message-ID: <20200401174540.GA2978178@ulmo> (raw)
In-Reply-To: <20200401163640.GA91358@workstation.tuxnet>

[-- Attachment #1: Type: text/plain, Size: 3971 bytes --]

On Wed, Apr 01, 2020 at 06:36:40PM +0200, Clemens Gruber wrote:
> On Mon, Mar 30, 2020 at 06:02:38PM +0200, Thierry Reding wrote:
> > On Mon, Mar 30, 2020 at 04:18:22PM +0300, Andy Shevchenko wrote:
> > > On Mon, Mar 30, 2020 at 4:09 PM Thierry Reding <thierry.reding@gmail.com> wrote:
> > > >
> > > > On Wed, Feb 26, 2020 at 02:52:26PM +0100, Matthias Schiffer wrote:
> > > > > duty_cycle was only set, never read.
> > > > >
> > > > > Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
> > > > > ---
> > > > >  drivers/pwm/pwm-pca9685.c | 4 ----
> > > > >  1 file changed, 4 deletions(-)
> > > >
> > > > Applied, thanks.
> > > 
> > > I'm not sure this patch is correct.
> > 
> > What makes you say that? If you look at the code, the driver sets this
> > field to either 0 or some duty cycle value but ends up never using it.
> > Why would it be wrong to remove that code?
> > 
> > > We already have broken GPIO in this driver. Do we need more breakage?
> > 
> > My understanding is that nobody was able to pinpoint exactly when this
> > regressed, or if this only worked by accident to begin with. It sounds
> > like Clemens has a way of testing this driver, so perhaps we can solve
> > that GPIO issue while we're at it.
> > 
> > The last discussion on this seems to have been around the time when you
> > posted a fix for it:
> > 
> >     https://patchwork.ozlabs.org/patch/1156012/
> > 
> > But then Sven had concerns that that also wasn't guaranteed to work:
> > 
> >     https://lkml.org/lkml/2019/6/2/73
> > 
> > So I think we could either apply your patch to restore the old behaviour
> > which I assume you tested, so at least it seems to work in practice,
> > even if there's still a potential race that Sven pointed out in the
> > above link.
> > 
> > I'd prefer something alternative because it's obviously confusing and
> > completely undocumented. Mika had already proposed something that's a
> > little bit better, though still somewhat confusing.
> > 
> > Oh... actually reading further through those threads there seems to be a
> > patch from Sven that was reviewed by Mika but then nothing happened:
> > 
> > 	https://lkml.org/lkml/2019/6/4/1039
> > 
> > with the corresponding patchwork URL:
> > 
> > 	https://patchwork.ozlabs.org/patch/1110083/
> > 
> > Andy, Clemens, do you have a way of testing the GPIO functionality of
> > this driver? If so, it'd be great if you could check the above patch
> > from Sven to fix PWM/GPIO interop.
> 
> Looks good. Tested it today and I can no longer reproduce the issues
> when switching between PWM and GPIO modes.
> It did not apply cleanly on the current mainline or for-next branch, so
> I'll send a fixed up version of the patch with my Tested-by tag shortly.

Awesome, thank you!

> I noticed an unrelated issue when disabling and enabling the channel
> though, for which I will either send a patch or maybe try to convert the
> driver to the atomic API first and then look if it is still a problem.
> (Issue is that if you disable the channel, the LED_OFF counter is
> cleared, which means you have to reconfigure the duty cycle after
> reenabling. It's probably better if only the FULL_OFF bit is toggled in
> enable/disable as it has precedence over the others anyway and then the
> previous state would not be changed..?)

Converting to the atomic API would certainly be beneficial because it
gives you much more control over what you want to program to hardware.

Other than that, yes, if ->enable() called after ->disable() doesn't put
the PWM into the same state that it was before ->disable(), then that'd
be a bug. From what you're saying this will make the driver only work if
there's a ->config() call after ->disable(). That's wrong.

So yes, setting only that LED_FULL bit in ->disable() and clearing it in
->enable() sounds like a better option than the current implementation.

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2020-04-01 17:45 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-26 13:52 [PATCH 1/4] pwm: pca9685: remove unused duty_cycle struct element Matthias Schiffer
2020-02-26 13:52 ` [PATCH 2/4] pwm: pca9685: remove ALL_LED PWM channel Matthias Schiffer
2020-03-30 13:07   ` Thierry Reding
2020-03-30 13:15     ` Thierry Reding
2020-03-30 13:19     ` Andy Shevchenko
2020-03-30 15:38       ` Thierry Reding
2020-03-30 13:34     ` Clemens Gruber
2020-03-30 15:40       ` Thierry Reding
2020-03-30 15:43         ` Thierry Reding
2020-03-30 16:07         ` Clemens Gruber
2020-03-31 12:09           ` (EXT) " Matthias Schiffer
2020-03-31 13:14             ` Clemens Gruber
2020-02-26 13:52 ` [PATCH 3/4] pwm: pca9685: initialize all LED registers during probe Matthias Schiffer
2020-02-26 15:00   ` Uwe Kleine-König
2020-02-26 16:13     ` (EXT) " Matthias Schiffer
2020-03-30 13:07       ` Thierry Reding
2020-02-26 13:52 ` [PATCH 4/4] pwm: pca9685: migrate config/enable/disable to apply Matthias Schiffer
2020-02-26 15:05   ` Uwe Kleine-König
2020-02-26 15:10 ` [PATCH 1/4] pwm: pca9685: remove unused duty_cycle struct element Uwe Kleine-König
2020-02-26 17:03   ` (EXT) " Matthias Schiffer
2020-02-26 19:21     ` Uwe Kleine-König
2020-02-28 13:26       ` (EXT) " Matthias Schiffer
2020-03-30 15:12     ` Clemens Gruber
2020-04-03 23:50       ` Sven Van Asbroeck
2020-04-04 17:35         ` Clemens Gruber
2020-04-04 20:17           ` Sven Van Asbroeck
2020-04-06  9:51             ` Thierry Reding
2020-04-07 13:00               ` (EXT) " Matthias Schiffer
2020-04-09 11:42               ` Sven Van Asbroeck
2020-04-03 23:47     ` Sven Van Asbroeck
2020-04-07 14:46       ` (EXT) " Matthias Schiffer
2020-04-08  8:00         ` Matthias Schiffer
2020-03-30 13:07 ` Thierry Reding
2020-03-30 13:18   ` Andy Shevchenko
2020-03-30 16:02     ` Thierry Reding
2020-03-30 16:10       ` Clemens Gruber
2020-04-01 16:36       ` Clemens Gruber
2020-04-01 17:45         ` Thierry Reding [this message]
2020-04-02  7:10           ` (EXT) " Matthias Schiffer

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=20200401174540.GA2978178@ulmo \
    --to=thierry.reding@gmail.com \
    --cc=TheSven73@gmail.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=clemens.gruber@pqgruber.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=matthias.schiffer@ew.tq-group.com \
    --cc=u.kleine-koenig@pengutronix.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.