[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