diff options
Diffstat (limited to 'drivers/net/ethernet/arc/emac_arc.c')
| -rw-r--r-- | drivers/net/ethernet/arc/emac_arc.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/net/ethernet/arc/emac_arc.c b/drivers/net/ethernet/arc/emac_arc.c index 78e52d217e56..539166112993 100644 --- a/drivers/net/ethernet/arc/emac_arc.c +++ b/drivers/net/ethernet/arc/emac_arc.c @@ -20,9 +20,10 @@  static int emac_arc_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev; -	struct net_device *ndev;  	struct arc_emac_priv *priv; -	int interface, err; +	phy_interface_t interface; +	struct net_device *ndev; +	int err;  	if (!dev->of_node)  		return -ENODEV; @@ -37,9 +38,13 @@ static int emac_arc_probe(struct platform_device *pdev)  	priv->drv_name = DRV_NAME;  	priv->drv_version = DRV_VERSION; -	interface = of_get_phy_mode(dev->of_node); -	if (interface < 0) -		interface = PHY_INTERFACE_MODE_MII; +	err = of_get_phy_mode(dev->of_node, &interface); +	if (err) { +		if (err == -ENODEV) +			interface = PHY_INTERFACE_MODE_MII; +		else +			goto out_netdev; +	}  	priv->clk = devm_clk_get(dev, "hclk");  	if (IS_ERR(priv->clk)) {  |