[lm-sensors] [PATCH] hwmon: (lm95241) Fix chip detection code
Guenter Roeck
guenter.roeck at ericsson.com
Thu Jul 7 16:19:43 CEST 2011
On Thu, Jul 07, 2011 at 05:29:48AM -0400, Jean Delvare wrote:
> Hi Guenter,
>
> Sorry for the late review.
>
> On Tue, 5 Jul 2011 07:32:05 -0700, Guenter Roeck wrote:
> > On Mon, Jun 27, 2011 at 04:38:37PM -0400, Guenter Roeck wrote:
> > > The LM95241 driver accepts every chip ID equal to or larger than 0xA4 as its
> > > own, and other chips such as LM95245 use chip IDs in the accepted ID range.
> > > This results in false chip detection.
> > >
> > > Fix problem by accepting only the known LM95241 chip ID. Also remove the debug
> > > message displayed if chip detection failed since it just adds noise and no real
> > > value.
> > >
> > > Signed-off-by: Guenter Roeck <guenter.roeck at ericsson.com>
> >
> > Anyone with objections to this patch please speak up now or be silent forever ...
> > I'll submit it to Linus sometime this week.
>
> OK, I'll speak now then.
>
> > > ---
> > > Kept name variable to prepare for possible later addition of LM95231 support
> > > (after I get samples).
> > >
> > > drivers/hwmon/lm95241.c | 17 ++++++-----------
> > > 1 files changed, 6 insertions(+), 11 deletions(-)
> > >
> > > diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c
> > > index 1a6dfb6..f2cfecf 100644
> > > --- a/drivers/hwmon/lm95241.c
> > > +++ b/drivers/hwmon/lm95241.c
> > > @@ -330,24 +330,19 @@ static int lm95241_detect(struct i2c_client *new_client,
> > > struct i2c_board_info *info)
> > > {
> > > struct i2c_adapter *adapter = new_client->adapter;
> > > - int address = new_client->addr;
> > > const char *name;
> > >
> > > if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
> > > return -ENODEV;
> > >
> > > - if ((i2c_smbus_read_byte_data(new_client, LM95241_REG_R_MAN_ID)
> > > - == MANUFACTURER_ID)
> > > - && (i2c_smbus_read_byte_data(new_client, LM95241_REG_R_CHIP_ID)
> > > - >= DEFAULT_REVISION)) {
> > > - name = DEVNAME;
> > > - } else {
> > > - dev_dbg(&adapter->dev, "LM95241 detection failed at 0x%02x\n",
> > > - address);
> > > + if (i2c_smbus_read_byte_data(new_client, LM95241_REG_R_MAN_ID)
> > > + != MANUFACTURER_ID
> > > + || i2c_smbus_read_byte_data(new_client, LM95241_REG_R_CHIP_ID)
> > > + != DEFAULT_REVISION)
> > > return -ENODEV;
> > > - }
> > >
> > > - /* Fill the i2c board info */
> > > + name = DEVNAME;
> > > +
> > > strlcpy(info->type, name, I2C_NAME_SIZE);
> > > return 0;
> > > }
>
> You are hiding the key change with cleanups and logic inversion. That's
> not really desirable in general, and even less so for a fix that IMHO
> should go to stable trees. Given that you are reworking the logic in a
> later patch anyway ("Add support for LM95231") I'd much prefer that
> this first patch simply turns ">=" into "==". This will make the fix
> much more obvious.
>
Hi Jean,
Modified as suggested, and I resubmitted the series.
Thanks,
Guenter
More information about the lm-sensors
mailing list