All of lore.kernel.org
 help / color / mirror / Atom feed
From: carlos.song@nxp.com
To: jic23@kernel.org, lars@metafoo.de
Cc: rjones@gateworks.com, Jonathan.Cameron@huawei.com,
	haibo.chen@nxp.com, carlos.song@nxp.com, linux-imx@nxp.com,
	linux-iio@vger.kernel.org
Subject: [PATCH v2 2/7] iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback
Date: Thu,  8 Dec 2022 15:19:06 +0800	[thread overview]
Message-ID: <20221208071911.2405922-3-carlos.song@nxp.com> (raw)
In-Reply-To: <20221208071911.2405922-1-carlos.song@nxp.com>

From: Carlos Song <carlos.song@nxp.com>

Because ACCEL and MAGN channels data register base address is
swapped by error judgement, accelerometer and magnetometer
channels readback is swapped.

Fix swapped accelerometer and magnetometer channels readback.

Fixes: 84e5ddd5c46e ("iio: imu: Add support for the FXOS8700 IMU")
Signed-off-by: Carlos Song <carlos.song@nxp.com>
---
Changes for V2:
- Use a switch statement to instead of an enum to index the base
  address of the register by the channel type
- Rework commit log and comments

diff --git a/drivers/iio/imu/fxos8700_core.c b/drivers/iio/imu/fxos8700_core.c
index 235b02b2f4e5..977eb7dc7dbd 100644
--- a/drivers/iio/imu/fxos8700_core.c
+++ b/drivers/iio/imu/fxos8700_core.c
@@ -395,9 +395,22 @@ static int fxos8700_get_data(struct fxos8700_data *data, int chan_type,
 {
 	u8 base, reg;
 	int ret;
-	enum fxos8700_sensor type = fxos8700_to_sensor(chan_type);
 
-	base = type ? FXOS8700_OUT_X_MSB : FXOS8700_M_OUT_X_MSB;
+	/*
+	 * Different register base addresses varies with channel types.
+	 * This bug hasn't been noticed before because using an enum is
+	 * really hard to read. Use an a switch statement to take over that.
+	 */
+	switch (chan_type) {
+	case IIO_ACCEL:
+		base = FXOS8700_OUT_X_MSB;
+		break;
+	case IIO_MAGN:
+		base = FXOS8700_M_OUT_X_MSB;
+		break;
+	default:
+		return -EINVAL;
+	}
 
 	/* Block read 6 bytes of device output registers to avoid data loss */
 	ret = regmap_bulk_read(data->regmap, base, data->buf,
-- 
2.34.1


  parent reply	other threads:[~2022-12-08  7:19 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-08  7:19 [PATCH v2 0/7] iio: imu: fxos8700: fix few bugs in data readback and mode set carlos.song
2022-12-08  7:19 ` [PATCH v2 1/7] iio: imu: fxos8700: fix map lable of channel type to MAGN sensor carlos.song
2022-12-11 13:42   ` Jonathan Cameron
2022-12-08  7:19 ` carlos.song [this message]
2022-12-11 13:43   ` [PATCH v2 2/7] iio: imu: fxos8700: fix swapped ACCEL and MAGN channels readback Jonathan Cameron
2022-12-08  7:19 ` [PATCH v2 3/7] iio: imu: fxos8700: fix incompete " carlos.song
2022-12-11 13:45   ` Jonathan Cameron
2022-12-08  7:19 ` [PATCH v2 4/7] iio: imu: fxos8700: fix IMU data bits returned to user space carlos.song
2022-12-11 13:49   ` Jonathan Cameron
2022-12-08  7:19 ` [PATCH v2 5/7] iio: imu: fxos8700: fix ACCEL measurement range selection carlos.song
2022-12-11 13:51   ` Jonathan Cameron
2022-12-08  7:19 ` [PATCH v2 6/7] iio: imu: fxos8700: fix ODR register readback and initialization carlos.song
2022-12-11 14:01   ` Jonathan Cameron
2022-12-08  7:19 ` [PATCH v2 7/7] iio: imu: fxos8700: fix MAGN sensor scale and unit carlos.song
2022-12-11 14:05   ` Jonathan Cameron

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221208071911.2405922-3-carlos.song@nxp.com \
    --to=carlos.song@nxp.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=haibo.chen@nxp.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-imx@nxp.com \
    --cc=rjones@gateworks.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.