]> git.sur5r.net Git - u-boot/commitdiff
net: phy: Handle phy_startup() error codes properly
authorMichal Simek <michal.simek@xilinx.com>
Wed, 18 May 2016 10:46:12 +0000 (12:46 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 24 May 2016 11:17:59 +0000 (13:17 +0200)
Propagate error code from genphy_update_link() to phy startup().

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
drivers/net/phy/broadcom.c
drivers/net/phy/davicom.c
drivers/net/phy/et1011c.c
drivers/net/phy/lxt.c
drivers/net/phy/marvell.c
drivers/net/phy/micrel.c
drivers/net/phy/natsemi.c
drivers/net/phy/phy.c
drivers/net/phy/realtek.c
drivers/net/phy/smsc.c
drivers/net/phy/vitesse.c

index 4b2808eff00f27320ea60fc15c7ac089f6b50faa..9871cc3edd7c4df6f688bff425a73814fe8eaa85 100644 (file)
@@ -84,11 +84,14 @@ static int bcm54xx_parse_status(struct phy_device *phydev)
 
 static int bcm54xx_startup(struct phy_device *phydev)
 {
+       int ret;
+
        /* Read the Status (2x to make sure link is right) */
-       genphy_update_link(phydev);
-       bcm54xx_parse_status(phydev);
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
 
-       return 0;
+       return bcm54xx_parse_status(phydev);
 }
 
 /* Broadcom BCM5482S */
@@ -139,11 +142,14 @@ static int bcm5482_config(struct phy_device *phydev)
 
 static int bcm_cygnus_startup(struct phy_device *phydev)
 {
+       int ret;
+
        /* Read the Status (2x to make sure link is right) */
-       genphy_update_link(phydev);
-       genphy_parse_link(phydev);
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
 
-       return 0;
+       return genphy_parse_link(phydev);
 }
 
 static int bcm_cygnus_config(struct phy_device *phydev)
@@ -239,17 +245,21 @@ static u32 bcm5482_parse_serdes_sr(struct phy_device *phydev)
  */
 static int bcm5482_startup(struct phy_device *phydev)
 {
+       int ret;
+
        if (bcm5482_is_serdes(phydev)) {
                bcm5482_parse_serdes_sr(phydev);
                phydev->port = PORT_FIBRE;
-       } else {
-               /* Wait for auto-negotiation to complete or fail */
-               genphy_update_link(phydev);
-               /* Parse BCM54xx copper aux status register */
-               bcm54xx_parse_status(phydev);
+               return 0;
        }
 
-       return 0;
+       /* Wait for auto-negotiation to complete or fail */
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       /* Parse BCM54xx copper aux status register */
+       return bcm54xx_parse_status(phydev);
 }
 
 static struct phy_driver BCM5461S_driver = {
index 0c039fe79ff19401ba4c2b8521487f3e5dfd75a7..0a6e4107ba5dfd0f005a2c2bc06bc5d9a1dc0a4a 100644 (file)
@@ -60,10 +60,13 @@ static int dm9161_parse_status(struct phy_device *phydev)
 
 static int dm9161_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       dm9161_parse_status(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return dm9161_parse_status(phydev);
 }
 
 static struct phy_driver DM9161_driver = {
index 70c15e2f20c9fe63778d7c2e6caa481e9e556035..2fe01327faaea181c4ce6bf1f0cd0127f41fef79 100644 (file)
@@ -79,9 +79,13 @@ static int et1011c_parse_status(struct phy_device *phydev)
 
 static int et1011c_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       et1011c_parse_status(phydev);
-       return 0;
+       int ret;
+
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return et1011c_parse_status(phydev);
 }
 
 static struct phy_driver et1011c_driver = {
index 91838ce5ea174c08555d813f7922525802c3d914..9abc2a84f9f6492e32867f3c2654123e4bdcedfa 100644 (file)
@@ -49,10 +49,13 @@ static int lxt971_parse_status(struct phy_device *phydev)
 
 static int lxt971_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       lxt971_parse_status(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return lxt971_parse_status(phydev);
 }
 
 static struct phy_driver LXT971_driver = {
index d24451be0a2d6fd56ff413e69cfc24877b79688b..64713fbaebf4ff22397aece3da7058998c1414f5 100644 (file)
@@ -162,10 +162,13 @@ static int m88e1xxx_parse_status(struct phy_device *phydev)
 
 static int m88e1011s_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       m88e1xxx_parse_status(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return m88e1xxx_parse_status(phydev);
 }
 
 /* Marvell 88E1111S */
@@ -358,13 +361,16 @@ static int m88e1118_config(struct phy_device *phydev)
 
 static int m88e1118_startup(struct phy_device *phydev)
 {
+       int ret;
+
        /* Change Page Number */
        phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1118_PHY_PAGE, 0x0000);
 
-       genphy_update_link(phydev);
-       m88e1xxx_parse_status(phydev);
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
 
-       return 0;
+       return m88e1xxx_parse_status(phydev);
 }
 
 /* Marvell 88E1121R */
@@ -421,12 +427,15 @@ static int m88e1145_config(struct phy_device *phydev)
 
 static int m88e1145_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
+       int ret;
+
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
        phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1145_PHY_LED_CONTROL,
                        MIIM_88E1145_PHY_LED_DIRECT);
-       m88e1xxx_parse_status(phydev);
-
-       return 0;
+       return m88e1xxx_parse_status(phydev);
 }
 
 /* Marvell 88E1149S */
index 8fcf737cb8fa755f44a4caeb7f408563ce5deb16..b08788a2b0516dfd3517b5f08b6a2e0714a21c9c 100644 (file)
@@ -181,7 +181,12 @@ static struct phy_driver KS8721_driver = {
 static int ksz90xx_startup(struct phy_device *phydev)
 {
        unsigned phy_ctl;
-       genphy_update_link(phydev);
+       int ret;
+
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
        phy_ctl = phy_read(phydev, MDIO_DEVAD_NONE, MII_KSZ90xx_PHY_CTL);
 
        if (phy_ctl & MIIM_KSZ90xx_PHYCTL_DUPLEX)
index d2e4c3c487e385bd1f130b096acd5955860fe945..1592e9b7b97536bd59530d1c9e29ac330950048d 100644 (file)
@@ -93,10 +93,13 @@ static int dp83865_parse_status(struct phy_device *phydev)
 
 static int dp83865_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       dp83865_parse_status(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return dp83865_parse_status(phydev);
 }
 
 
@@ -134,10 +137,13 @@ static int dp83848_parse_status(struct phy_device *phydev)
 
 static int dp83848_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       dp83848_parse_status(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return dp83848_parse_status(phydev);
 }
 
 static struct phy_driver DP83848_driver = {
index 68e752e093151f8020b6aa141cddb9531db1035e..98986bb6f13f0660685c9ec6b89d02d865f9b505 100644 (file)
@@ -431,10 +431,13 @@ int genphy_config(struct phy_device *phydev)
 
 int genphy_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       genphy_parse_link(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return genphy_parse_link(phydev);
 }
 
 int genphy_shutdown(struct phy_device *phydev)
index 9d7f55bdae07fc7574ccdd87b4a32d89ea5c098a..7a99cb023401581a117d85976f5bf9635568c083 100644 (file)
@@ -208,28 +208,38 @@ static int rtl8211f_parse_status(struct phy_device *phydev)
 
 static int rtl8211x_startup(struct phy_device *phydev)
 {
+       int ret;
+
        /* Read the Status (2x to make sure link is right) */
-       genphy_update_link(phydev);
-       rtl8211x_parse_status(phydev);
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
 
-       return 0;
+       return rtl8211x_parse_status(phydev);
 }
 
 static int rtl8211e_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       genphy_parse_link(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return genphy_parse_link(phydev);
 }
 
 static int rtl8211f_startup(struct phy_device *phydev)
 {
+       int ret;
+
+       /* Read the Status (2x to make sure link is right) */
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
        /* Read the Status (2x to make sure link is right) */
-       genphy_update_link(phydev);
-       rtl8211f_parse_status(phydev);
 
-       return 0;
+       return rtl8211f_parse_status(phydev);
 }
 
 /* Support for RTL8211B PHY */
index 34986a29fc3fd56906073d5e702e5fad587324ea..313fcdfdc52d07270c2291debdced8b96747bda8 100644 (file)
@@ -34,9 +34,13 @@ static int smsc_parse_status(struct phy_device *phydev)
 
 static int smsc_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       smsc_parse_status(phydev);
-       return 0;
+       int ret;
+
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+
+       return smsc_parse_status(phydev);
 }
 
 static struct phy_driver lan8700_driver = {
index 941d0760b57f378e0ea183c1d46532c79f432db6..2635b821e9679f5b938e26fa500b7f11a852aab1 100644 (file)
@@ -112,10 +112,12 @@ static int vitesse_parse_status(struct phy_device *phydev)
 
 static int vitesse_startup(struct phy_device *phydev)
 {
-       genphy_update_link(phydev);
-       vitesse_parse_status(phydev);
+       int ret;
 
-       return 0;
+       ret = genphy_update_link(phydev);
+       if (ret)
+               return ret;
+       return vitesse_parse_status(phydev);
 }
 
 static int cis8204_config(struct phy_device *phydev)