From 49401bbfc292adb0cb203db8f9b0e16af9eafd74 Mon Sep 17 00:00:00 2001 From: Gauri Joshi Date: Mon, 9 Nov 2020 13:11:40 +0530 Subject: [PATCH] msm: ep_pcie: Changes to acquire wakelock as part of PERST IRQ Changes to acquire wakelock as part of PERST deassert in non enumerated scenario. Change-Id: Ica992e12fe827e29416fbe56469d7be8b92ff5c5 Signed-off-by: Subramanian Ananthanarayanan Signed-off-by: Gauri Joshi --- drivers/platform/msm/ep_pcie/ep_pcie_core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_core.c b/drivers/platform/msm/ep_pcie/ep_pcie_core.c index be8d1f5d644f..658a8eda9ff5 100644 --- a/drivers/platform/msm/ep_pcie/ep_pcie_core.c +++ b/drivers/platform/msm/ep_pcie/ep_pcie_core.c @@ -2330,6 +2330,18 @@ static irqreturn_t ep_pcie_handle_perst_irq(int irq, void *data) "PCIe V%d: PCIe is not enumerated yet; PERST is %sasserted\n", dev->rev, perst ? "de" : ""); if (perst) { + /* + * Hold a wakelock to avoid delay during + * link enablement in PCIE layer in non + * enumerated scenario. + */ + if (!atomic_read(&dev->ep_pcie_dev_wake)) { + pm_stay_awake(&dev->pdev->dev); + atomic_set(&dev->ep_pcie_dev_wake, 1); + EP_PCIE_DBG(dev, + "PCIe V%d: Acquired wakelock\n", + dev->rev); + } /* start work for link enumeration with the host side */ schedule_work(&dev->handle_perst_work); } else {