[PATCH 2/2] net: arc_emac: disable interrupts

Beniamino Galvani b.galvani at gmail.com
Mon May 19 13:35:00 PDT 2014


The driver doesn't use interrupts and Linux driver crashes when emac
interrupts are enabled at boot: keep them disabled.

Signed-off-by: Beniamino Galvani <b.galvani at gmail.com>
---
 drivers/net/arc_emac.c |    9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/arc_emac.c b/drivers/net/arc_emac.c
index 23df3fd..8b74ea5 100644
--- a/drivers/net/arc_emac.c
+++ b/drivers/net/arc_emac.c
@@ -210,9 +210,6 @@ static int arc_emac_open(struct eth_device *edev)
 	arc_reg_set(priv, R_RX_RING, (unsigned int)priv->rxbd);
 	arc_reg_set(priv, R_TX_RING, (unsigned int)priv->txbd);
 
-	/* Enable interrupts */
-	arc_reg_set(priv, R_ENABLE, RXINT_MASK | ERR_MASK);
-
 	/* Set CONTROL */
 	arc_reg_set(priv, R_CTRL,
 		     (RX_BD_NUM << 24) |	/* RX BD table length */
@@ -317,9 +314,6 @@ static void arc_emac_halt(struct eth_device *edev)
 {
 	struct arc_emac_priv *priv = edev->priv;
 
-	/* Disable interrupts */
-	arc_reg_clr(priv, R_ENABLE, RXINT_MASK | ERR_MASK);
-
 	/* Disable EMAC */
 	arc_reg_clr(priv, R_CTRL, EN_MASK);
 }
@@ -440,6 +434,9 @@ static int arc_emac_probe(struct device_d *dev)
 	/* Set poll rate so that it polls every 1 ms */
 	arc_reg_set(priv, R_POLLRATE, clock_frequency / 1000000);
 
+	/* Disable interrupts */
+	arc_reg_set(priv, R_ENABLE, 0);
+
 	mdiobus_register(miibus);
 	eth_register(edev);
 
-- 
1.7.10.4




More information about the barebox mailing list