Message ID | 20221208071911.2405922-4-carlos.song@nxp.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | iio: imu: fxos8700: fix few bugs in data readback and mode set | expand |
On Thu, 8 Dec 2022 15:19:07 +0800 carlos.song@nxp.com wrote: > From: Carlos Song <carlos.song@nxp.com> > > The length of ACCEL and MAGN 3-aix channels output data is 6 byte > individually. However block only read 3 bytes data into buffer from > ACCEL or MAGN output data registers every time. It causes an incompete > ACCEL and MAGN channels readback. > > Set correct value count for regmap_bulk_read to get 6 bytes ACCEL and > MAGN channels readback. > > Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU") > Signed-off-by: Carlos Song <carlos.song@nxp.com> Please spell check patch descriptions. Anyhow, tidied that up whilst applying. Applied to the fixes-togreg branch of iio.git and marked for stable inclusion. Thanks, Jonathan > --- > Changes for V2: > - Reserve the global DMA safe buffer > - Use sizeof(data->buf) instead of hardcoded FXOS8700_DATA_BUF_SIZE > - Rework commit log > > diff --git a/drivers/iio/imu/fxos8700_core.c b/drivers/iio/imu/fxos8700_core.c > index 977eb7dc7dbd..b62bc92bbacc 100644 > --- a/drivers/iio/imu/fxos8700_core.c > +++ b/drivers/iio/imu/fxos8700_core.c > @@ -414,7 +414,7 @@ static int fxos8700_get_data(struct fxos8700_data *data, int chan_type, > > /* Block read 6 bytes of device output registers to avoid data loss */ > ret = regmap_bulk_read(data->regmap, base, data->buf, > - FXOS8700_DATA_BUF_SIZE); > + sizeof(data->buf)); > if (ret) > return ret; >
diff --git a/drivers/iio/imu/fxos8700_core.c b/drivers/iio/imu/fxos8700_core.c index 977eb7dc7dbd..b62bc92bbacc 100644 --- a/drivers/iio/imu/fxos8700_core.c +++ b/drivers/iio/imu/fxos8700_core.c @@ -414,7 +414,7 @@ static int fxos8700_get_data(struct fxos8700_data *data, int chan_type, /* Block read 6 bytes of device output registers to avoid data loss */ ret = regmap_bulk_read(data->regmap, base, data->buf, - FXOS8700_DATA_BUF_SIZE); + sizeof(data->buf)); if (ret) return ret;