Re: [PATCH v5 03/11] pwm: imx: Add separate set of pwm ops for PWMv1 and PWMv2

From: Thierry Reding
Date: Mon Jan 30 2017 - 04:04:44 EST


On Mon, Jan 30, 2017 at 09:55:04AM +0100, Lukasz Majewski wrote:
> Hi Thierry,
>
> > On Mon, Jan 30, 2017 at 09:36:49AM +0100, Lukasz Majewski wrote:
> > > Hi Thierry,
> > >
> > > > On Mon, Jan 30, 2017 at 08:23:12AM +0100, Thierry Reding wrote:
> > > > > On Sun, Jan 29, 2017 at 10:54:07PM +0100, Lukasz Majewski wrote:
> > > > > > From: Lukasz Majewski <l.majewski@xxxxxxxxx>
> > > > > >
> > > > > > This patch provides separate set of pwm ops utilized by
> > > > > > i.MX's PWMv1 and PWMv2.
> > > > > >
> > > > > > Signed-off-by: Lothar WaÃmann <LW@xxxxxxxxxxxxxxxxxxx>
> > > > > > Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@xxxxxxxxxxx>
> > > > > > Signed-off-by: Lukasz Majewski <l.majewski@xxxxxxxxx>
> > > > > > Acked-by: Shawn Guo <shawn.guo@xxxxxxxxxx>
> > > > > > Reviewed-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
> > > > > > ---
> > > > > > Changes for v5:
> > > > > > - None
> > > > > >
> > > > > > Changes for v4:
> > > > > > - None
> > > > > >
> > > > > > Changes for v3:
> > > > > > - Adjust the code to work with ipg clock removed
> > > > > >
> > > > > > Changes for v2:
> > > > > > - New patch
> > > > > > ---
> > > > > > drivers/pwm/pwm-imx.c | 17 ++++++++++++++---
> > > > > > 1 file changed, 14 insertions(+), 3 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/pwm/pwm-imx.c b/drivers/pwm/pwm-imx.c
> > > > > > index b1d1e50..0fa480d 100644
> > > > > > --- a/drivers/pwm/pwm-imx.c
> > > > > > +++ b/drivers/pwm/pwm-imx.c
> > > > > > @@ -239,7 +239,14 @@ static void imx_pwm_disable(struct
> > > > > > pwm_chip *chip, struct pwm_device *pwm)
> > > > > > clk_disable_unprepare(imx->clk_per); }
> > > > > >
> > > > > > -static struct pwm_ops imx_pwm_ops = {
> > > > > > +static struct pwm_ops imx_pwm_ops_v1 = {
> > > > > > + .enable = imx_pwm_enable,
> > > > > > + .disable = imx_pwm_disable,
> > > > > > + .config = imx_pwm_config,
> > > > > > + .owner = THIS_MODULE,
> > > > > > +};
> > > > > > +
> > > > > > +static struct pwm_ops imx_pwm_ops_v2 = {
> > > > >
> > > > > Can't these two be const? No need to respin for only this, just
> > > > > let me know and I can make the change while applying.
> > > >
> > > > Nevermind that. I just remembered that I had picked up a patch to
> > > > make the original imx_pwm_ops a const and things still work fine
> > > > if I make both of the above const, so I just had to manually
> > > > apply your patch, but other than that it seems fine. Let me apply
> > > > the rest of this set and push out. It'd be great if you could
> > > > check afterwards that it's all still what you expect.
> > >
> > > I will do that. Thanks for integrating the patch series :-).
> >
> > Thanks for sticking with it. I know the initial patches for optional
> > polarity support have been around for years, and it took a really long
> > time for this all to come together.
> >
> > But I think the end result is sound and looks really good.
>
> You are welcome :-)
>
> >
> > The one remaining bit that I'm not 100% happy about is that the v1
> > support is not atomic while the v2 support is.
>
> Here the only limitation is the lack of v1 HW.

That doesn't have to be a blocker. If you're willing to invest some more
work to do the additional conversion (I think it would be a fairly minor
change, looking at the existing v1 code), I'm sure we can find someone
with the hardware to test it.

Sascha, Lothar, Fabio, Shawn: do you guys have access to v1 hardware, or
know of anyone who might?

Thierry

Attachment: signature.asc
Description: PGP signature