From 7ac6c00b110bb3c94e2b520c2710fa0405e4c5ff 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 Signed-off-by: Yogesh Jadav Signed-off-by: Joco Zhang --- 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 f857e027d75a..85f0eef2b7d1 100644 --- a/drivers/pci/controller/pci-msm.c +++ b/drivers/pci/controller/pci-msm.c @@ -6137,12 +6137,6 @@ static int msm_pcie_enable_link(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); - } #endif ret = msm_pcie_link_train(dev); @@ -6306,11 +6300,13 @@ static int msm_pcie_enable(struct msm_pcie_dev_t *dev) } #if IS_ENABLED(CONFIG_I2C) - /* 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"); } #endif goto out;