Add support for multiple PHYs.
diff --git a/include/configs/Alaska8220.h b/include/configs/Alaska8220.h
index 9a3acfe..c08b2c3 100644
--- a/include/configs/Alaska8220.h
+++ b/include/configs/Alaska8220.h
@@ -90,6 +90,7 @@
 				CFG_CMD_SNTP	)
 
 #define CONFIG_NET_MULTI
+#define CONFIG_MII
 
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
diff --git a/include/configs/IAD210.h b/include/configs/IAD210.h
index fd15b85..32d59a4 100644
--- a/include/configs/IAD210.h
+++ b/include/configs/IAD210.h
@@ -88,6 +88,7 @@
 
 # undef  CONFIG_SCC1_ENET		/* disable SCC1 ethernet */
 # define CONFIG_FEC_ENET    1	/* use FEC ethernet  */
+# define CONFIG_MII         1
 # define CFG_DISCOVER_PHY   1
 # define CONFIG_FEC_UTOPIA  1
 # define CONFIG_ETHADDR     08:00:06:26:A2:6D
diff --git a/include/configs/ICU862.h b/include/configs/ICU862.h
index b0c8ac6..73ff0a3 100644
--- a/include/configs/ICU862.h
+++ b/include/configs/ICU862.h
@@ -85,6 +85,7 @@
 
 #undef	CONFIG_SCC1_ENET		/* disable SCC1 ethernet */
 #define	CONFIG_FEC_ENET		1	/* use FEC ethernet  */
+#define	CONFIG_MII		1
 #if 1
 #define CFG_DISCOVER_PHY	1
 #else
diff --git a/include/configs/IceCube.h b/include/configs/IceCube.h
index 6a9a05d..9d4e7b2 100644
--- a/include/configs/IceCube.h
+++ b/include/configs/IceCube.h
@@ -71,6 +71,7 @@
 #define CFG_XLB_PIPELINING	1
 
 #define CONFIG_NET_MULTI	1
+#define CONFIG_MII		1
 #define CONFIG_EEPRO100		1
 #define CFG_RX_ETH_BUFFER	8  /* use 8 rx buffer on eepro100  */
 #define CONFIG_NS8382X		1
@@ -79,6 +80,7 @@
 
 #else	/* MPC5100 */
 
+#define CONFIG_MII		1
 #define ADD_PCI_CMD		0  /* no CFG_CMD_PCI */
 
 #endif
diff --git a/include/configs/KUP4K.h b/include/configs/KUP4K.h
index 3457770..4d39b35 100644
--- a/include/configs/KUP4K.h
+++ b/include/configs/KUP4K.h
@@ -141,6 +141,7 @@
 #define CONFIG_RTC_PCF8563		/* use Philips PCF8563 RTC	*/
 
 #define CFG_DISCOVER_PHY
+#define CONFIG_MII
 
 #if 0
 #define CONFIG_ETHADDR                  00:0B:64:00:00:00 /* our OUI from IEEE */
diff --git a/include/configs/KUP4X.h b/include/configs/KUP4X.h
index 5bad824..9a42cb1 100644
--- a/include/configs/KUP4X.h
+++ b/include/configs/KUP4X.h
@@ -150,6 +150,7 @@
 #define CONFIG_RTC_PCF8563		/* use Philips PCF8563 RTC	*/
 
 #define CFG_DISCOVER_PHY
+#define CONFIG_MII
 
 #if 0
 #define CONFIG_ETHADDR                  00:0B:64:80:00:00 /* our OUI from IEEE */
diff --git a/include/configs/MPC8560ADS.h b/include/configs/MPC8560ADS.h
index db878cb..2d5031b 100644
--- a/include/configs/MPC8560ADS.h
+++ b/include/configs/MPC8560ADS.h
@@ -43,7 +43,9 @@
 
 #define CONFIG_PCI
 #define CONFIG_TSEC_ENET 		/* tsec ethernet support */
+#undef CONFIG_TSEC_ENET 		/* tsec ethernet support */
 #undef  CONFIG_ETHER_ON_FCC             /* cpm FCC ethernet support */
+#define  CONFIG_ETHER_ON_FCC             /* cpm FCC ethernet support */
 #define CONFIG_ENV_OVERWRITE
 #define CONFIG_SPD_EEPROM		/* Use SPD EEPROM for DDR setup*/
 #define CONFIG_DDR_DLL			/* possible DLL fix needed */
diff --git a/include/configs/PM520.h b/include/configs/PM520.h
index 49ae55c..1189989 100644
--- a/include/configs/PM520.h
+++ b/include/configs/PM520.h
@@ -72,6 +72,7 @@
 #define CONFIG_PCI_IO_SIZE	0x01000000
 
 #define CONFIG_NET_MULTI	1
+#define CONFIG_MII		1
 #define CONFIG_EEPRO100		1
 #define CFG_RX_ETH_BUFFER	8  /* use 8 rx buffer on eepro100  */
 #undef  CONFIG_NS8382X
