diff options
author | Ian Abbott <abbotti@mev.co.uk> | 2016-11-07 18:16:24 +0000 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-11-09 09:09:14 +0100 |
commit | c1c0203b68a7e52e1c7550c910d7f019c8b8f090 (patch) | |
tree | 34e9d2d741ec87105e77441ba6e1114fefa002c4 /drivers/net | |
parent | 184ef5a1ffd43f02c3250c1e32fe9324acd9ece8 (diff) | |
download | barebox-c1c0203b68a7e52e1c7550c910d7f019c8b8f090.tar.gz barebox-c1c0203b68a7e52e1c7550c910d7f019c8b8f090.tar.xz |
net/designware: add explicit reset of {tx|rx}_currdescnum
Driver "init" function might be called multiple times.
On every "init" Tx/Rx buffer descriptors are initialized: "descs_init"
-> "{tx|rx}_descs_init".
In its turn those init functions set MAC's "{tx|rx}desclistaddr" to
point on the first buffer descriptor in the list.
So CPU to start operation from the first buffer descriptor as well after
every "init" we have to reset "{tx|rx}_currdescnum".
[Original U-Boot patch by Alexey Brodkin <abrodkin@synopsys.com>]
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/designware.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 6702d4c4af..bd20a8793a 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -176,6 +176,7 @@ static void tx_descs_init(struct eth_device *dev) desc_p->dmamac_next = &desc_table_p[0]; writel((ulong)&desc_table_p[0], &dma_p->txdesclistaddr); + priv->tx_currdescnum = 0; } static void rx_descs_init(struct eth_device *dev) @@ -207,6 +208,7 @@ static void rx_descs_init(struct eth_device *dev) desc_p->dmamac_next = &desc_table_p[0]; writel((ulong)&desc_table_p[0], &dma_p->rxdesclistaddr); + priv->rx_currdescnum = 0; } static void descs_init(struct eth_device *dev) |