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

Commit 0a5ff911 authored by Sarthak Garg's avatar Sarthak Garg
Browse files

mmc: sdhci-msm: Always set max_busy_timeout as zero



Qcom SDHC uses base clock in calculating the data-timeout
value. So SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK quirk is set.

Moreover discard size calculation uses max_busy_timeout in deriving the
value. So, we can ensure a larger discard size by setting this
timeout as zero. If this timeout is zero then it takes max erase
timeout vlaue (which is 60sec) in the discard size calculation.

But when this quirk is set max_busy_timeout variable gets updated
to non zero value leading to smaller discard size.

Define get_max_timeout_count ops in sdhci_msm_ops which always sets
max_busy_timeout to zero.

Change-Id: Iec6013dde6082b2a8fdb449cacf503c290252d0b
Signed-off-by: default avatarSarthak Garg <sartgarg@codeaurora.org>
parent ab09338b
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -1675,6 +1675,16 @@ static void sdhci_msm_set_uhs_signaling(struct sdhci_host *host,
		sdhci_msm_hs400(host, &mmc->ios);
}

/*
 * Ensure larger discard size by always setting max_busy_timeout to zero.
 * This will always return max_busy_timeout as zero to the sdhci layer.
 */

static unsigned int sdhci_msm_get_max_timeout_count(struct sdhci_host *host)
{
	return 0;
}

#define MAX_PROP_SIZE 32
static int sdhci_msm_dt_parse_vreg_info(struct device *dev,
		struct sdhci_msm_reg_data **vreg_data, const char *vreg_name)
@@ -3456,7 +3466,7 @@ static const struct sdhci_ops sdhci_msm_ops = {
	.get_max_clock = sdhci_msm_get_max_clock,
	.set_bus_width = sdhci_set_bus_width,
	.set_uhs_signaling = sdhci_msm_set_uhs_signaling,

	.get_max_timeout_count = sdhci_msm_get_max_timeout_count,
#if defined(CONFIG_SDC_QTI)
	.dump_vendor_regs = sdhci_msm_dump_vendor_regs,
#endif
@@ -4417,12 +4427,6 @@ static int sdhci_msm_probe(struct platform_device *pdev)
		goto pm_runtime_disable;
	sdhci_msm_set_regulator_caps(msm_host);

	/*
	 * Ensure larger discard size by setting max_busy_timeout.
	 * This has to set only after sdhci_add_host so that our
	 * value won't be over-written.
	 */
	host->mmc->max_busy_timeout = 0;
#if defined(CONFIG_SDC_QTI)
	sdhci_msm_init_sysfs(pdev);
#endif