diff --git a/include/configs/PM854.h b/include/configs/PM854.h
index 0b8c71d..da01186 100644
--- a/include/configs/PM854.h
+++ b/include/configs/PM854.h
@@ -235,7 +235,7 @@
 #define CONFIG_NET_MULTI
 #define CONFIG_PCI_PNP			/* do pci plug-and-play */
 
-/* #define CONFIG_EEPRO100	XXX - FIXME: conflicts when CONFIG_MII is enabled */
+#define CONFIG_EEPRO100
 #define	CONFIG_E1000
 #undef	CONFIG_TULIP
 
diff --git a/include/configs/QS860T.h b/include/configs/QS860T.h
index 8d29a31..37c5cf4 100644
--- a/include/configs/QS860T.h
+++ b/include/configs/QS860T.h
@@ -56,6 +56,7 @@
 #define CONFIG_QS860T		1	/* ...on a QS860T module */
 
 #define CONFIG_FEC_ENET		1	/* FEC 10/100BaseT ethernet */
+#define CONFIG_MII
 #define FEC_INTERRUPT		SIU_LEVEL1
 #undef CONFIG_SCC1_ENET			/* SCC1 10BaseT ethernet */
 #define CFG_DISCOVER_PHY
diff --git a/include/configs/SXNI855T.h b/include/configs/SXNI855T.h
index 9ce83b4..c1c765f 100644
--- a/include/configs/SXNI855T.h
+++ b/include/configs/SXNI855T.h
@@ -142,6 +142,7 @@
 # define CFG_I2C_EEPROM_ADDR_LEN 2	/* two byte address		*/
 
 #define	CONFIG_FEC_ENET		1	/* use FEC ethernet  */
+#define	CONFIG_MII		1
 
 #define CFG_DISCOVER_PHY
 
diff --git a/include/configs/TQM5200.h b/include/configs/TQM5200.h
index a57f7cf..1236ce3 100644
--- a/include/configs/TQM5200.h
+++ b/include/configs/TQM5200.h
@@ -83,7 +83,7 @@
 #define CONFIG_PCI_IO_SIZE	0x01000000
 
 #define CONFIG_NET_MULTI	1
-/* #define CONFIG_EEPRO100	XXX - FIXME: conflicts when CONFIG_MII is enabled */
+#define CONFIG_EEPRO100
 #define CFG_RX_ETH_BUFFER	8  /* use 8 rx buffer on eepro100  */
 #define CONFIG_NS8382X		1
 #endif	/* CONFIG_STK52XX */
diff --git a/include/configs/TQM834x.h b/include/configs/TQM834x.h
index 0fad36a..d434eb7 100644
--- a/include/configs/TQM834x.h
+++ b/include/configs/TQM834x.h
@@ -280,6 +280,7 @@
 
 
 #undef CONFIG_EEPRO100
+#define CONFIG_EEPRO100
 #undef CONFIG_TULIP
 
 #if !defined(CONFIG_PCI_PNP)
diff --git a/include/configs/TQM8560.h b/include/configs/TQM8560.h
index 04966d7..d2c230d 100644
--- a/include/configs/TQM8560.h
+++ b/include/configs/TQM8560.h
@@ -283,7 +283,7 @@
 #define CONFIG_NET_MULTI
 #define CONFIG_PCI_PNP			/* do pci plug-and-play */
 
-/* #define CONFIG_EEPRO100	XXX - FIXME: conflicts when CONFIG_MII is enabled */
+#define CONFIG_EEPRO100
 #undef CONFIG_TULIP
 
 #if !defined(CONFIG_PCI_PNP)
diff --git a/include/configs/Total5200.h b/include/configs/Total5200.h
index 7e3c11e..ab02dd1 100644
--- a/include/configs/Total5200.h
+++ b/include/configs/Total5200.h
@@ -100,6 +100,7 @@
 #define CONFIG_PCI_IO_SIZE	0x01000000
 
 #define CONFIG_NET_MULTI	1
+#define CONFIG_MII		1
 #define CONFIG_EEPRO100		1
 #define CFG_RX_ETH_BUFFER	8  /* use 8 rx buffer on eepro100  */
 #define CONFIG_NS8382X		1
@@ -108,6 +109,7 @@
 
 #else	/* MGT5100 */
 
+#define CONFIG_MII		1
 #define ADD_PCI_CMD		0  /* no CFG_CMD_PCI */
 
 #endif
diff --git a/include/configs/Yukon8220.h b/include/configs/Yukon8220.h
index 2d3c0e5..37ef105 100644
--- a/include/configs/Yukon8220.h
+++ b/include/configs/Yukon8220.h
@@ -90,6 +90,7 @@
 				CFG_CMD_SNTP	)
 
 #define CONFIG_NET_MULTI
+#define CONFIG_MII
 
 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
 #include <cmd_confdefs.h>
diff --git a/include/configs/at91rm9200dk.h b/include/configs/at91rm9200dk.h
index f0c0283..8fad55d 100644
--- a/include/configs/at91rm9200dk.h
+++ b/include/configs/at91rm9200dk.h
@@ -98,7 +98,7 @@
 /* #define CONFIG_ENV_OVERWRITE	1 */
 
 #define CONFIG_COMMANDS		\
