RE: [EXT] Re: [PATCH 1/1] iio: light: vcnl4035: fixed chip ID check

From: Frank Li
Date: Sun Apr 30 2023 - 13:11:43 EST




> -----Original Message-----
> From: Jonathan Cameron <jic23@xxxxxxxxxx>
> Sent: Sunday, April 30, 2023 12:23 PM
> To: Frank Li <frank.li@xxxxxxx>
> Cc: Lars-Peter Clausen <lars@xxxxxxxxxx>; Uwe Kleine-König <u.kleine-
> koenig@xxxxxxxxxxxxxx>; Petr Machata <petrm@xxxxxxxxxx>; Heikki
> Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>; Jean Delvare
> <jdelvare@xxxxxxx>; Andy Shevchenko
> <andriy.shevchenko@xxxxxxxxxxxxxxx>; Parthiban Nallathambi
> <pn@xxxxxxx>; open list:IIO SUBSYSTEM AND DRIVERS <linux-
> iio@xxxxxxxxxxxxxxx>; open list <linux-kernel@xxxxxxxxxxxxxxx>;
> imx@xxxxxxxxxxxxxxx
> Subject: [EXT] Re: [PATCH 1/1] iio: light: vcnl4035: fixed chip ID check
>
> Caution: This is an external email. Please take care when clicking links or
> opening attachments. When in doubt, report the message using the 'Report
> this email' button
>
>
> On Thu, 27 Apr 2023 17:30:37 -0400
> Frank Li <Frank.Li@xxxxxxx> wrote:
>
> > VCNL4035 register(0xE) ID_L and ID_M define as:
> >
> > ID_L: 0x80
> > ID_H: 7:6 (0:0)
> > 5:4 (0:0) slave address = 0x60 (7-bit)
> > (0:1) slave address = 0x51 (7-bit)
> > (1:0) slave address = 0x40 (7-bit)
> > (1:0) slave address = 0x41 (7-bit)
> > 3:0 Version code default (0:0:0:0)
> >
> > So just check ID_L.
>
> Hi Frank,
>
> Thanks for the fix. A few minor things inline.
>
> >
> > Fixes: 55707294c4eb ("iio: light: Add support for vishay vcnl4035")
> >
>
> No blank line here as the Fixes tag is part of the main tag block.
>
> > Signed-off-by: Frank Li <Frank.Li@xxxxxxx>
>
> Just to check, the result of this bug is that the driver probe fails
> if the slave address isn't 0x60?

Yes, I get chip which slave address = 0x51.
I will update patch soon.

>
> > ---
> > drivers/iio/light/vcnl4035.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/iio/light/vcnl4035.c b/drivers/iio/light/vcnl4035.c
> > index 3ed37f6057fb..8b7769930f3b 100644
> > --- a/drivers/iio/light/vcnl4035.c
> > +++ b/drivers/iio/light/vcnl4035.c
> > @@ -413,7 +413,7 @@ static int vcnl4035_init(struct vcnl4035_data *data)
> > return ret;
> > }
> >
> > - if (id != VCNL4035_DEV_ID_VAL) {
> > + if ((id & 0xff) != VCNL4035_DEV_ID_VAL) {
>
> Please add a define for that 0xff mask and perhaps also use
> FIELD_GET() to extract the field for comparison with VCNL4035_DEV_ID_VAL.
> Whilst that isn't being done elsewhere in this driver, the heavy use
> of set bits means it isn't appropriate anywhere else that I can quickly
> identify. You'll also need to include linux/bitfield.h if making that change.
>
> Thanks,
>
> Jonathan
>
> > dev_err(&data->client->dev, "Wrong id, got %x, expected %x\n",
> > id, VCNL4035_DEV_ID_VAL);
> > return -ENODEV;