summaryrefslogtreecommitdiffstats
path: root/drivers
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 /drivers
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>
Diffstat (limited to 'drivers')
-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;