-		       ((CONFIG_CMD_DFL | \
+		       ((CONFIG_CMD_DFL | CFG_CMD_MII |\
 			CFG_CMD_DHCP ) & \
 		      ~(CFG_CMD_BDI | \
 			CFG_CMD_IMI | \
diff --git a/include/configs/cpci5200.h b/include/configs/cpci5200.h
index 3898f91..711e348 100644
--- a/include/configs/cpci5200.h
+++ b/include/configs/cpci5200.h
@@ -83,6 +83,8 @@
 #define CONFIG_PCI_IO_PHYS	CONFIG_PCI_IO_BUS
 #define CONFIG_PCI_IO_SIZE	0x01000000
 #endif
+
+#define CONFIG_MII
 #if 0				/* test-only !!! */
 #define CONFIG_NET_MULTI	1
 #define CONFIG_EEPRO100		1
diff --git a/include/configs/o2dnt.h b/include/configs/o2dnt.h
index 62b90e8..04d7d8a 100644
--- a/include/configs/o2dnt.h
+++ b/include/configs/o2dnt.h
@@ -69,7 +69,7 @@
 #define CFG_XLB_PIPELINING	1
 
 #define CONFIG_NET_MULTI	1
-/* #define CONFIG_EEPRO100	XXX - FIXME: conflicts when CONFIG_MII is enabled */
+#define CONFIG_EEPRO100
 #define CFG_RX_ETH_BUFFER	8  /* use 8 rx buffer on eepro100  */
 #define CONFIG_NS8382X		1
 
diff --git a/include/configs/pf5200.h b/include/configs/pf5200.h
index a8edff2..385e6d7 100644
--- a/include/configs/pf5200.h
+++ b/include/configs/pf5200.h
@@ -83,6 +83,7 @@
 #define CONFIG_PCI_IO_PHYS	CONFIG_PCI_IO_BUS
 #define CONFIG_PCI_IO_SIZE	0x01000000
 
+#define CONFIG_MII		1
 #if 0				/* test-only !!! */
 #define CONFIG_NET_MULTI	1
 #define CONFIG_EEPRO100		1
diff --git a/include/miiphy.h b/include/miiphy.h
index afdd5a7..3c6ee77 100644
--- a/include/miiphy.h
+++ b/include/miiphy.h
@@ -38,18 +38,38 @@
 #ifndef _miiphy_h_
 #define _miiphy_h_
 
+#include <net.h>
 
-int  miiphy_read(unsigned char addr, unsigned char reg, unsigned short * value);
-int  miiphy_write(unsigned char addr, unsigned char reg, unsigned short value);
-int  miiphy_info(unsigned char addr, unsigned int  *oui, unsigned char *model,
-		 unsigned char *rev);
-int  miiphy_reset(unsigned char addr);
-int  miiphy_speed(unsigned char addr);
-int  miiphy_duplex(unsigned char addr);
+int  miiphy_read(char *devname, unsigned char addr, unsigned char reg,
+		unsigned short *value);
+int  miiphy_write(char *devname, unsigned char addr, unsigned char reg,
+		unsigned short value);
+int  miiphy_info(char *devname, unsigned char addr, unsigned int  *oui,
+		unsigned char *model, unsigned char *rev);
+int  miiphy_reset(char *devname, unsigned char addr);
+int  miiphy_speed(char *devname, unsigned char addr);
+int  miiphy_duplex(char *devname, unsigned char addr);
 #ifdef CFG_FAULT_ECHO_LINK_DOWN
-int  miiphy_link(unsigned char addr);
+int  miiphy_link(char *devname, unsigned char addr);
 #endif
 
+void miiphy_register(char *devname,
+	int (* read)(char *devname, unsigned char addr,
+		unsigned char reg, unsigned short *value),
+	int (* write)(char *devname, unsigned char addr,
+		unsigned char reg, unsigned short value));
+
+int miiphy_set_current_dev(char *devname);
+char *miiphy_get_current_dev(void);
+
+void miiphy_listdev(void);
+
+#define BB_MII_DEVNAME	"bbmii"
+
+int bb_miiphy_read (char *devname, unsigned char addr,
+		unsigned char reg, unsigned short *value);
+int bb_miiphy_write (char *devname, unsigned char addr,
+		unsigned char reg, unsigned short value);
 
 /* phy seed setup */
 #define AUTO			99
diff --git a/include/net.h b/include/net.h
index 47eab59..461e038 100644
--- a/include/net.h
+++ b/include/net.h
@@ -114,6 +114,7 @@
 extern void eth_set_current(void);		/* set nterface to ethcur var.  */
 #endif
 extern struct eth_device *eth_get_dev(void);	/* get the current device MAC	*/
+extern struct eth_device *eth_get_dev_by_name(char *devname); /* get device	*/
 extern int eth_get_dev_index (void);		/* get the device index         */
 extern void eth_set_enetaddr(int num, char* a);	/* Set new MAC address		*/