FAILED: patch "[PATCH] iio: adc: ti-adc161s626: use DMA-safe memory for spi_read()" failed to apply to 5.15-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 768461517a28d80fe81ea4d5d03a90cd184ea6ad
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026040713-crescent-angles-fabe@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 768461517a28d80fe81ea4d5d03a90cd184ea6ad Mon Sep 17 00:00:00 2001
From: David Lechner <[email protected]>
Date: Sat, 14 Mar 2026 18:13:32 -0500
Subject: [PATCH] iio: adc: ti-adc161s626: use DMA-safe memory for spi_read()
Add a DMA-safe buffer and use it for spi_read() instead of a stack memory. All SPI buffers must be DMA-safe.
Since we only need up to 3 bytes, we just use a u8[] instead of __be16 and __be32 and change the conversion functions appropriately.
drivers/iio/adc/ti-adc161s626.c +8 -12
@@ -15,6 +15,7 @@#include <linux/init.h> #include <linux/err.h> #include <linux/spi/spi.h> +#include <linux/unaligned.h> #include <linux/iio/iio.h> #include <linux/iio/trigger.h> #include <linux/iio/buffer.h>
@@ -70,6 +71,7 @@ struct ti_adc_data {u8 read_size;u8 shift; +u8 buf[3 ]__aligned(IIO_DMA_MINALIGN) ; }; static int ti_adc_read_measurement(struct ti_adc_data *data,
@@ -78,26 +80,20 @@ static int ti_adc_read_measurement(struct ti_adc_data *data,int ret;switch (data->read_size) { -case 2 : { -__be16 buf; - - ret =spi_read (data->spi, (void *) &buf,2 ); +case 2 : + ret =spi_read (data->spi, data->buf,2 );if (ret)return ret; - *val =be16_to_cpu (buf); + *val =get_unaligned_be16 (data->buf);break ; - } -case 3 : { -__be32 buf; - - ret =spi_read (data->spi, (void *) &buf,3 ); +case 3 : + ret =spi_read (data->spi, data->buf,3 );if (ret)return ret; - *val =be32_to_cpu (buf) >>8 ; + *val =get_unaligned_be24 (data->buf);break ; - }default :return -EINVAL ; }