From: James Clough <james@rtetc.com>
Date: Thu, 10 Sep 2009 07:11:50 +0000 (+0200)
Subject: net: Fix problem with 405EZ ethernet interrupt
X-Git-Tag: v2025.01-rc5-pxa1908~20759
X-Git-Url: http://git.dujemihanovic.xyz/contact?a=commitdiff_plain;h=c0b46d8ead3c6c5b569c83544fd71b9d73356869;p=u-boot.git

net: Fix problem with 405EZ ethernet interrupt

On 405EZ the RX-/TX-interrupts are coalesced into one IRQ bit in the
UIC. We need to acknowledge the RX-/TX-interrupts in the
SDR0_ICINTSTAT reg as well.

This problem was introduced with commit
d1631fe1 [ppc4xx: Consolidate PPC4xx UIC defines]

Signed-off-by: James Clough <james@rtetc.com>
Signed-off-by: Stefan Roese <sr@denx.de>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
---

diff --git a/drivers/net/4xx_enet.c b/drivers/net/4xx_enet.c
index afd108415b..f2c9be0dd3 100644
--- a/drivers/net/4xx_enet.c
+++ b/drivers/net/4xx_enet.c
@@ -1717,6 +1717,15 @@ int enetInt (struct eth_device *dev)
 				rc = 0;
 			}
 		}
+#if defined(CONFIG_405EZ)
+		/*
+		 * On 405EZ the RX-/TX-interrupts are coalesced into
+		 * one IRQ bit in the UIC. We need to acknowledge the
+		 * RX-/TX-interrupts in the SDR0_ICINTSTAT reg as well.
+		 */
+		mtsdr(SDR0_ICINTSTAT,
+		      SDR_ICRX_STAT | SDR_ICTX0_STAT | SDR_ICTX1_STAT);
+#endif  /* defined(CONFIG_405EZ) */
 	} while (serviced);
 
 	return (rc);