From 37faa268b4940844dd00776f747d8ef199ce3a1d Mon Sep 17 00:00:00 2001 From: Ksawlii Date: Sun, 24 Nov 2024 00:23:01 +0100 Subject: [PATCH] Revert "iio: magnetometer: ak8975: Fix reading for ak099xx sensors" This reverts commit 8485a728a1edcbf05dfcb3467ce298c0b735ac7a. --- drivers/iio/magnetometer/ak8975.c | 32 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c index fd3a6cd16..3774e5975 100755 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -661,8 +661,22 @@ static int ak8975_start_read_axis(struct ak8975_data *data, if (ret < 0) return ret; - /* Return with zero if the data is ready. */ - return !data->def->ctrl_regs[ST1_DRDY]; + /* This will be executed only for non-interrupt based waiting case */ + if (ret & data->def->ctrl_masks[ST1_DRDY]) { + ret = i2c_smbus_read_byte_data(client, + data->def->ctrl_regs[ST2]); + if (ret < 0) { + dev_err(&client->dev, "Error in reading ST2\n"); + return ret; + } + if (ret & (data->def->ctrl_masks[ST2_DERR] | + data->def->ctrl_masks[ST2_HOFL])) { + dev_err(&client->dev, "ST2 status error 0x%x\n", ret); + return -EINVAL; + } + } + + return 0; } /* Retrieve raw flux value for one of the x, y, or z axis. */ @@ -689,20 +703,6 @@ static int ak8975_read_axis(struct iio_dev *indio_dev, int index, int *val) if (ret < 0) goto exit; - /* Read out ST2 for release lock on measurment data. */ - ret = i2c_smbus_read_byte_data(client, data->def->ctrl_regs[ST2]); - if (ret < 0) { - dev_err(&client->dev, "Error in reading ST2\n"); - goto exit; - } - - if (ret & (data->def->ctrl_masks[ST2_DERR] | - data->def->ctrl_masks[ST2_HOFL])) { - dev_err(&client->dev, "ST2 status error 0x%x\n", ret); - ret = -EINVAL; - goto exit; - } - mutex_unlock(&data->lock); pm_runtime_mark_last_busy(&data->client->dev);