Re: RESEND [PATCH v1] iio: potentiometer: mcp4131: fix double application of wiper shift

From: Jonathan Cameron

Date: Mon Feb 02 2026 - 15:29:35 EST


On Mon, 2 Feb 2026 21:15:35 +0100
Lukas Schmid <lukas.schmid@xxxxxxxxxx> wrote:

> The MCP4131 wiper address is shifted twice when preparing the SPI
> command in mcp4131_write_raw().
>
> The address is already shifted when assigned to the local variable
> "address", but is then shifted again when written to data->buf[0].
> This results in an incorrect command being sent to the device and
> breaks wiper writes to the second channel.
>
> Remove the second shift and use the pre-shifted address directly
> when composing the SPI transfer.
>
> Signed-off-by: Lukas Schmid <lukas.schmid@xxxxxxxxxx>
Hi Lukas,

Good find.
Needs a fixes tag though so that we can know how far to backport it.
looks like this one goes all the way, so I'll just reply here and
pick this up in a minute once my email reaches lore.

Fixes: 22d199a53910 ("iio: potentiometer: add driver for Microchip MCP413X/414X/415X/416X/423X/424X/425X/426X")


Thanks,

Jonathan

> ---
> drivers/iio/potentiometer/mcp4131.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/potentiometer/mcp4131.c b/drivers/iio/potentiometer/mcp4131.c
> index ad082827aad5..56c9111ef5e8 100644
> --- a/drivers/iio/potentiometer/mcp4131.c
> +++ b/drivers/iio/potentiometer/mcp4131.c
> @@ -221,7 +221,7 @@ static int mcp4131_write_raw(struct iio_dev *indio_dev,
>
> mutex_lock(&data->lock);
>
> - data->buf[0] = address << MCP4131_WIPER_SHIFT;
> + data->buf[0] = address;
> data->buf[0] |= MCP4131_WRITE | (val >> 8);
> data->buf[1] = val & 0xFF; /* 8 bits here */
>