Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: imu: adis: ensure proper DMA alignment

Aligning the buffer to the L1 cache is not sufficient in some platforms
as they might have larger cacheline sizes for caches after L1 and thus,
we can't guarantee DMA safety.

That was the whole reason to introduce IIO_DMA_MINALIGN in [1]. Do the same
for the sigma_delta ADCs.

[1]: https://lore.kernel.org/linux-iio/20220508175712.647246-2-jic23@kernel.org/

Fixes: ccd2b52f4ac6 ("staging:iio: Add common ADIS library")
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20240117-adis-improv-v1-1-7f90e9fad200@analog.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Nuno Sa and committed by
Jonathan Cameron
8e98b87f f1dfcbaa

+2 -1
+2 -1
include/linux/iio/imu/adis.h
··· 11 11 12 12 #include <linux/spi/spi.h> 13 13 #include <linux/interrupt.h> 14 + #include <linux/iio/iio.h> 14 15 #include <linux/iio/types.h> 15 16 16 17 #define ADIS_WRITE_REG(reg) ((0x80 | (reg))) ··· 132 131 unsigned long irq_flag; 133 132 void *buffer; 134 133 135 - u8 tx[10] ____cacheline_aligned; 134 + u8 tx[10] __aligned(IIO_DMA_MINALIGN); 136 135 u8 rx[4]; 137 136 }; 138 137