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);
#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);
#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");
{
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;
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;