goto err_ref_clk;
        }
 
-       switch (imx6_pcie->drvdata->variant) {
-       case IMX8MM:
-               if (phy_power_on(imx6_pcie->phy))
-                       dev_err(dev, "unable to power on PHY\n");
-               break;
-       default:
-               break;
-       }
        /* allow the clocks to stabilize */
        usleep_range(200, 500);
        return 0;
        case IMX8MQ:
                reset_control_deassert(imx6_pcie->pciephy_reset);
                break;
-       case IMX8MM:
-               if (phy_init(imx6_pcie->phy))
-                       dev_err(dev, "waiting for phy ready timeout!\n");
-               break;
        case IMX7D:
                reset_control_deassert(imx6_pcie->pciephy_reset);
 
                usleep_range(200, 500);
                break;
        case IMX6Q:             /* Nothing to do */
+       case IMX8MM:
                break;
        }
 
 
        imx6_pcie_assert_core_reset(imx6_pcie);
        imx6_pcie_init_phy(imx6_pcie);
+
+       if (imx6_pcie->phy) {
+               ret = phy_power_on(imx6_pcie->phy);
+               if (ret) {
+                       dev_err(dev, "pcie PHY power up failed\n");
+                       goto err_reg_disable;
+               }
+       }
+
        ret = imx6_pcie_deassert_core_reset(imx6_pcie);
        if (ret < 0) {
                dev_err(dev, "pcie deassert core reset failed: %d\n", ret);
-               goto err_reg_disable;
+               goto err_phy_off;
        }
 
+       if (imx6_pcie->phy) {
+               ret = phy_init(imx6_pcie->phy);
+               if (ret) {
+                       dev_err(dev, "waiting for PHY ready timeout!\n");
+                       goto err_clk_disable;
+               }
+       }
        imx6_setup_phy_mpll(imx6_pcie);
 
        return 0;
 
+err_clk_disable:
+       imx6_pcie_clk_disable(imx6_pcie);
+err_phy_off:
+       if (imx6_pcie->phy)
+               phy_power_off(imx6_pcie->phy);
 err_reg_disable:
        if (imx6_pcie->vpcie)
                regulator_disable(imx6_pcie->vpcie);