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: Sarthak Garg <sartgarg@codeaurora.org>
This commit is contained in:
Sarthak Garg 2021-01-20 22:36:00 +05:30
commit 0a5ff911f0

View file

@ -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