Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bab76a95 authored by Can Guo's avatar Can Guo
Browse files

msm: ep-pcie: Allow device enter L1 right after BME is set



Allow device enter L1, i.e. clear PCIE_0_PCIE_PARF_PM_CTRL[REQ_NOT_ENTR_L1]
once we find out BME is set.

Change-Id: I8aca816446a286d02ef51724d157cb7c75057250
Signed-off-by: default avatarCan Guo <cang@codeaurora.org>
parent eb6b3094
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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 @@ int ep_pcie_core_enable_endpoint(enum ep_pcie_options opt)
			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);