TI Davinci EMAC: Fix in vector definition for EMAC_VERSION_2
authorSriram <srk@ti.com>
Thu, 24 Sep 2009 19:15:18 +0000 (19:15 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 25 Sep 2009 20:43:49 +0000 (13:43 -0700)
In the emac_poll function when looking for interrupt status masks
correct definition must be chosen based on EMAC_VERSION(the bit
mask has changed from version 1 to version 2).

Signed-off-by: Sriram <srk@ti.com>
Acked-by: Chaithrika U S <chaithrika@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/davinci_emac.c

index d465eaa796c464246918ee5fc62e18a261845591..65a2d0ba64e226919cb1be572c8d3de578f266b0 100644 (file)
@@ -200,6 +200,9 @@ static const char emac_version_string[] = "TI DaVinci EMAC Linux v6.1";
 /** NOTE:: For DM646x the IN_VECTOR has changed */
 #define EMAC_DM646X_MAC_IN_VECTOR_RX_INT_VEC   BIT(EMAC_DEF_RX_CH)
 #define EMAC_DM646X_MAC_IN_VECTOR_TX_INT_VEC   BIT(16 + EMAC_DEF_TX_CH)
+#define EMAC_DM646X_MAC_IN_VECTOR_HOST_INT     BIT(26)
+#define EMAC_DM646X_MAC_IN_VECTOR_STATPEND_INT BIT(27)
+
 
 /* CPPI bit positions */
 #define EMAC_CPPI_SOP_BIT              BIT(31)
@@ -2167,7 +2170,11 @@ static int emac_poll(struct napi_struct *napi, int budget)
                emac_int_enable(priv);
        }
 
-       if (unlikely(status & EMAC_DM644X_MAC_IN_VECTOR_HOST_INT)) {
+       mask = EMAC_DM644X_MAC_IN_VECTOR_HOST_INT;
+       if (priv->version == EMAC_VERSION_2)
+               mask = EMAC_DM646X_MAC_IN_VECTOR_HOST_INT;
+
+       if (unlikely(status & mask)) {
                u32 ch, cause;
                dev_err(emac_dev, "DaVinci EMAC: Fatal Hardware Error\n");
                netif_stop_queue(ndev);