diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_core.c b/drivers/platform/msm/ep_pcie/ep_pcie_core.c index 4d524e8e47bf..74009b75ae91 100644 --- a/drivers/platform/msm/ep_pcie/ep_pcie_core.c +++ b/drivers/platform/msm/ep_pcie/ep_pcie_core.c @@ -657,10 +657,6 @@ static void ep_pcie_core_init(struct ep_pcie_dev_t *dev, bool configured) PCIE20_LINK_CONTROL2_LINK_STATUS2, 0xf, dev->link_speed); - EP_PCIE_DBG2(dev, "PCIe V%d: Allow L1 after D3_COLD->D0\n", - dev->rev); - ep_pcie_write_mask(dev->parf + PCIE20_PARF_PM_CTRL, BIT(5), 0); - EP_PCIE_DBG2(dev, "PCIe V%d: Clear disconn_req after D3_COLD\n", dev->rev); ep_pcie_write_reg_field(dev->tcsr_perst_en, @@ -1976,6 +1972,11 @@ checkbme: dev->rev, retries, BME_TIMEOUT_US_MIN * retries / 1000); ep_pcie_enumeration_complete(dev); + + EP_PCIE_DBG2(dev, "PCIe V%d: Allow L1 after BME is set\n", + dev->rev); + ep_pcie_write_mask(dev->parf + PCIE20_PARF_PM_CTRL, BIT(5), 0); + /* expose BAR to user space to identify modem */ ep_pcie_bar0_address = readl_relaxed(dev->dm_core + PCIE20_BAR0); @@ -2149,6 +2150,10 @@ static irqreturn_t ep_pcie_handle_bme_irq(int irq, void *data) dev->rev); ep_pcie_notify_event(dev, EP_PCIE_EVENT_LINKUP); } + + EP_PCIE_DBG2(dev, "PCIe V%d: Allow L1 after BME is set\n", + dev->rev); + ep_pcie_write_mask(dev->parf + PCIE20_PARF_PM_CTRL, BIT(5), 0); } else { EP_PCIE_DBG(dev, "PCIe V%d:BME is still disabled\n", dev->rev);