lkml.org 
[lkml]   [2013]   [Jul]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 14/15] iio: ti_am335x_adc: Reset and clear overrun status before capture
    Date
    From: Russ Dill <Russ.Dill@ti.com>

    While not pulling out samples, the FIFO will fill up causing an
    overrun event. Before starting up another continuous sample, clear that
    event.

    Signed-off-by: Russ Dill <Russ.Dill@ti.com>
    Signed-off-by: Zubair Lutfullah <zubair.lutfullah@gmail.com>
    ---
    drivers/iio/adc/ti_am335x_adc.c | 21 +++++++++++----------
    1 file changed, 11 insertions(+), 10 deletions(-)

    diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
    index 265ed27..00fdb22 100644
    --- a/drivers/iio/adc/ti_am335x_adc.c
    +++ b/drivers/iio/adc/ti_am335x_adc.c
    @@ -241,22 +241,23 @@ static int tiadc_buffer_postenable(struct iio_dev *idev)
    {
    struct tiadc_device *adc_dev = iio_priv(idev);
    struct iio_buffer *buffer = idev->buffer;
    - unsigned int enb, fifo1count;
    - int stepnum, i;
    + unsigned int enb, config;
    + int stepnum;
    u8 bit;

    if (!adc_dev->is_continuous_mode) {
    pr_info("Data cannot be read continuously in one shot mode\n");
    return -EINVAL;
    } else {
    - tiadc_writel(adc_dev, REG_IRQENABLE,
    - (IRQENB_FIFO1THRES |
    - IRQENB_FIFO1OVRRUN |
    - IRQENB_FIFO1UNDRFLW));
    -
    - fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT);
    - for (i = 0; i < fifo1count; i++)
    - tiadc_readl(adc_dev, REG_FIFO1);
    + config = tiadc_readl(adc_dev, REG_CTRL);
    + tiadc_writel(adc_dev, REG_CTRL,
    + config & ~CNTRLREG_TSCSSENB);
    + tiadc_writel(adc_dev, REG_CTRL,
    + config | CNTRLREG_TSCSSENB);
    + tiadc_writel(adc_dev, REG_IRQSTATUS, IRQENB_FIFO1THRES
    + | IRQENB_FIFO1OVRRUN | IRQENB_FIFO1UNDRFLW);
    + tiadc_writel(adc_dev, REG_IRQENABLE, IRQENB_FIFO1THRES
    + | IRQENB_FIFO1OVRRUN);

    tiadc_writel(adc_dev, REG_SE, 0x00);
    for_each_set_bit(bit, buffer->scan_mask,
    --
    1.7.9.5


    \
     
     \ /
      Last update: 2013-07-19 01:01    [W:3.433 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site