RE: [PATCH hwmon-next v1 1/1] hwmon: (mlxreg-fan) Fix macros for tacho fault reading

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

 




> -----Original Message-----
> From: Guenter Roeck <groeck7@xxxxxxxxx> On Behalf Of Guenter Roeck
> Sent: Monday, November 19, 2018 6:15 PM
> To: Vadim Pasternak <vadimp@xxxxxxxxxxxx>
> Cc: linux-hwmon@xxxxxxxxxxxxxxx; Michael Shych <michaelsh@xxxxxxxxxxxx>
> Subject: Re: [PATCH hwmon-next v1 1/1] hwmon: (mlxreg-fan) Fix macros for
> tacho fault reading
> 
> On Mon, Nov 19, 2018 at 06:07:40AM +0000, Vadim Pasternak wrote:
> >
> >
> > > -----Original Message-----
> > > From: Guenter Roeck <groeck7@xxxxxxxxx> On Behalf Of Guenter Roeck
> > > Sent: Friday, November 16, 2018 6:15 PM
> > > To: Vadim Pasternak <vadimp@xxxxxxxxxxxx>
> > > Cc: linux-hwmon@xxxxxxxxxxxxxxx; Michael Shych
> > > <michaelsh@xxxxxxxxxxxx>
> > > Subject: Re: [PATCH hwmon-next v1 1/1] hwmon: (mlxreg-fan) Fix
> > > macros for tacho fault reading
> > >
> > > On Fri, Nov 16, 2018 at 01:47:11PM +0000, Vadim Pasternak wrote:
> > > > Fix macros for tacometer fault reading.
> > > > This fix is relevant for three Mellanox systems MQMB7, MSN37,
> > > > MSN34, which are about to be released to the customers.
> > > > At the moment, none of them is at customers sites.
> > > >
> > > > Fixes: 65afb4c8e7e4 ("hwmon: (mlxreg-fan) Add support for Mellanox
> > > > FAN
> > > > driver")
> > > > Signed-off-by: Vadim Pasternak <vadimp@xxxxxxxxxxxx>
> > > > ---
> > > >  drivers/hwmon/mlxreg-fan.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/drivers/hwmon/mlxreg-fan.c
> > > > b/drivers/hwmon/mlxreg-fan.c index de46577..d8fa4be 100644
> > > > --- a/drivers/hwmon/mlxreg-fan.c
> > > > +++ b/drivers/hwmon/mlxreg-fan.c
> > > > @@ -51,7 +51,7 @@
> > > >   */
> > > >  #define MLXREG_FAN_GET_RPM(rval, d, s)
> > > 	(DIV_ROUND_CLOSEST(15000000 * 100, \
> > > >  					 ((rval) + (s)) * (d)))
> > > > -#define MLXREG_FAN_GET_FAULT(val, mask) (!!((val) ^ (mask)))
> > > > +#define MLXREG_FAN_GET_FAULT(val, mask) (!((val) ^ (mask)))
> > >
> > > You might want to check if the "^" is correct here. It looks fishy,
> > > since the expression only evaluates to true if a no bit of val
> > > outside mask is set. I would have expected "&".
> > >
> > > Guenter
> >
> > Hi Guenter,
> >
> > Thanks for you your comment.
> >
> > I'll follow your suggestion and change a macros to"
> > #define MLXREG_FAN_GET_FAULT(val, mask) (!((val & mask) ^ (mask)))
> >
> That seems excessively complicated. Why the xor after the & ?

I wanted to evaluate MLXREG_FAN_GET_FAULT to true in case HW
reports the fault.
For 8 bits addressing device in case of fault val is 0xff and mask is set to 0xff.
For 16 bits - val will be 0xffff and mask will be set to 0xffff.

So, just simply this macros will work for me:
#define MLXREG_FAN_GET_FAULT(val, mask) ((val) == (mask))
or in order to be on the safe side:
#define MLXREG_FAN_GET_FAULT(val, mask) ((val & mask) == (mask))

> 
> Guenter
> 
> > >
> > > >  #define MLXREG_FAN_PWM_DUTY2STATE(duty)
> > > 	(DIV_ROUND_CLOSEST((duty) *	\
> > > >  					 MLXREG_FAN_MAX_STATE,
> > > 	\
> > > >  					 MLXREG_FAN_MAX_DUTY))




[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux