Skip to contentSkip to conversation

FAILED: patch "[PATCH] iio: adc: at91-sama5d2_adc: fix differential channels in" failed to apply to 4.14-stable tree

PATCH [email protected] 2 participants 2 messages Mar 23, 2020

Subsystems (4)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 4.14-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]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From a500f3bd787f8224341e44b238f318c407b10897 Mon Sep 17 00:00:00 2001
From: Eugen Hristev <[email protected]>
Date: Tue, 28 Jan 2020 12:57:39 +0000
Subject: [PATCH] iio: adc: at91-sama5d2_adc: fix differential channels in
triggered mode

The differential channels require writing the channel offset register (COR). Otherwise they do not work in differential mode.
The configuration of COR is missing in triggered mode.

Fixes 5e1a1da0f8c9 ("iio: adc: at91-sama5d2_adc: add hw trigger and buffer support")
drivers/iio/adc/at91-sama5d2_adc.c +15 -0
index a5c7771227d5..9d96f7d08b95 100644
@@ -723,6 +723,7 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
 
 	for_each_set_bit(bit, indio->active_scan_mask, indio->num_channels) {
 		struct iio_chan_spec const *chan = at91_adc_chan_get(indio, bit);
+		u32 cor;
 
 		if (!chan)
 			continue;
@@ -731,6 +732,20 @@ static int at91_adc_configure_trigger(struct iio_trigger *trig, bool state)
 		    chan->type == IIO_PRESSURE)
 			continue;
 
+		if (state) {
+			cor = at91_adc_readl(st, AT91_SAMA5D2_COR);
+
+			if (chan->differential)
+				cor |= (BIT(chan->channel) |
+					BIT(chan->channel2)) <<
+					AT91_SAMA5D2_COR_DIFF_OFFSET;
+			else
+				cor &= ~(BIT(chan->channel) <<
+				       AT91_SAMA5D2_COR_DIFF_OFFSET);
+
+			at91_adc_writel(st, AT91_SAMA5D2_COR, cor);
+		}
+
 		if (state) {
 			at91_adc_writel(st, AT91_SAMA5D2_CHER,
 					BIT(chan->channel));
maintainer
#1 lore raw
Quoted 18 lines · On Mon, Mar 23, 2020 at 03:17:46PM +0100, [email protected] wrote:

The patch below does not apply to the 4.14-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]>.

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From a500f3bd787f8224341e44b238f318c407b10897 Mon Sep 17 00:00:00 2001
From: Eugen Hristev <[email protected]>
Date: Tue, 28 Jan 2020 12:57:39 +0000
Subject: [PATCH] iio: adc: at91-sama5d2_adc: fix differential channels in triggered mode

Quoted 8 lines

The differential channels require writing the channel offset register (COR). Otherwise they do not work in differential mode.
The configuration of COR is missing in triggered mode.

Fixes 5e1a1da0f8c9 ("iio: adc: at91-sama5d2_adc: add hw trigger and buffer support")

This patch depended on f0c8d1f6dc8e ("iio: adc: at91-sama5d2_adc: fix channel configuration for differential channels") which is itself a stable tagged commit, so I took it too.

Both depended on 073c662017f2 ("iio: adc: at91-sama5d2_adc: add support for DMA"). I've fixed them up to remove the DMA bits and queued for 4.14.

Signature · 2 lines
Thanks,
Sasha