ADMA driver will support more than cyclic type of transaction.
So this patch limits the cyclic callback for the cyclic type
only in order to support other types.

Signed-off-by: Nicolin Chen <nicoleots...@gmail.com>
---
 drivers/dma/tegra210-adma.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c
index 09b46f7..5b5d298 100644
--- a/drivers/dma/tegra210-adma.c
+++ b/drivers/dma/tegra210-adma.c
@@ -111,6 +111,7 @@ struct tegra_adma_desc {
        size_t                          buf_len;
        size_t                          period_len;
        size_t                          num_periods;
+       bool                            cyclic;
 };
 
 /*
@@ -408,7 +409,8 @@ static irqreturn_t tegra_adma_isr(int irq, void *dev_id)
                return IRQ_NONE;
        }
 
-       vchan_cyclic_callback(&tdc->desc->vd);
+       if (tdc->desc->cyclic)
+               vchan_cyclic_callback(&tdc->desc->vd);
 
        spin_unlock_irqrestore(&tdc->vc.lock, flags);
 
@@ -557,6 +559,7 @@ static struct dma_async_tx_descriptor 
*tegra_adma_prep_dma_cyclic(
        if (!desc)
                return NULL;
 
+       desc->cyclic = true;
        desc->buf_len = buf_len;
        desc->period_len = period_len;
        desc->num_periods = buf_len / period_len;
-- 
2.1.4

Reply via email to