From 2fffc929255c31ba5ca50fa7ec0000997168bbef Mon Sep 17 00:00:00 2001 From: Tony Truong Date: Mon, 27 Jul 2015 11:18:02 -0700 Subject: [PATCH] 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 --- drivers/pci/host/pci-msm.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) 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); + } } }