net: xilinx: Handle error value from phy_startup()
PATCH 1/3 net: xilinx: Handle error value from phy_startup()
Handle error returned by phy_startup() properly.
---
drivers/net/xilinx_emaclite.c | 4 +++- drivers/net/zynq_gem.c | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-)
drivers/net/xilinx_emaclite.c +3 -1
@@ -302,7 +302,9 @@ static int setup_phy(struct udevice *dev) phydev->advertising = supported; emaclite->phydev = phydev;phy_config (phydev); -phy_startup (phydev); + ret =phy_startup (phydev); +if (ret) +return ret;if (!phydev->link) {printf ("%s: No link.\n" , phydev->dev->name);
drivers/net/zynq_gem.c +4 -1
@@ -360,6 +360,7 @@ static int zynq_phy_init(struct udevice *dev)static int zynq_gem_init (struct udevice *dev) {u32 i, nwconfig; +int ret;unsigned long clk_rate =0 ;struct zynq_gem_priv *priv =dev_get_priv (dev);struct zynq_gem_regs *regs = priv->iobase;
@@ -427,7 +428,9 @@ static int zynq_gem_init(struct udevice *dev) priv->init++; } -phy_startup (priv->phydev); + ret =phy_startup (priv->phydev); +if (ret) +return ret;if (!priv->phydev->link) {printf ("%s: No link.\n" , priv->phydev->dev->name);
Signature · 1 line
1.9.1
PATCH 2/3 phy: Return correct error code when timeout happens
Return -ETIMEDOUT if timeout happens.
---
drivers/net/phy/marvell.c | 4 ++-- drivers/net/phy/phy.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
drivers/net/phy/marvell.c +2 -2
@@ -103,7 +103,7 @@ static int m88e1011s_config(struct phy_device *phydev)/* Parse the 88E1011's status register for speed and duplex * information */ -static uint m88e1xxx_parse_status (struct phy_device *phydev) +static int m88e1xxx_parse_status (struct phy_device *phydev) {unsigned int speed;unsigned int mii_reg;
@@ -120,7 +120,7 @@ static uint m88e1xxx_parse_status(struct phy_device *phydev)if (i >PHY_AUTONEGOTIATE_TIMEOUT ) {puts (" TIMEOUT !\n" ); phydev->link =0 ; -break ; +return -ETIMEDOUT ; }if ((i++ %1000 ) ==0 )
drivers/net/phy/phy.c +1 -1
@@ -248,7 +248,7 @@ int genphy_update_link(struct phy_device *phydev)if (i >PHY_ANEG_TIMEOUT ) {printf (" TIMEOUT !\n" ); phydev->link =0 ; -return 0 ; +return -ETIMEDOUT ; }if (ctrlc ()) {
Signature · 1 line
1.9.1
PATCH 2/3 phy: Return correct error code when timeout happens
Quoted 3 lines · Michal Simek
Return
-ETIMEDOUTif timeout happens.Signed-off-by Michal Simek <[email protected]>
PATCH 3/3 net: phy: Handle phy_startup() error codes properly
In reply to Michal SimekPropagate error code from genphy_update_link() to phy startup().
---
drivers/net/phy/broadcom.c | 34 ++++++++++++++++++++++------------ drivers/net/phy/davicom.c | 9 ++++++--- drivers/net/phy/et1011c.c | 10 +++++++--- drivers/net/phy/lxt.c | 9 ++++++--- drivers/net/phy/marvell.c | 29 +++++++++++++++++++---------- drivers/net/phy/micrel.c | 7 ++++++- drivers/net/phy/natsemi.c | 18 ++++++++++++------ drivers/net/phy/phy.c | 9 ++++++--- drivers/net/phy/realtek.c | 28 +++++++++++++++++++--------- drivers/net/phy/smsc.c | 10 +++++++--- drivers/net/phy/vitesse.c | 8 +++++--- 11 files changed, 115 insertions(+), 56 deletions(-)
drivers/net/phy/broadcom.c +22 -12
@@ -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 = {
drivers/net/phy/davicom.c +6 -3
@@ -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 = {
drivers/net/phy/et1011c.c +7 -3
@@ -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 = {
drivers/net/phy/lxt.c +6 -3
@@ -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 = {
drivers/net/phy/marvell.c +19 -10
@@ -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 */
drivers/net/phy/micrel.c +6 -1
@@ -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)
drivers/net/phy/natsemi.c +12 -6
@@ -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 = {
drivers/net/phy/phy.c +6 -3
@@ -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)
drivers/net/phy/realtek.c +19 -9
@@ -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 */
drivers/net/phy/smsc.c +7 -3
@@ -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 = {
drivers/net/phy/vitesse.c +5 -3
@@ -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)
Signature · 1 line
1.9.1
PATCH 3/3 net: phy: Handle phy_startup() error codes properly
Quoted 3 lines · Michal Simek
Propagate error code from
genphy_update_link()to phystartup().Signed-off-by Michal Simek <[email protected]>
Thanks!!
PATCH 1/3 net: xilinx: Handle error value from phy_startup()
In reply to Michal SimekQuoted 1 line · Michal Simek
Handle error returned by
phy_startup()properly.
The series,
PATCH 1/3 net: xilinx: Handle error value from phy_startup()
In reply to Michal SimekQuoted 3 lines · Michal Simek
Handle error returned by
phy_startup()properly.Signed-off-by Michal Simek <[email protected]>