Re: [PATCH 1/2] hwmon: pwm-fan: Add profile support and add remove module support

From: Guenter Roeck
Date: Tue May 26 2020 - 09:42:08 EST


On Tue, May 26, 2020 at 12:08:14PM +0000, Sandipan Patra wrote:
> Hi,
>
>
> > -----Original Message-----
> > From: Guenter Roeck <groeck7@xxxxxxxxx> On Behalf Of Guenter Roeck
> > Sent: Tuesday, May 26, 2020 5:12 PM
> > To: Sandipan Patra <spatra@xxxxxxxxxx>; Thierry Reding
> > <treding@xxxxxxxxxx>; Jonathan Hunter <jonathanh@xxxxxxxxxx>; u.kleine-
> > koenig@xxxxxxxxxxxxxx; kamil@xxxxxxxxx; jdelvare@xxxxxxxx;
> > robh+dt@xxxxxxxxxx
> > Cc: Bibek Basu <bbasu@xxxxxxxxxx>; Bitan Biswas <bbiswas@xxxxxxxxxx>;
> > linux-pwm@xxxxxxxxxxxxxxx; linux-hwmon@xxxxxxxxxxxxxxx;
> > devicetree@xxxxxxxxxxxxxxx; linux-tegra@xxxxxxxxxxxxxxx; linux-
> > kernel@xxxxxxxxxxxxxxx
> > Subject: Re: [PATCH 1/2] hwmon: pwm-fan: Add profile support and add remove
> > module support
> >
> > External email: Use caution opening links or attachments
> >
> >
> > On 5/25/20 10:06 PM, Sandipan Patra wrote:
> > > This change has 2 parts:
> > > 1. Add support for profiles mode settings.
> > > This allows different fan settings for trip point temp/hyst/pwm.
> > > T194 has multiple fan-profiles support.
> > >
> > > 2. Add pwm-fan remove support. This is essential since the config is
> > > tristate capable.
> > >
> > > Signed-off-by: Sandipan Patra <spatra@xxxxxxxxxx>
> > > ---
> > > drivers/hwmon/pwm-fan.c | 112
> > > ++++++++++++++++++++++++++++++++++++++++++------
> > > 1 file changed, 100 insertions(+), 12 deletions(-)
> > >
> > > diff --git a/drivers/hwmon/pwm-fan.c b/drivers/hwmon/pwm-fan.c index
> > > 30b7b3e..26db589 100644
> > > --- a/drivers/hwmon/pwm-fan.c
> > > +++ b/drivers/hwmon/pwm-fan.c
> >
> > [ ... ]
> >
> > >
> > > +static int pwm_fan_remove(struct platform_device *pdev) {
> > > + struct pwm_fan_ctx *ctx = platform_get_drvdata(pdev);
> > > + struct pwm_args args;
> > > +
> > > + if (!ctx)
> > > + return -EINVAL;
> > > +
> > > + if (IS_ENABLED(CONFIG_THERMAL))
> > > + thermal_cooling_device_unregister(ctx->cdev);
> > > +
> > > + pwm_get_args(ctx->pwm, &args);
> > > + pwm_config(ctx->pwm, 0, args.period);
> > > + pwm_disable(ctx->pwm);
> > > +
> > > + return 0;
> > > +}
> > > +
> >
> > I don't think you actually tested this. I would suggest to make yourself familiar
> > with 'devm' functions and their use, and then resubmit.
> >
>
> Thanks Guenter.
> I missed to mention about devm while unregistering the cooling device.
> That would definitely cause a mistake in code. I am noting it for further patch.
>
For that part, I am extremely surprised that it is not handled by the
thermal subsystem. Does each thermal driver need this kind of code ?

> For a better clarity, I will push next version of this patch to handle only multiple profiles support.
> "remove fan module" will be supported by a separate patch altogether.
>

I asked you to look into "devm" functionality. I ask you again.
If you still think that a remove function is needed, I will require
detailed reasoning. Please be prepared to explain why devm functions
do not work for this driver.

Guenter