Merge tag 'rproc-v5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson...
[linux-2.6-microblaze.git] / drivers / pci / controller / dwc / pcie-qcom.c
index 5eb2825..b476164 100644 (file)
@@ -297,6 +297,9 @@ static void qcom_pcie_deinit_2_1_0(struct qcom_pcie *pcie)
        reset_control_assert(res->por_reset);
        reset_control_assert(res->ext_reset);
        reset_control_assert(res->phy_reset);
+
+       writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL);
+
        regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies);
 }
 
@@ -309,6 +312,16 @@ static int qcom_pcie_init_2_1_0(struct qcom_pcie *pcie)
        u32 val;
        int ret;
 
+       /* reset the PCIe interface as uboot can leave it undefined state */
+       reset_control_assert(res->pci_reset);
+       reset_control_assert(res->axi_reset);
+       reset_control_assert(res->ahb_reset);
+       reset_control_assert(res->por_reset);
+       reset_control_assert(res->ext_reset);
+       reset_control_assert(res->phy_reset);
+
+       writel(1, pcie->parf + PCIE20_PARF_PHY_CTRL);
+
        ret = regulator_bulk_enable(ARRAY_SIZE(res->supplies), res->supplies);
        if (ret < 0) {
                dev_err(dev, "cannot enable regulators\n");