diff --git a/drivers/pci/host/pci-msm.c b/drivers/pci/host/pci-msm.c index 816d8249920b..e4e2a805445c 100644 --- a/drivers/pci/host/pci-msm.c +++ b/drivers/pci/host/pci-msm.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -2718,8 +2719,19 @@ int msm_pcie_vreg_init(struct msm_pcie_dev_t *dev) if (rc) while (i--) { struct regulator *hdl = dev->vreg[i].hdl; - if (hdl) + if (hdl) { regulator_disable(hdl); + if (!strcmp(dev->vreg[i].name, "vreg-cx")) { + PCIE_DBG(dev, + "RC%d: Removing %s vote.\n", + dev->rc_idx, + dev->vreg[i].name); + regulator_set_voltage(hdl, + RPM_REGULATOR_CORNER_NONE, + INT_MAX); + } + } + } PCIE_DBG(dev, "RC%d: exit\n", dev->rc_idx); @@ -2738,6 +2750,16 @@ static void msm_pcie_vreg_deinit(struct msm_pcie_dev_t *dev) PCIE_DBG(dev, "Vreg %s is being disabled\n", dev->vreg[i].name); regulator_disable(dev->vreg[i].hdl); + + if (!strcmp(dev->vreg[i].name, "vreg-cx")) { + PCIE_DBG(dev, + "RC%d: Removing %s vote.\n", + dev->rc_idx, + dev->vreg[i].name); + regulator_set_voltage(dev->vreg[i].hdl, + RPM_REGULATOR_CORNER_NONE, + INT_MAX); + } } }