summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNélio Laranjeiro2013-01-18 12:37:27 +0100
committerNélio Laranjeiro2013-01-18 14:49:02 +0100
commit1f14aa56a3c9c19dcf08a2158eddbb403ae808a4 (patch)
tree08d8cac23df5049cfb4a3c2f05754b1a7166a2c4
parenteb8c0a03f2d0a3b5d2d71699672a0e865ef4f807 (diff)
polux/linux/drivers/net/synop3504: move MIU synchro, refs #3574
Checking that the DMA Ethernet has flushed its MIU before the loop is enough. This allows to avoid a high latency while the DMA continues processing frames.
-rw-r--r--polux/linux-2.6.10/drivers/net/synop3504/synop3504.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/polux/linux-2.6.10/drivers/net/synop3504/synop3504.c b/polux/linux-2.6.10/drivers/net/synop3504/synop3504.c
index 98aa54f87d..1440db06ec 100644
--- a/polux/linux-2.6.10/drivers/net/synop3504/synop3504.c
+++ b/polux/linux-2.6.10/drivers/net/synop3504/synop3504.c
@@ -217,15 +217,14 @@ synop3504_poll (struct net_device *dev, int *budget)
}
ibudget = tbudget;
- do
- {
#ifdef CONFIG_CHIP_FEATURE_MIU_CTRL
//Flush AHB2MIU
AHB2MIU_FLUSH_REG_VA = AHB2MIU_BF (FLUSH_ETH1_DMA, 1);
while (AHB2MIU_BFEXT (FLUSH_ETH1_DMA, AHB2MIU_FLUSH_REG_VA))
;
#endif
-
+ do
+ {
//Get and cleanup IRQ status as soon as possible
status = SynopsysReadDmaReg (tc, DmaStatus);
SynopsysWriteDmaReg (tc, DmaStatus, status);