]> git.sur5r.net Git - u-boot/blobdiff - net/eth.c
PPC: Use r2 instead of r29 as global data pointer
[u-boot] / net / eth.c
index d2fced8bbbcc053ba328ea4e1a0e59c724651c18..75175ec62b90c8fc1d79f840dfe4c5b806ed256a 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -60,7 +60,9 @@ extern int npe_initialize(bd_t *);
 extern int uec_initialize(int);
 extern int bfin_EMAC_initialize(bd_t *);
 extern int atstk1000_eth_initialize(bd_t *);
+extern int atngw100_eth_initialize(bd_t *);
 extern int mcffec_initialize(bd_t*);
+extern int mcdmafec_initialize(bd_t*);
 
 #ifdef CONFIG_API
 extern void (*push_packet)(volatile void *, int);
@@ -217,6 +219,9 @@ int eth_initialize(bd_t *bis)
 #if defined(CONFIG_UEC_ETH3)
        uec_initialize(2);
 #endif
+#if defined(CONFIG_UEC_ETH4)
+       uec_initialize(3);
+#endif
 
 #if defined(FEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
        fec_initialize(bis);
@@ -269,9 +274,15 @@ int eth_initialize(bd_t *bis)
 #if defined(CONFIG_ATSTK1000)
        atstk1000_eth_initialize(bis);
 #endif
+#if defined(CONFIG_ATNGW100)
+       atngw100_eth_initialize(bis);
+#endif
 #if defined(CONFIG_MCFFEC)
        mcffec_initialize(bis);
 #endif
+#if defined(CONFIG_FSLDMAFEC)
+       mcdmafec_initialize(bis);
+#endif
 
        if (!eth_devices) {
                puts ("No ethernet found.\n");
@@ -433,7 +444,7 @@ int eth_init(bd_t *bis)
        do {
                debug ("Trying %s\n", eth_current->name);
 
-               if (!eth_current->init(eth_current,bis)) {
+               if (eth_current->init(eth_current,bis) >= 0) {
                        eth_current->state = ETH_STATE_ACTIVE;
 
                        return 0;
@@ -522,6 +533,15 @@ int eth_receive(volatile void *packet, int length)
 void eth_try_another(int first_restart)
 {
        static struct eth_device *first_failed = NULL;
+       char *ethrotate;
+
+       /*
+        * Do not rotate between network interfaces when
+        * 'ethrotate' variable is set to 'no'.
+        */
+       if (((ethrotate = getenv ("ethrotate")) != NULL) &&
+           (strcmp(ethrotate, "no") == 0))
+               return;
 
        if (!eth_current)
                return;