]> git.sur5r.net Git - u-boot/blobdiff - net/eth.c
85xx: Add -mno-spe to e500/85xx builds
[u-boot] / net / eth.c
index 3373a05252197665c54b493570a5231263b35c1d..c4f24c64b63db4754aa1ea93fcd85ffbc7c1db5a 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -60,7 +60,11 @@ 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 greth_initialize(bd_t *);
+extern int atngw100_eth_initialize(bd_t *);
 extern int mcffec_initialize(bd_t*);
+extern int mcdmafec_initialize(bd_t*);
+extern int at91sam9_eth_initialize(bd_t *);
 
 #ifdef CONFIG_API
 extern void (*push_packet)(volatile void *, int);
@@ -214,6 +218,12 @@ int eth_initialize(bd_t *bis)
 #if defined(CONFIG_UEC_ETH2)
        uec_initialize(1);
 #endif
+#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);
@@ -266,9 +276,21 @@ int eth_initialize(bd_t *bis)
 #if defined(CONFIG_ATSTK1000)
        atstk1000_eth_initialize(bis);
 #endif
+#if defined(CONFIG_GRETH)
+       greth_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 defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260)
+       at91sam9_eth_initialize(bis);
+#endif
 
        if (!eth_devices) {
                puts ("No ethernet found.\n");
@@ -423,14 +445,16 @@ int eth_init(bd_t *bis)
 {
        struct eth_device* old_current;
 
-       if (!eth_current)
+       if (!eth_current) {
+               puts ("No ethernet found.\n");
                return -1;
+       }
 
        old_current = eth_current;
        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;
@@ -519,6 +543,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;