patch "iio: adc: at91-sama5d2_adc: fix differential channels in triggered" added to staging-linus
Subsystems (4)
This is a note to let you know that I've just added the patch titled
iio: adc: at91-sama5d2_adc: fix differential channels in triggered
to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From a500f3bd787f8224341e44b238f318c407b10897 Mon Sep 17 00:00:00 2001
From: Eugen Hristev <[email protected]>
Date: Tue, 28 Jan 2020 12:57:39 +0000
Subject: 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.
--- drivers/iio/adc/at91-sama5d2_adc.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
drivers/iio/adc/at91-sama5d2_adc.c +15 -0
@@ -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));
Signature · 1 line
2.25.1