summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2009-10-09 11:57:07 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2009-10-09 11:57:07 +0200
commit67551e7a76b620ce3a2375bdda6dd5f294d5d084 (patch)
tree0bff7295adf9cac3b014eb2f054932a5593c0698
parent56d833d07932d5978df50bb95d5f03803288f74c (diff)
downloadbarebox-67551e7a76b620ce3a2375bdda6dd5f294d5d084.tar.gz
barebox-67551e7a76b620ce3a2375bdda6dd5f294d5d084.tar.xz
fec_imx: initialize buffers on open time
We need to redo buffer initialization each time we open the device, not only once on init time. Otherwise network does not work if the last transfer was interrupted with ctrl-c Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/net/fec_imx.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/net/fec_imx.c b/drivers/net/fec_imx.c
index 43652c8915..2b35825b00 100644
--- a/drivers/net/fec_imx.c
+++ b/drivers/net/fec_imx.c
@@ -257,12 +257,6 @@ static int fec_init(struct eth_device *dev)
struct fec_priv *fec = (struct fec_priv *)dev->priv;
/*
- * Initialize RxBD/TxBD rings
- */
- fec_rbd_init(fec, FEC_RBD_NUM, FEC_MAX_PKT_SIZE);
- fec_tbd_init(fec);
-
- /*
* Clear FEC-Lite interrupt event register(IEVENT)
*/
writel(0xffffffff, fec->regs + FEC_IEVENT);
@@ -337,6 +331,12 @@ static int fec_open(struct eth_device *edev)
struct fec_priv *fec = (struct fec_priv *)edev->priv;
int ret;
+ /*
+ * Initialize RxBD/TxBD rings
+ */
+ fec_rbd_init(fec, FEC_RBD_NUM, FEC_MAX_PKT_SIZE);
+ fec_tbd_init(fec);
+
/* full-duplex, heartbeat disabled */
writel(1 << 2, fec->regs + FEC_X_CNTRL);
fec->rbd_index = 0;