diff options
Diffstat (limited to 'drivers/net/ethernet/synopsys/dwc_eth_qos.c')
-rw-r--r-- | drivers/net/ethernet/synopsys/dwc_eth_qos.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/net/ethernet/synopsys/dwc_eth_qos.c b/drivers/net/ethernet/synopsys/dwc_eth_qos.c index acce385f69d4..09f5a67da35e 100644 --- a/drivers/net/ethernet/synopsys/dwc_eth_qos.c +++ b/drivers/net/ethernet/synopsys/dwc_eth_qos.c | |||
@@ -2881,7 +2881,7 @@ static int dwceqos_probe(struct platform_device *pdev) | |||
2881 | ret = of_get_phy_mode(lp->pdev->dev.of_node); | 2881 | ret = of_get_phy_mode(lp->pdev->dev.of_node); |
2882 | if (ret < 0) { | 2882 | if (ret < 0) { |
2883 | dev_err(&lp->pdev->dev, "error in getting phy i/f\n"); | 2883 | dev_err(&lp->pdev->dev, "error in getting phy i/f\n"); |
2884 | goto err_out_clk_dis_phy; | 2884 | goto err_out_deregister_fixed_link; |
2885 | } | 2885 | } |
2886 | 2886 | ||
2887 | lp->phy_interface = ret; | 2887 | lp->phy_interface = ret; |
@@ -2889,14 +2889,14 @@ static int dwceqos_probe(struct platform_device *pdev) | |||
2889 | ret = dwceqos_mii_init(lp); | 2889 | ret = dwceqos_mii_init(lp); |
2890 | if (ret) { | 2890 | if (ret) { |
2891 | dev_err(&lp->pdev->dev, "error in dwceqos_mii_init\n"); | 2891 | dev_err(&lp->pdev->dev, "error in dwceqos_mii_init\n"); |
2892 | goto err_out_clk_dis_phy; | 2892 | goto err_out_deregister_fixed_link; |
2893 | } | 2893 | } |
2894 | 2894 | ||
2895 | ret = dwceqos_mii_probe(ndev); | 2895 | ret = dwceqos_mii_probe(ndev); |
2896 | if (ret != 0) { | 2896 | if (ret != 0) { |
2897 | netdev_err(ndev, "mii_probe fail.\n"); | 2897 | netdev_err(ndev, "mii_probe fail.\n"); |
2898 | ret = -ENXIO; | 2898 | ret = -ENXIO; |
2899 | goto err_out_clk_dis_phy; | 2899 | goto err_out_deregister_fixed_link; |
2900 | } | 2900 | } |
2901 | 2901 | ||
2902 | dwceqos_set_umac_addr(lp, lp->ndev->dev_addr, 0); | 2902 | dwceqos_set_umac_addr(lp, lp->ndev->dev_addr, 0); |
@@ -2914,7 +2914,7 @@ static int dwceqos_probe(struct platform_device *pdev) | |||
2914 | if (ret) { | 2914 | if (ret) { |
2915 | dev_err(&lp->pdev->dev, "Unable to retrieve DT, error %d\n", | 2915 | dev_err(&lp->pdev->dev, "Unable to retrieve DT, error %d\n", |
2916 | ret); | 2916 | ret); |
2917 | goto err_out_clk_dis_phy; | 2917 | goto err_out_deregister_fixed_link; |
2918 | } | 2918 | } |
2919 | dev_info(&lp->pdev->dev, "pdev->id %d, baseaddr 0x%08lx, irq %d\n", | 2919 | dev_info(&lp->pdev->dev, "pdev->id %d, baseaddr 0x%08lx, irq %d\n", |
2920 | pdev->id, ndev->base_addr, ndev->irq); | 2920 | pdev->id, ndev->base_addr, ndev->irq); |
@@ -2924,7 +2924,7 @@ static int dwceqos_probe(struct platform_device *pdev) | |||
2924 | if (ret) { | 2924 | if (ret) { |
2925 | dev_err(&lp->pdev->dev, "Unable to request IRQ %d, error %d\n", | 2925 | dev_err(&lp->pdev->dev, "Unable to request IRQ %d, error %d\n", |
2926 | ndev->irq, ret); | 2926 | ndev->irq, ret); |
2927 | goto err_out_clk_dis_phy; | 2927 | goto err_out_deregister_fixed_link; |
2928 | } | 2928 | } |
2929 | 2929 | ||
2930 | if (netif_msg_probe(lp)) | 2930 | if (netif_msg_probe(lp)) |
@@ -2935,11 +2935,14 @@ static int dwceqos_probe(struct platform_device *pdev) | |||
2935 | ret = register_netdev(ndev); | 2935 | ret = register_netdev(ndev); |
2936 | if (ret) { | 2936 | if (ret) { |
2937 | dev_err(&pdev->dev, "Cannot register net device, aborting.\n"); | 2937 | dev_err(&pdev->dev, "Cannot register net device, aborting.\n"); |
2938 | goto err_out_clk_dis_phy; | 2938 | goto err_out_deregister_fixed_link; |
2939 | } | 2939 | } |
2940 | 2940 | ||
2941 | return 0; | 2941 | return 0; |
2942 | 2942 | ||
2943 | err_out_deregister_fixed_link: | ||
2944 | if (of_phy_is_fixed_link(pdev->dev.of_node)) | ||
2945 | of_phy_deregister_fixed_link(pdev->dev.of_node); | ||
2943 | err_out_clk_dis_phy: | 2946 | err_out_clk_dis_phy: |
2944 | clk_disable_unprepare(lp->phy_ref_clk); | 2947 | clk_disable_unprepare(lp->phy_ref_clk); |
2945 | err_out_clk_dis_aper: | 2948 | err_out_clk_dis_aper: |
@@ -2959,8 +2962,11 @@ static int dwceqos_remove(struct platform_device *pdev) | |||
2959 | if (ndev) { | 2962 | if (ndev) { |
2960 | lp = netdev_priv(ndev); | 2963 | lp = netdev_priv(ndev); |
2961 | 2964 | ||
2962 | if (ndev->phydev) | 2965 | if (ndev->phydev) { |
2963 | phy_disconnect(ndev->phydev); | 2966 | phy_disconnect(ndev->phydev); |
2967 | if (of_phy_is_fixed_link(pdev->dev.of_node)) | ||
2968 | of_phy_deregister_fixed_link(pdev->dev.of_node); | ||
2969 | } | ||
2964 | mdiobus_unregister(lp->mii_bus); | 2970 | mdiobus_unregister(lp->mii_bus); |
2965 | mdiobus_free(lp->mii_bus); | 2971 | mdiobus_free(lp->mii_bus); |
2966 | 2972 | ||