lkml.org 
[lkml]   [2018]   [Nov]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.18 25/45] iio: adc: at91: fix acking DRDY irq on simple conversions
    Date
    From: Eugen Hristev <eugen.hristev@microchip.com>

    [ Upstream commit bc1b45326223e7e890053cf6266357adfa61942d ]

    When doing simple conversions, the driver did not acknowledge the DRDY irq.
    If this irq status is not acked, it will be left pending, and as soon as a
    trigger is enabled, the irq handler will be called, it doesn't know why
    this status has occurred because no channel is pending, and then it will go
    int a irq loop and board will hang.
    To avoid this situation, read the LCDR after a raw conversion is done.

    Fixes: 0e589d5fb ("ARM: AT91: IIO: Add AT91 ADC driver.")
    Cc: Maxime Ripard <maxime.ripard@bootlin.com>
    Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/iio/adc/at91_adc.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c
    index 91c250ae0437..75d2f73582a3 100644
    --- a/drivers/iio/adc/at91_adc.c
    +++ b/drivers/iio/adc/at91_adc.c
    @@ -281,6 +281,8 @@ static void handle_adc_eoc_trigger(int irq, struct iio_dev *idev)
    iio_trigger_poll(idev->trig);
    } else {
    st->last_value = at91_adc_readl(st, AT91_ADC_CHAN(st, st->chnb));
    + /* Needed to ACK the DRDY interruption */
    + at91_adc_readl(st, AT91_ADC_LCDR);
    st->done = true;
    wake_up_interruptible(&st->wq_data_avail);
    }
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-11-04 15:03    [W:3.064 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site