From 857bd53c2d4e18dba47eca553e7ef94f7b4403d9 Mon Sep 17 00:00:00 2001 From: Hamad Kadmany Date: Thu, 9 Jul 2015 16:04:26 +0300 Subject: [PATCH] msm_11ad: Fix config space restore from suspend Config space was not properly restored when resuming from suspend. Change-Id: I6b9188f3989957eb44c93302d7958d422bb29e81 Signed-off-by: Hamad Kadmany Signed-off-by: Maya Erez --- drivers/platform/msm/msm_11ad/msm_11ad.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/platform/msm/msm_11ad/msm_11ad.c b/drivers/platform/msm/msm_11ad/msm_11ad.c index 2c1032b9ab36..228beecff550 100644 --- a/drivers/platform/msm/msm_11ad/msm_11ad.c +++ b/drivers/platform/msm/msm_11ad/msm_11ad.c @@ -30,6 +30,9 @@ #define SMMU_SIZE 0x40000000 /* Device address range size */ #define WIGIG_ENABLE_DELAY 50 +#define PM_OPT_SUSPEND (MSM_PCIE_CONFIG_NO_CFG_RESTORE | \ + MSM_PCIE_CONFIG_LINKDOWN) +#define PM_OPT_RESUME MSM_PCIE_CONFIG_NO_CFG_RESTORE struct device; @@ -85,7 +88,7 @@ static int ops_suspend(void *handle) return rc; } rc = msm_pcie_pm_control(MSM_PCIE_SUSPEND, pcidev->bus->number, - pcidev, NULL, 0); + pcidev, NULL, PM_OPT_SUSPEND); if (rc) { dev_err(ctx->dev, "msm_pcie_pm_control(SUSPEND) failed :%d\n", rc); @@ -112,13 +115,18 @@ static int ops_resume(void *handle) msleep(WIGIG_ENABLE_DELAY); rc = msm_pcie_pm_control(MSM_PCIE_RESUME, pcidev->bus->number, - pcidev, NULL, 0); + pcidev, NULL, PM_OPT_RESUME); if (rc) { dev_err(ctx->dev, "msm_pcie_pm_control(RESUME) failed :%d\n", rc); return rc; } - pci_restore_state(pcidev); + rc = msm_pcie_recover_config(pcidev); + if (rc) { + dev_err(ctx->dev, "msm_pcie_recover_config failed :%d\n", + rc); + return rc; + } return rc; }