Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39329437 authored by Tony Truong's avatar Tony Truong
Browse files

msm: pcie: release PCIe regulator current load vote when powering off



When turning off the link, PCIe releases its regulator enable
vote. However, PCIe regulator current load vote is still
effective and will cause a power leakage if another client has
that regulator enabled. Release requested current load when
turning off the link to prevent leakage.

Change-Id: I9514eb9a8ab11567e9ccca2b6fcb47fe6404bf1b
Signed-off-by: default avatarTony Truong <truong@codeaurora.org>
parent 4b243459
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -2944,6 +2944,15 @@ static int msm_pcie_vreg_init(struct msm_pcie_dev_t *dev)
						RPMH_REGULATOR_LEVEL_OFF,
						RPMH_REGULATOR_LEVEL_MAX);
				}

				if (dev->vreg[i].opt_mode) {
					rc = regulator_set_load(hdl, 0);
					if (rc < 0)
						PCIE_ERR(dev,
							"PCIe: RC%d can't set mode for %s: %d\n",
							dev->rc_idx,
							dev->vreg[i].name, rc);
				}
			}

		}
@@ -2955,7 +2964,7 @@ static int msm_pcie_vreg_init(struct msm_pcie_dev_t *dev)

static void msm_pcie_vreg_deinit(struct msm_pcie_dev_t *dev)
{
	int i;
	int i, ret;

	PCIE_DBG(dev, "RC%d: entry\n", dev->rc_idx);

@@ -2974,6 +2983,15 @@ static void msm_pcie_vreg_deinit(struct msm_pcie_dev_t *dev)
					RPMH_REGULATOR_LEVEL_OFF,
					RPMH_REGULATOR_LEVEL_MAX);
			}

			if (dev->vreg[i].opt_mode) {
				ret = regulator_set_load(dev->vreg[i].hdl, 0);
				if (ret < 0)
					PCIE_ERR(dev,
						"PCIe: RC%d can't set mode for %s: %d\n",
						dev->rc_idx, dev->vreg[i].name,
						ret);
			}
		}
	}