[U-Boot] [PATCH] net: phy/cortina: Add four phy addresses support

Chunhe Lan Chunhe.Lan at freescale.com
Wed Apr 30 04:54:30 CEST 2014


Before CORTINA driver only supports two phy addresses.
This patch adds the four phy addresses support for
CORTINA PHY module.

Signed-off-by: Chunhe Lan <Chunhe.Lan at freescale.com>
---
 drivers/net/phy/cortina.c |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/drivers/net/phy/cortina.c b/drivers/net/phy/cortina.c
index 7e46679..1b9434f 100644
--- a/drivers/net/phy/cortina.c
+++ b/drivers/net/phy/cortina.c
@@ -289,25 +289,41 @@ int phy_cortina_init(void)
 int get_phy_id(struct mii_dev *bus, int addr, int devad, u32 *phy_id)
 {
 	int phy_reg;
+	bool cortina_phy = false;
+
+	switch (addr) {
+#ifdef CORTINA_PHY_ADDR1
+	case CORTINA_PHY_ADDR1:
+#endif
+#ifdef CORTINA_PHY_ADDR2
+	case CORTINA_PHY_ADDR2:
+#endif
+#ifdef CORTINA_PHY_ADDR3
+	case CORTINA_PHY_ADDR3:
+#endif
+#ifdef CORTINA_PHY_ADDR4
+	case CORTINA_PHY_ADDR4:
+#endif
+		cortina_phy = true;
+		break;
+	default:
+		break;
+	}
 
-#if defined(CORTINA_PHY_ADDR1) || defined(CORTINA_PHY_ADDR2)
 	/* Cortina PHY has non-standard offset of PHY ID registers */
-	if (addr == CORTINA_PHY_ADDR1 || addr == CORTINA_PHY_ADDR2)
+	if (cortina_phy)
 		phy_reg = bus->read(bus, addr, 0, VILLA_GLOBAL_CHIP_ID_LSB);
 	else
-#endif
 		phy_reg = bus->read(bus, addr, devad, MII_PHYSID1);
 
 	if (phy_reg < 0)
 		return -EIO;
 
 	*phy_id = (phy_reg & 0xffff) << 16;
-#if defined(CORTINA_PHY_ADDR1) || defined(CORTINA_PHY_ADDR2)
 	/* Cortina PHY has non-standard offset of PHY ID registers */
-	if (addr == CORTINA_PHY_ADDR1 || addr == CORTINA_PHY_ADDR2)
+	if (cortina_phy)
 		phy_reg = bus->read(bus, addr, 0, VILLA_GLOBAL_CHIP_ID_MSB);
 	else
-#endif
 		phy_reg = bus->read(bus, addr, devad, MII_PHYSID2);
 
 	if (phy_reg < 0)
-- 
1.7.6.5



More information about the U-Boot mailing list