]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - drivers/net/greth.c
Merge branch 'master' of git://git.denx.de/u-boot-imx
[people/ms/u-boot.git] / drivers / net / greth.c
index cb68d45e0275f24cc49b076594a293d1e1f4a356..6c322269464cf45cd489c0b1bc1b212ea6f29147 100644 (file)
@@ -152,13 +152,23 @@ int greth_init(struct eth_device *dev, bd_t * bis)
 
        debug("greth_init\n");
 
+       /* Reset core */
+       GRETH_REGSAVE(&regs->control, (GRETH_RESET | (greth->gb << 8) |
+               (greth->sp << 7) | (greth->fd << 4)));
+
+       /* Wait for Reset to complete */
+       while ( GRETH_REGLOAD(&regs->control) & GRETH_RESET) ;
+
+       GRETH_REGSAVE(&regs->control,
+               ((greth->gb << 8) | (greth->sp << 7) | (greth->fd << 4)));
+
        if (!greth->rxbd_base) {
 
                /* allocate descriptors */
                greth->rxbd_base = (greth_bd *)
                    memalign(0x1000, GRETH_RXBD_CNT * sizeof(greth_bd));
                greth->txbd_base = (greth_bd *)
-                   memalign(0x1000, GRETH_RXBD_CNT * sizeof(greth_bd));
+                   memalign(0x1000, GRETH_TXBD_CNT * sizeof(greth_bd));
 
                /* allocate buffers to all descriptors  */
                greth->rxbuf_base =
@@ -190,7 +200,7 @@ int greth_init(struct eth_device *dev, bd_t * bis)
        for (i = 0; i < GRETH_TXBD_CNT; i++) {
                greth->txbd_base[i].addr = 0;
                /* enable desciptor & set wrap bit if last descriptor */
-               if (i >= (GRETH_RXBD_CNT - 1)) {
+               if (i >= (GRETH_TXBD_CNT - 1)) {
                        greth->txbd_base[i].stat = GRETH_BD_WR;
                } else {
                        greth->txbd_base[i].stat = 0;
@@ -634,9 +644,9 @@ int greth_initialize(bd_t * bis)
 
        /* Make descriptor string */
        if (greth->gbit_mac) {
-               sprintf(dev->name, "GRETH 10/100/GB");
+               sprintf(dev->name, "GRETH_10/100/GB");
        } else {
-               sprintf(dev->name, "GRETH 10/100");
+               sprintf(dev->name, "GRETH_10/100");
        }
 
        /* initiate PHY, select speed/duplex depending on connected PHY */