staging/iio/mxs-lradc: fix preenable for multiple buffers
This fixes 'preenable failed: -EINVAL' error when using this driver. Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
committed by
Jonathan Cameron
parent
c7b0cf3e71
commit
c80712c793
@@ -690,7 +690,6 @@ static void mxs_lradc_trigger_remove(struct iio_dev *iio)
|
|||||||
static int mxs_lradc_buffer_preenable(struct iio_dev *iio)
|
static int mxs_lradc_buffer_preenable(struct iio_dev *iio)
|
||||||
{
|
{
|
||||||
struct mxs_lradc *lradc = iio_priv(iio);
|
struct mxs_lradc *lradc = iio_priv(iio);
|
||||||
struct iio_buffer *buffer = iio->buffer;
|
|
||||||
int ret = 0, chan, ofs = 0;
|
int ret = 0, chan, ofs = 0;
|
||||||
unsigned long enable = 0;
|
unsigned long enable = 0;
|
||||||
uint32_t ctrl4_set = 0;
|
uint32_t ctrl4_set = 0;
|
||||||
@@ -698,7 +697,7 @@ static int mxs_lradc_buffer_preenable(struct iio_dev *iio)
|
|||||||
uint32_t ctrl1_irq = 0;
|
uint32_t ctrl1_irq = 0;
|
||||||
const uint32_t chan_value = LRADC_CH_ACCUMULATE |
|
const uint32_t chan_value = LRADC_CH_ACCUMULATE |
|
||||||
((LRADC_DELAY_TIMER_LOOP - 1) << LRADC_CH_NUM_SAMPLES_OFFSET);
|
((LRADC_DELAY_TIMER_LOOP - 1) << LRADC_CH_NUM_SAMPLES_OFFSET);
|
||||||
const int len = bitmap_weight(buffer->scan_mask, LRADC_MAX_TOTAL_CHANS);
|
const int len = bitmap_weight(iio->active_scan_mask, LRADC_MAX_TOTAL_CHANS);
|
||||||
|
|
||||||
if (!len)
|
if (!len)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -725,7 +724,7 @@ static int mxs_lradc_buffer_preenable(struct iio_dev *iio)
|
|||||||
lradc->base + LRADC_CTRL1 + STMP_OFFSET_REG_CLR);
|
lradc->base + LRADC_CTRL1 + STMP_OFFSET_REG_CLR);
|
||||||
writel(0xff, lradc->base + LRADC_CTRL0 + STMP_OFFSET_REG_CLR);
|
writel(0xff, lradc->base + LRADC_CTRL0 + STMP_OFFSET_REG_CLR);
|
||||||
|
|
||||||
for_each_set_bit(chan, buffer->scan_mask, LRADC_MAX_TOTAL_CHANS) {
|
for_each_set_bit(chan, iio->active_scan_mask, LRADC_MAX_TOTAL_CHANS) {
|
||||||
ctrl4_set |= chan << LRADC_CTRL4_LRADCSELECT_OFFSET(ofs);
|
ctrl4_set |= chan << LRADC_CTRL4_LRADCSELECT_OFFSET(ofs);
|
||||||
ctrl4_clr |= LRADC_CTRL4_LRADCSELECT_MASK(ofs);
|
ctrl4_clr |= LRADC_CTRL4_LRADCSELECT_MASK(ofs);
|
||||||
ctrl1_irq |= LRADC_CTRL1_LRADC_IRQ_EN(ofs);
|
ctrl1_irq |= LRADC_CTRL1_LRADC_IRQ_EN(ofs);
|
||||||
|
Reference in New Issue
Block a user