net: Fix problem with 405EZ ethernet interrupt
authorJames Clough <james@rtetc.com>
Thu, 10 Sep 2009 07:11:50 +0000 (09:11 +0200)
committerBen Warren <biggerbadderben@gmail.com>
Mon, 5 Oct 2009 05:25:20 +0000 (22:25 -0700)
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>
drivers/net/4xx_enet.c

index afd108415b94093c0e6583eefc9273a9afa74d01..f2c9be0dd3f4d03a6523c9643f87780f68142af1 100644 (file)
@@ -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);