From 333d923ed403b731852025cf6521c2040afe6b14 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 4 Feb 2009 16:49:45 +0800 Subject: [PATCH] --- yaml --- r: 130899 b: refs/heads/master c: 41245ac5952e5b05e6fbb7c188eae0947f640189 h: refs/heads/master i: 130897: 5b8176b71390792510fa84b65f5d805c7cf2b8fe 130895: c87c6c7c7beae520f9fcf51e6c31fb0271d26b80 v: v3 --- [refs] | 2 +- trunk/arch/blackfin/kernel/bfin_dma_5xx.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 4c57227004de..78bfa28ddc97 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c6bbd8ac54742f657bd223e03b5b70e73ba092cd +refs/heads/master: 41245ac5952e5b05e6fbb7c188eae0947f640189 diff --git a/trunk/arch/blackfin/kernel/bfin_dma_5xx.c b/trunk/arch/blackfin/kernel/bfin_dma_5xx.c index 07e02c0d1c07..8531693fb48d 100644 --- a/trunk/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/trunk/arch/blackfin/kernel/bfin_dma_5xx.c @@ -249,6 +249,13 @@ static void __dma_memcpy(u32 daddr, s16 dmod, u32 saddr, s16 smod, size_t cnt, u spin_lock_irqsave(&mdma_lock, flags); + /* Force a sync in case a previous config reset on this channel + * occurred. This is needed so subsequent writes to DMA registers + * are not spuriously lost/corrupted. Do it under irq lock and + * without the anomaly version (because we are atomic already). + */ + __builtin_bfin_ssync(); + if (bfin_read_MDMA_S0_CONFIG()) while (!(bfin_read_MDMA_D0_IRQ_STATUS() & DMA_DONE)) continue;