diff options
Diffstat (limited to 'drivers/net/cpsw.c')
| -rw-r--r-- | drivers/net/cpsw.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c index 9bab71a21..39240d966 100644 --- a/drivers/net/cpsw.c +++ b/drivers/net/cpsw.c @@ -568,9 +568,14 @@ static void cpsw_set_slave_mac(struct cpsw_slave *slave,  static void cpsw_slave_update_link(struct cpsw_slave *slave,  				   struct cpsw_priv *priv, int *link)  { -	struct phy_device *phy = priv->phydev; +	struct phy_device *phy;  	u32 mac_control = 0; +	phy = priv->phydev; + +	if (!phy) +		return; +  	phy_startup(phy);  	*link = phy->link; @@ -947,6 +952,9 @@ static int cpsw_phy_init(struct eth_device *dev, struct cpsw_slave *slave)  			dev,  			slave->data->phy_if); +	if (!phydev) +		return -1; +  	phydev->supported &= supported;  	phydev->advertising = phydev->supported; |