Re: [PATCH v2] iio: accel: bmc150: check reset write error

From: cdcp 206

Date: Fri Sep 25 2026 - 12:40:25 EST


I have not verified this on BMC150 hardware.

The datasheet documents the soft reset, but I could not find a guarantee
that the I2C write is acknowledged before the reset starts.

Given that, I agree that propagating this error could cause a regression,
so I think the patch should be dropped.

Thanks for pointing this out.


El vie, 25 sept 2026 a la(s) 11:26 a.m., cdcp 206 (cdcp206@xxxxxxxxx) escribió:
>
> I have not verified this on BMC150 hardware.
>
> The datasheet documents the soft reset, but I could not find a guarantee
> that the I2C write is acknowledged before the reset starts.
>
> Given that, I agree that propagating this error could cause a regression,
> so I think the patch should be dropped.
>
> Thanks for pointing this out.
>
>
>
> El jue, 24 sept 2026 a la(s) 10:05 p.m., Jonathan Cameron (jic23@xxxxxxxxxx) escribió:
>>
>> On Thu, 24 Sep 2026 09:48:45 -0500
>> Carlos Casadiego via B4 Relay <devnull+cdcp206.gmail.com@xxxxxxxxxx> wrote:
>>
>> > From: Carlos Casadiego <cdcp206@xxxxxxxxx>
>> >
>> > The software reset is required to bring the device into a known
>> > state before reading the chip ID.
>> >
>> > Check the return value of regmap_write() and abort initialization if
>> > the reset command cannot be written.
>> >
>> > Fixes: 1c500840934a ("iio: accel: bmc150: reset chip at init time")
>> > Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
>> > Signed-off-by: Carlos Casadiego <cdcp206@xxxxxxxxx>
>>
>> Just to check: Was this verified against actual hardware?
>>
>> Quite a few devices get going on their resets before sending
>> acks on i2c which means you get an error on that particular
>> write. That is often why you don't see an error check on this
>> particular operation.
>>
>>
>>
>>
>> > ---
>> > Changes in v2:
>> > - Remove the blank line in the tag block.
>> > - Add Srinivas Pandruvada's Acked-by.
>> > - Link to v1: https://patch.msgid.link/20260923-iio-bmc150-check-reset-error-v1-1-b8c1ebc4c947@xxxxxxxxx
>> > ---
>> > drivers/iio/accel/bmc150-accel-core.c | 8 ++++++--
>> > 1 file changed, 6 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c
>> > index 46bb36d9366e..43a39e1ccce5 100644
>> > --- a/drivers/iio/accel/bmc150-accel-core.c
>> > +++ b/drivers/iio/accel/bmc150-accel-core.c
>> > @@ -1561,8 +1561,12 @@ static int bmc150_accel_chip_init(struct bmc150_accel_data *data)
>> > * Reset chip to get it in a known good state. A delay of 1.8ms after
>> > * reset is required according to the data sheets of supported chips.
>> > */
>> > - regmap_write(data->regmap, BMC150_ACCEL_REG_RESET,
>> > - BMC150_ACCEL_RESET_VAL);
>> > + ret = regmap_write(data->regmap, BMC150_ACCEL_REG_RESET,
>> > + BMC150_ACCEL_RESET_VAL);
>> > + if (ret < 0) {
>> > + dev_err(dev, "Error writing reset register\n");
>> > + return ret;
>> > + }
>> > usleep_range(1800, 2500);
>> >
>> > ret = regmap_read(data->regmap, BMC150_ACCEL_REG_CHIP_ID, &val);
>> >
>> > ---
>> > base-commit: d8c0f48f0b1583308a98401c0c7b1a65d1d43a6c
>> > change-id: 20260923-iio-bmc150-check-reset-error-389b096b0ad4
>> >
>> > Best regards,
>> > --
>> > Carlos Casadiego <cdcp206@xxxxxxxxx>
>> >
>> >
>>