From: Jonathan Cameron <jic23@kernel.org>
To: linux-iio@vger.kernel.org
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Linus Walleij <linus.walleij@linaro.org>
Subject: [RFC PATCH 3/4] iio: gyro: mpu3050: Fix alignment and size issues with buffers.
Date: Sat, 1 May 2021 18:25:14 +0100 [thread overview]
Message-ID: <20210501172515.513486-4-jic23@kernel.org> (raw)
In-Reply-To: <20210501172515.513486-1-jic23@kernel.org>
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Fix a set of closely related issues.
1. When using fifo_values() there was not enough space for the timestamp to
be inserted by iio_push_to_buffers_with_timestamp()
2. fifo_values() did not meet the alignment requirement of
iio_push_to_buffers_with_timestamp()
3. hw_values did not meet the alignment requirement either.
1 and 2 fixed by using new iio_push_to_buffers_with_ts_na() which has
no alignment or space padding requirements.
3 fixed by introducing a structure that makes the space and alignment
requirements explicit.
Fixes: 3904b28efb2c ("iio: gyro: Add driver for the MPU-3050 gyroscope")
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
---
drivers/iio/gyro/mpu3050-core.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/iio/gyro/mpu3050-core.c b/drivers/iio/gyro/mpu3050-core.c
index ac90be03332a..a7fdfe811258 100644
--- a/drivers/iio/gyro/mpu3050-core.c
+++ b/drivers/iio/gyro/mpu3050-core.c
@@ -462,13 +462,10 @@ static irqreturn_t mpu3050_trigger_handler(int irq, void *p)
struct iio_dev *indio_dev = pf->indio_dev;
struct mpu3050 *mpu3050 = iio_priv(indio_dev);
int ret;
- /*
- * Temperature 1*16 bits
- * Three axes 3*16 bits
- * Timestamp 64 bits (4*16 bits)
- * Sum total 8*16 bits
- */
- __be16 hw_values[8];
+ struct {
+ __be16 chans[4];
+ s64 timestamp __aligned(8);
+ } scan;
s64 timestamp;
unsigned int datums_from_fifo = 0;
@@ -563,9 +560,10 @@ static irqreturn_t mpu3050_trigger_handler(int irq, void *p)
fifo_values[4]);
/* Index past the footer (fifo_values[0]) and push */
- iio_push_to_buffers_with_timestamp(indio_dev,
- &fifo_values[1],
- timestamp);
+ iio_push_to_buffers_with_ts_na(indio_dev,
+ &fifo_values[1],
+ sizeof(__be16) * 4,
+ timestamp);
fifocnt -= toread;
datums_from_fifo++;
@@ -623,15 +621,15 @@ static irqreturn_t mpu3050_trigger_handler(int irq, void *p)
goto out_trigger_unlock;
}
- ret = regmap_bulk_read(mpu3050->map, MPU3050_TEMP_H, &hw_values,
- sizeof(hw_values));
+ ret = regmap_bulk_read(mpu3050->map, MPU3050_TEMP_H, scan.chans,
+ sizeof(scan.chans));
if (ret) {
dev_err(mpu3050->dev,
"error reading axis data\n");
goto out_trigger_unlock;
}
- iio_push_to_buffers_with_timestamp(indio_dev, hw_values, timestamp);
+ iio_push_to_buffers_with_timestamp(indio_dev, &scan, timestamp);
out_trigger_unlock:
mutex_unlock(&mpu3050->lock);
--
2.31.1
next prev parent reply other threads:[~2021-05-01 17:26 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-01 17:25 [RFC PATCH 0/4] IIO: Alignment fixes part 4 - bounce buffers for the hard cases Jonathan Cameron
2021-05-01 17:25 ` [RFC PATCH 1/4] iio: core: Introduce iio_push_to_buffers_with_ts_na() for non aligned case Jonathan Cameron
2021-05-01 19:25 ` Andy Shevchenko
2021-05-01 19:27 ` Andy Shevchenko
2021-05-02 15:37 ` Jonathan Cameron
2021-05-02 15:53 ` Jonathan Cameron
2021-05-02 9:10 ` Sa, Nuno
2021-05-02 16:08 ` Jonathan Cameron
2021-05-03 7:15 ` Sa, Nuno
2021-05-03 7:46 ` Sa, Nuno
2021-05-03 10:34 ` Andy Shevchenko
2021-05-03 10:39 ` Jonathan Cameron
2021-05-03 11:20 ` Sa, Nuno
2021-05-01 17:25 ` [RFC PATCH 2/4] iio: adc: ti-adc108s102: Fix alignment of buffer pushed to iio buffers Jonathan Cameron
2021-05-01 17:25 ` Jonathan Cameron [this message]
2021-05-05 12:58 ` [RFC PATCH 3/4] iio: gyro: mpu3050: Fix alignment and size issues with buffers Linus Walleij
2021-05-01 17:25 ` [RFC PATCH 4/4] iio: imu: adis16400: Fix buffer alignment requirements Jonathan Cameron
2021-05-02 8:52 ` Sa, Nuno
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=20210501172515.513486-4-jic23@kernel.org \
--to=jic23@kernel.org \
--cc=Jonathan.Cameron@huawei.com \
--cc=linus.walleij@linaro.org \
--cc=linux-iio@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).