From f42a0e1962e7514a79682263192dc6d1f076db0d Mon Sep 17 00:00:00 2001
From: wdc <wdc@rock-chips.com>
Date: Wed, 6 Nov 2013 18:30:21 +0800
Subject: [PATCH] 29_vmac: Add phy number port select for switch

---
 arch/arm/configs/rk3188_ac_defconfig |  1 +
 drivers/net/eth_mac/Kconfig          | 11 +++++++++++
 drivers/net/rk29_vmac.c              |  6 ++++++
 3 files changed, 18 insertions(+)

diff --git a/arch/arm/configs/rk3188_ac_defconfig b/arch/arm/configs/rk3188_ac_defconfig
index e1d22889ee02..8ab27a2e5277 100644
--- a/arch/arm/configs/rk3188_ac_defconfig
+++ b/arch/arm/configs/rk3188_ac_defconfig
@@ -208,6 +208,7 @@ CONFIG_DM_UEVENT=y
 CONFIG_NETDEVICES=y
 CONFIG_NET_ETHERNET=y
 CONFIG_RK29_VMAC=y
+CONFIG_PHY_PORT_NUM=5
 # CONFIG_NETDEV_1000 is not set
 # CONFIG_NETDEV_10000 is not set
 CONFIG_WLAN_80211=y
diff --git a/drivers/net/eth_mac/Kconfig b/drivers/net/eth_mac/Kconfig
index 667aaa10a665..933563ae521b 100755
--- a/drivers/net/eth_mac/Kconfig
+++ b/drivers/net/eth_mac/Kconfig
@@ -38,3 +38,14 @@ choice
 
 endchoice
 
+config  PHY_PORT_NUM
+        int "phy port number selected (More than one port on Switch)"
+        depends on RK29_VMAC
+        default 0
+        help
+                 0:phy dev 0:00
+                 1:phy dev 0:01
+                 2:phy dev 0:02
+                      ---More---
+
+
diff --git a/drivers/net/rk29_vmac.c b/drivers/net/rk29_vmac.c
index d5c24dcfec1e..8a134a5a31c7 100755
--- a/drivers/net/rk29_vmac.c
+++ b/drivers/net/rk29_vmac.c
@@ -184,6 +184,11 @@ static int __devinit vmac_mii_probe(struct net_device *dev)
 	//unsigned long clock_rate;
 	int phy_addr, err;
 
+
+#if defined (CONFIG_PHY_PORT_NUM) && (CONFIG_PHY_PORT_NUM != 0)
+        if (ap->mii_bus->phy_map[CONFIG_PHY_PORT_NUM])
+            phydev = ap->mii_bus->phy_map[CONFIG_PHY_PORT_NUM];
+#else
 	/* find the first phy */
 	for (phy_addr = 0; phy_addr < PHY_MAX_ADDR; phy_addr++) {
 		if (ap->mii_bus->phy_map[phy_addr]) {
@@ -191,6 +196,7 @@ static int __devinit vmac_mii_probe(struct net_device *dev)
 			break;
 		}
 	}
+#endif
 
 	if (!phydev) {
 		dev_err(&dev->dev, "no PHY found\n");
-- 
2.34.1