if (ret)
                return ret;
 
-       plat_dat = stmmac_probe_config_dt(pdev, stmmac_res.mac);
+       plat_dat = devm_stmmac_probe_config_dt(pdev, stmmac_res.mac);
        if (IS_ERR(plat_dat))
                return PTR_ERR(plat_dat);
 
        dwmac = devm_kzalloc(&pdev->dev, sizeof(*dwmac), GFP_KERNEL);
-       if (!dwmac) {
-               ret = -ENOMEM;
-               goto remove_config;
-       }
+       if (!dwmac)
+               return -ENOMEM;
 
        spin_lock_init(&dwmac->lock);
        dwmac->reg = stmmac_res.addr;
 
        ret = visconti_eth_clock_probe(pdev, plat_dat);
        if (ret)
-               goto remove_config;
+               return ret;
 
        visconti_eth_init_hw(pdev, plat_dat);
 
 
 remove:
        visconti_eth_clock_remove(pdev);
-remove_config:
-       stmmac_remove_config_dt(pdev, plat_dat);
 
        return ret;
 }
 
 static void visconti_eth_dwmac_remove(struct platform_device *pdev)
 {
-       struct net_device *ndev = platform_get_drvdata(pdev);
-       struct stmmac_priv *priv = netdev_priv(ndev);
-
-       stmmac_pltfr_remove(pdev);
+       stmmac_pltfr_remove_no_dt(pdev);
 
        visconti_eth_clock_remove(pdev);
-
-       stmmac_remove_config_dt(pdev, priv->plat);
 }
 
 static const struct of_device_id visconti_eth_dwmac_match[] = {