Message ID | 20220411111533.5826-1-jmaneyrol@invensense.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [v3] iio: imu: inv_icm42600: Fix I2C init possible nack | expand |
On Mon, 11 Apr 2022 13:15:33 +0200 Jean-Baptiste Maneyrol <jmaneyrol@invensense.com> wrote: > From: Fawzi Khaber <fawzi.khaber@tdk.com> > > This register write to REG_INTF_CONFIG6 enables a spike filter that > is impacting the line and can prevent the I2C ACK to be seen by the > controller. So we don't test the return value. > > Fixes: 7297ef1e261672b8 ("iio: imu: inv_icm42600: add I2C driver") > Signed-off-by: Fawzi Khaber <fawzi.khaber@tdk.com> > Signed-off-by: Jean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com> Applied to the fixes-togreg branch of iio.git with a minor tweak + marked for stable. > --- > drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c > index 33d9afb1ba91..01fd883c8459 100644 > --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c > +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c > @@ -18,12 +18,15 @@ static int inv_icm42600_i2c_bus_setup(struct inv_icm42600_state *st) > unsigned int mask, val; > int ret; > > - /* setup interface registers */ > - ret = regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG6, > + /* > + * setup interface registers > + * This register write to REG_INTF_CONFIG6 enables a spike filter that > + * is impacting the line and can prevent the I2C ACK to be seen by the > + * controller. So we don't test the return value. > + */ > + regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG6, The following two lines need a smaller indent after this change. I've tweaked that whilst applying. Thanks, Jonathan > INV_ICM42600_INTF_CONFIG6_MASK, > INV_ICM42600_INTF_CONFIG6_I3C_EN); > - if (ret) > - return ret; > > ret = regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG4, > INV_ICM42600_INTF_CONFIG4_I3C_BUS_ONLY, 0);
diff --git a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c index 33d9afb1ba91..01fd883c8459 100644 --- a/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c +++ b/drivers/iio/imu/inv_icm42600/inv_icm42600_i2c.c @@ -18,12 +18,15 @@ static int inv_icm42600_i2c_bus_setup(struct inv_icm42600_state *st) unsigned int mask, val; int ret; - /* setup interface registers */ - ret = regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG6, + /* + * setup interface registers + * This register write to REG_INTF_CONFIG6 enables a spike filter that + * is impacting the line and can prevent the I2C ACK to be seen by the + * controller. So we don't test the return value. + */ + regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG6, INV_ICM42600_INTF_CONFIG6_MASK, INV_ICM42600_INTF_CONFIG6_I3C_EN); - if (ret) - return ret; ret = regmap_update_bits(st->map, INV_ICM42600_REG_INTF_CONFIG4, INV_ICM42600_INTF_CONFIG4_I3C_BUS_ONLY, 0);