summaryrefslogtreecommitdiff
path: root/drivers/pci
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/dwc/pci-imx6.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/pci/dwc/pci-imx6.c b/drivers/pci/dwc/pci-imx6.c
index 093646780cac..7855ded3102f 100644
--- a/drivers/pci/dwc/pci-imx6.c
+++ b/drivers/pci/dwc/pci-imx6.c
@@ -642,7 +642,6 @@ static int imx_pcie_enable_ref_clk(struct imx_pcie *imx_pcie)
ret = clk_prepare_enable(imx_pcie->pcie_inbound_axi);
if (ret)
dev_err(dev, "unable to enable pcie_axi clock\n");
-
break;
}
@@ -2079,6 +2078,8 @@ static int pci_imx_suspend_noirq(struct device *dev)
IMX6Q_GPR1_PCIE_TEST_PD,
IMX6Q_GPR1_PCIE_TEST_PD);
} else {
+ pm_runtime_put_sync(dev);
+
pci_imx_clk_disable(dev);
imx_pcie_phy_pwr_dn(imx_pcie);
@@ -2147,6 +2148,8 @@ static int pci_imx_resume_noirq(struct device *dev)
regmap_update_bits(imx_pcie->iomuxc_gpr, IOMUXC_GPR1,
IMX6Q_GPR1_PCIE_TEST_PD, 0);
} else {
+ pm_runtime_get_sync(dev);
+
pci_imx_ltssm_disable(dev);
imx_pcie_assert_core_reset(imx_pcie);
imx_pcie_init_phy(imx_pcie);
@@ -2808,6 +2811,8 @@ static int imx_pcie_probe(struct platform_device *pdev)
&& (imx_pcie->hard_wired == 0))
imx_pcie_regions_setup(&pdev->dev);
}
+ pm_runtime_get_sync(&pdev->dev);
+
return 0;
}
@@ -2818,6 +2823,8 @@ static void imx_pcie_shutdown(struct platform_device *pdev)
/* bring down link, so bootloader gets clean state in case of reboot */
if (imx_pcie->variant == IMX6Q)
imx_pcie_assert_core_reset(imx_pcie);
+
+ pm_runtime_put_sync(&pdev->dev);
}
static const struct of_device_id imx_pcie_of_match[] = {