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

Commit 95e072a1 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "host: sdhci-msm: implement get_current_limit() host op"

parents cc84f9a2 64e90a02
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -3709,6 +3709,19 @@ static void sdhci_msm_init(struct sdhci_host *host)
				msm_host->pdata->pm_qos_data.latency);
}

static unsigned int sdhci_msm_get_current_limit(struct sdhci_host *host)
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
	struct sdhci_msm_host *msm_host = pltfm_host->priv;
	struct sdhci_msm_slot_reg_data *curr_slot = msm_host->pdata->vreg_data;
	u32 max_curr = 0;

	if (curr_slot && curr_slot->vdd_data)
		max_curr = curr_slot->vdd_data->hpm_uA;

	return max_curr;
}

static struct sdhci_ops sdhci_msm_ops = {
	.crypto_engine_cfg = sdhci_msm_ice_cfg,
	.crypto_cfg_reset = sdhci_msm_ice_cfg_reset,
@@ -3734,6 +3747,7 @@ static struct sdhci_ops sdhci_msm_ops = {
	.init = sdhci_msm_init,
	.pre_req = sdhci_msm_pre_req,
	.post_req = sdhci_msm_post_req,
	.get_current_limit = sdhci_msm_get_current_limit,
};

static void sdhci_set_default_hw_caps(struct sdhci_msm_host *msm_host,
+8 −3
Original line number Diff line number Diff line
@@ -4117,10 +4117,15 @@ int sdhci_add_host(struct sdhci_host *host)
	 * value.
	 */
	max_current_caps = sdhci_readl(host, SDHCI_MAX_CURRENT);
	if (!max_current_caps && !IS_ERR(mmc->supply.vmmc)) {
		int curr = regulator_get_current_limit(mmc->supply.vmmc);
		if (curr > 0) {
	if (!max_current_caps) {
		u32 curr = 0;

		if (!IS_ERR(mmc->supply.vmmc))
			curr = regulator_get_current_limit(mmc->supply.vmmc);
		else if (host->ops->get_current_limit)
			curr = host->ops->get_current_limit(host);

		if (curr > 0) {
			/* convert to SDHCI_MAX_CURRENT format */
			curr = curr/1000;  /* convert to mA */
			curr = curr/SDHCI_MAX_CURRENT_MULTIPLIER;
+1 −0
Original line number Diff line number Diff line
@@ -337,6 +337,7 @@ struct sdhci_ops {
	void	(*init)(struct sdhci_host *host);
	void	(*pre_req)(struct sdhci_host *host, struct mmc_request *req);
	void	(*post_req)(struct sdhci_host *host, struct mmc_request *req);
	unsigned int	(*get_current_limit)(struct sdhci_host *host);
};

#ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS