Re: [PATCH repost] thermal: rcar_thermal: update calculation formula for E3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 24, 2019 at 09:10:56AM +0200, Geert Uytterhoeven wrote:
> Hi Niklas,
> 
> On Thu, Apr 18, 2019 at 10:12 AM Niklas Söderlund
> <niklas.soderlund@xxxxxxxxxxxx> wrote:
> > On 2019-04-18 09:15:14 +0200, Simon Horman wrote:
> > > From: Yoshihiro Kaneko <ykaneko0929@xxxxxxxxx>
> > >
> > > HW manual changes temperature calculation formula for E3:
> >
> > Is this not also true for V3M and D3?
> >
> > > - When CTEMP is less than 24
> > >    T = CTEMP[5:0] * 5.5 - 72
> > > - When CTEMP is equal to/greater than 24
> > >    T = CTEMP[5:0] * 5 - 60
> > >
> > > This was inspired by a patch in the BSP by Van Do <van.do.xw@xxxxxxxxxxx>
> > >
> > > Signed-off-by: Yoshihiro Kaneko <ykaneko0929@xxxxxxxxx>
> > > Tested-by: Simon Horman <horms+renesas@xxxxxxxxxxxx>
> > > Acked-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
> > > Signed-off-by: Simon Horman <horms+renesas@xxxxxxxxxxxx>
> > > ---
> > >  drivers/thermal/rcar_thermal.c | 11 ++++++++++-
> > >  1 file changed, 10 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c
> > > index 97462e9b40d8..11df0cc63bed 100644
> > > --- a/drivers/thermal/rcar_thermal.c
> > > +++ b/drivers/thermal/rcar_thermal.c
> > > @@ -52,6 +52,7 @@ struct rcar_thermal_chip {
> > >       unsigned int irq_per_ch : 1;
> > >       unsigned int needs_suspend_resume : 1;
> > >       unsigned int nirqs;
> > > +     unsigned int ctemp_bands;
> >
> > Would it be possible to rename this to something indicating that this is
> > a gen3 thing? Maybe move it to the bit fields above and name it gen3 ?
> 
> Is that really a good thing to do? This structure describes features of
> the thermal module, and we're already beyond the point where a simple
> check  for gen2 or gen3 was sufficient.
> Here the feature is having multiple temperature bands.
> What if some other Gen3 SoC starts having 3 temperature bands?
> 
> > > @@ -263,7 +267,12 @@ static int rcar_thermal_get_current_temp(struct rcar_thermal_priv *priv,
> > >               return ret;
> > >
> > >       mutex_lock(&priv->lock);
> > > -     tmp =  MCELSIUS((priv->ctemp * 5) - 65);
> > > +     if (priv->chip->ctemp_bands == 1)
> > > +             tmp =  MCELSIUS((priv->ctemp * 5) - 65);
> > > +     else if (priv->ctemp < 24)
> > > +             tmp = MCELSIUS(((priv->ctemp * 55) - 720) / 10);
> > > +     else
> > > +             tmp = MCELSIUS((priv->ctemp * 5) - 60);
> >
> > I confirm that the calculations here are correct, but hard to read ;-)
> > With the rename about how about.
> >
> >     if (priv->chip->gen3) {
> >         if (priv->ctemp < 24)
> >                 tmp = MCELSIUS(((priv->ctemp * 55) - 720) / 10);
> >         else
> >                 tmp = MCELSIUS((priv->ctemp * 5) - 60);
> >     } else {
> >             tmp =  MCELSIUS((priv->ctemp * 5) - 65);
> >     }
> 
> _Iff_ we decide on going for the rename, I'd still write it as:
> 
>     if (!priv->chip->gen3)
>             tmp =  MCELSIUS((priv->ctemp * 5) - 65);
>     else if (priv->ctemp < 24)
>             tmp = MCELSIUS(((priv->ctemp * 55) - 720) / 10);
>     else
>             tmp = MCELSIUS((priv->ctemp * 5) - 60);
> 
> Always fold your if/else if/else constructs to minimize the need for indentation
> and braces ;-)

>From my PoV I think the patch is fine in its current form.
Niklas do you feel particularly strongly about changing it?



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux