diff --git a/drivers/pci/controller/pci-msm.c b/drivers/pci/controller/pci-msm.c index bc7e19f0cc79..59e25885ea79 100644 --- a/drivers/pci/controller/pci-msm.c +++ b/drivers/pci/controller/pci-msm.c @@ -4652,9 +4652,15 @@ static int msm_pcie_enable(struct msm_pcie_dev_t *dev) ep_up_timeout = jiffies + usecs_to_jiffies(EP_UP_TIMEOUT_US); - if (dev->i2c_ctrl.client && dev->i2c_ctrl.client_i2c_de_emphasis_wa) + if (dev->i2c_ctrl.client && dev->i2c_ctrl.client_i2c_de_emphasis_wa) { 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.client_i2c_reset(&dev->i2c_ctrl, false); + msleep(100); + } msm_pcie_config_sid(dev); msm_pcie_config_controller(dev); @@ -4702,10 +4708,6 @@ 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 eps out of reset */ - if (dev->i2c_ctrl.client && dev->i2c_ctrl.client_i2c_reset) - dev->i2c_ctrl.client_i2c_reset(&dev->i2c_ctrl, false); - goto out; link_fail: