ARM: tegra: dma: not required to move requestor when stopping.
It is not require to move the requestor of dma to INVALID option before stopping dma. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Acked-by: Stephen Warren <swarren@nvidia.com> Tested-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
parent
76c2f6e513
commit
8bc4f556bd
|
@ -52,8 +52,6 @@
|
|||
#define CSR_ONCE (1<<27)
|
||||
#define CSR_FLOW (1<<21)
|
||||
#define CSR_REQ_SEL_SHIFT 16
|
||||
#define CSR_REQ_SEL_MASK (0x1F<<CSR_REQ_SEL_SHIFT)
|
||||
#define CSR_REQ_SEL_INVALID (31<<CSR_REQ_SEL_SHIFT)
|
||||
#define CSR_WCOUNT_SHIFT 2
|
||||
#define CSR_WCOUNT_MASK 0xFFFC
|
||||
|
||||
|
@ -183,18 +181,12 @@ static void tegra_dma_stop(struct tegra_dma_channel *ch)
|
|||
|
||||
static int tegra_dma_cancel(struct tegra_dma_channel *ch)
|
||||
{
|
||||
u32 csr;
|
||||
unsigned long irq_flags;
|
||||
|
||||
spin_lock_irqsave(&ch->lock, irq_flags);
|
||||
while (!list_empty(&ch->list))
|
||||
list_del(ch->list.next);
|
||||
|
||||
csr = readl(ch->addr + APB_DMA_CHAN_CSR);
|
||||
csr &= ~CSR_REQ_SEL_MASK;
|
||||
csr |= CSR_REQ_SEL_INVALID;
|
||||
writel(csr, ch->addr + APB_DMA_CHAN_CSR);
|
||||
|
||||
tegra_dma_stop(ch);
|
||||
|
||||
spin_unlock_irqrestore(&ch->lock, irq_flags);
|
||||
|
|
Loading…
Reference in New Issue