From: Daniel Hellstrom Date: Fri, 22 Oct 2010 09:34:01 +0000 (+0200) Subject: GRETH: Added extra RESET, this is needed if GRETH was stopped during an ethernet... X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=533b67d4bf310c445745bdd605edc2ff9dc6b921;p=project%2Fbcm63xx%2Fu-boot.git GRETH: Added extra RESET, this is needed if GRETH was stopped during an ethernet frame reception. Signed-off-by: Daniel Hellstrom --- diff --git a/drivers/net/greth.c b/drivers/net/greth.c index cb68d45e02..f081855f26 100644 --- a/drivers/net/greth.c +++ b/drivers/net/greth.c @@ -152,6 +152,16 @@ int greth_init(struct eth_device *dev, bd_t * bis) debug("greth_init\n"); + /* Reset core */ + GRETH_REGSAVE(®s->control, (GRETH_RESET | (greth->gb << 8) | + (greth->sp << 7) | (greth->fd << 4))); + + /* Wait for Reset to complete */ + while ( GRETH_REGLOAD(®s->control) & GRETH_RESET) ; + + GRETH_REGSAVE(®s->control, + ((greth->gb << 8) | (greth->sp << 7) | (greth->fd << 4))); + if (!greth->rxbd_base) { /* allocate descriptors */