From 04108b837896c3cf54e7d23b77ae170ecade5423 Mon Sep 17 00:00:00 2001 From: Harrison Meng Date: Mon, 6 Jun 2022 16:44:01 +0800 Subject: [PATCH] pci: msm: Extend sleep time when reset i2c client For HSP link down issue on CPE platform, because CPE NTN3 pcie switch separates pcie link between RC and EP into two pcie buses, RC0<->USP and DSP<->EP, so we should take care of this case on pcie link training, make code change as following: 1. do link training RC0<->USP first and then do link training for DSP<->EP 2. link training of DSP<->EP need more time to complete. From test result, 100ms is not enough, 200ms is ok. Change-Id: I0f36fc19ab1c6b90132596359c7b158fde7d3e22 Signed-off-by: Harrison Meng --- drivers/pci/controller/pci-msm.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/pci/controller/pci-msm.c b/drivers/pci/controller/pci-msm.c index b2128d7ce19d..c39798777d4b 100644 --- a/drivers/pci/controller/pci-msm.c +++ b/drivers/pci/controller/pci-msm.c @@ -4774,12 +4774,6 @@ static int msm_pcie_enable(struct msm_pcie_dev_t *dev) dev->i2c_ctrl.client_i2c_de_emphasis_wa(&dev->i2c_ctrl); msleep(20); } - /* bring eps out of reset */ - if (dev->i2c_ctrl.client && dev->i2c_ctrl.client_i2c_reset - && !dev->i2c_ctrl.ep_reset_postlinkup) { - dev->i2c_ctrl.client_i2c_reset(&dev->i2c_ctrl, false); - msleep(100); - } msm_pcie_config_sid(dev); msm_pcie_config_controller(dev); @@ -4827,11 +4821,13 @@ static int msm_pcie_enable(struct msm_pcie_dev_t *dev) if (dev->enumerated) msm_msi_config(dev_get_msi_domain(&dev->dev->dev)); - /* Bring pine EP out of reset*/ - if (dev->i2c_ctrl.client && dev->i2c_ctrl.client_i2c_reset - && dev->i2c_ctrl.ep_reset_postlinkup) { + /* Bring EP out of reset*/ + if (dev->i2c_ctrl.client && dev->i2c_ctrl.client_i2c_reset) { dev->i2c_ctrl.client_i2c_reset(&dev->i2c_ctrl, false); - msleep(100); + PCIE_DBG(dev, + "PCIe: Bring EPs out of reset and then wait for link training.\n"); + msleep(200); + PCIE_DBG(dev, "PCIe: Finish EPs link training wait.\n"); } goto out;