mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
iio: imu: bno055: add explicit scan buf layout
Move the scan buf.chans array into a union along with a struct that gives the layout of the buffer with all channels enabled. Although not technically required in this case, if there had been a different number of items before the quaternion, there could have been a subtle bug with the special alignment needed for the quaternion channel data and the array would have been too small. Signed-off-by: David Lechner <dlechner@baylibre.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
d05e3c1460
commit
5de55ae130
|
|
@ -210,9 +210,30 @@ struct bno055_priv {
|
|||
u8 uid[BNO055_UID_LEN];
|
||||
struct gpio_desc *reset_gpio;
|
||||
bool sw_reset;
|
||||
struct {
|
||||
__le16 chans[BNO055_SCAN_CH_COUNT];
|
||||
aligned_s64 timestamp;
|
||||
union {
|
||||
IIO_DECLARE_BUFFER_WITH_TS(__le16, chans, BNO055_SCAN_CH_COUNT);
|
||||
/*
|
||||
* This struct is not used, but it is here to ensure proper size
|
||||
* and alignment of the scan buffer above (because of the extra
|
||||
* requirements of the quaternion field). Technically it is not
|
||||
* needed in this case, because other fields just happen to make
|
||||
* things correctly aligned already. But it is better to be
|
||||
* explicit about the requirements anyway. The actual contents
|
||||
* of the scan buffer will vary depending on which channels are
|
||||
* enabled.
|
||||
*/
|
||||
struct {
|
||||
__le16 acc[3];
|
||||
__le16 magn[3];
|
||||
__le16 gyr[3];
|
||||
__le16 yaw;
|
||||
__le16 pitch;
|
||||
__le16 roll;
|
||||
IIO_DECLARE_QUATERNION(__le16, quaternion);
|
||||
__le16 lia[3];
|
||||
__le16 gravity[3];
|
||||
aligned_s64 timestamp;
|
||||
};
|
||||
} buf;
|
||||
struct dentry *debugfs;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user