msm: pcie: remove PCIe CX rail vote when releasing resources

Current PMIC API call to disable CX rail does not remove
PCIe power vote. Add another API call to successfully
remove vote when releasing this resource.

Change-Id: I5203203e10e8e690745768c241e92d298b87cc4b
Signed-off-by: Tony Truong <truong@codeaurora.org>
This commit is contained in:
Tony Truong 2015-07-27 11:18:02 -07:00 committed by David Keitel
parent c7d5843606
commit 2fffc92925

View file

@ -26,6 +26,7 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <linux/regulator/rpm-smd-regulator.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/of_gpio.h> #include <linux/of_gpio.h>
@ -2718,8 +2719,19 @@ int msm_pcie_vreg_init(struct msm_pcie_dev_t *dev)
if (rc) if (rc)
while (i--) { while (i--) {
struct regulator *hdl = dev->vreg[i].hdl; struct regulator *hdl = dev->vreg[i].hdl;
if (hdl) if (hdl) {
regulator_disable(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); 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", PCIE_DBG(dev, "Vreg %s is being disabled\n",
dev->vreg[i].name); dev->vreg[i].name);
regulator_disable(dev->vreg[i].hdl); 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);
}
} }
} }