From: Haibo Chen <haibo.chen@xxxxxxx> Though Sensor Datasheet define this reset bit in it's CTRL_REG2 register, but seems the actual hardware behavior do not align with the doc expect. Once the reset bit is set, sensor can’t give back an I2C ack, which will cause the probe fail. So just remove this reset operation. Signed-off-by: Haibo Chen <haibo.chen@xxxxxxx> --- drivers/iio/accel/mma8452.c | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c index 0016bb947c10..ec9e26fdfb2a 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1481,30 +1481,6 @@ static void mma8452_trigger_cleanup(struct iio_dev *indio_dev) iio_trigger_unregister(indio_dev->trig); } -static int mma8452_reset(struct i2c_client *client) -{ - int i; - int ret; - - ret = i2c_smbus_write_byte_data(client, MMA8452_CTRL_REG2, - MMA8452_CTRL_REG2_RST); - if (ret < 0) - return ret; - - for (i = 0; i < 10; i++) { - usleep_range(100, 200); - ret = i2c_smbus_read_byte_data(client, MMA8452_CTRL_REG2); - if (ret == -EIO) - continue; /* I2C comm reset */ - if (ret < 0) - return ret; - if (!(ret & MMA8452_CTRL_REG2_RST)) - return 0; - } - - return -ETIMEDOUT; -} - static const struct of_device_id mma8452_dt_ids[] = { { .compatible = "fsl,mma8451", .data = &mma_chip_info_table[mma8451] }, { .compatible = "fsl,mma8452", .data = &mma_chip_info_table[mma8452] }, @@ -1591,10 +1567,6 @@ static int mma8452_probe(struct i2c_client *client, indio_dev->num_channels = data->chip_info->num_channels; indio_dev->available_scan_masks = mma8452_scan_masks; - ret = mma8452_reset(client); - if (ret < 0) - goto disable_regulators; - data->data_cfg = MMA8452_DATA_CFG_FS_2G; ret = i2c_smbus_write_byte_data(client, MMA8452_DATA_CFG, data->data_cfg); -- 2.25.1