Commit ac00531d authored by Adrian Hunter's avatar Adrian Hunter Committed by Ulf Hansson

mmc: sdhci: Tuning should not change max_blk_count

Re-tuning requires that the maximum data length
is limited to 4MiB. The code currently changes
max_blk_count in an attempt to achieve that.
This is wrong because max_blk_count is a different
limit, but it is also un-necessary because
max_req_size is 512KiB anyway. Consequently, the
changes to max_blk_count are removed and the
comment for max_req_size adjusted accordingly.
The comment is also tweaked to show that the 512KiB
limit is a SDMA limit not an ADMA limit.
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Reviewed-by: default avatarAaron Lu <aaron.lu@intel.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent eaa27f34
...@@ -259,8 +259,6 @@ static void sdhci_reinit(struct sdhci_host *host) ...@@ -259,8 +259,6 @@ static void sdhci_reinit(struct sdhci_host *host)
del_timer_sync(&host->tuning_timer); del_timer_sync(&host->tuning_timer);
host->flags &= ~SDHCI_NEEDS_RETUNING; host->flags &= ~SDHCI_NEEDS_RETUNING;
host->mmc->max_blk_count =
(host->quirks & SDHCI_QUIRK_NO_MULTIBLOCK) ? 1 : 65535;
} }
sdhci_enable_card_detection(host); sdhci_enable_card_detection(host);
} }
...@@ -2048,8 +2046,6 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) ...@@ -2048,8 +2046,6 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
host->flags |= SDHCI_USING_RETUNING_TIMER; host->flags |= SDHCI_USING_RETUNING_TIMER;
mod_timer(&host->tuning_timer, jiffies + mod_timer(&host->tuning_timer, jiffies +
host->tuning_count * HZ); host->tuning_count * HZ);
/* Tuning mode 1 limits the maximum data length to 4MB */
mmc->max_blk_count = (4 * 1024 * 1024) / mmc->max_blk_size;
} else if (host->flags & SDHCI_USING_RETUNING_TIMER) { } else if (host->flags & SDHCI_USING_RETUNING_TIMER) {
host->flags &= ~SDHCI_NEEDS_RETUNING; host->flags &= ~SDHCI_NEEDS_RETUNING;
/* Reload the new initial value for timer */ /* Reload the new initial value for timer */
...@@ -3260,8 +3256,9 @@ int sdhci_add_host(struct sdhci_host *host) ...@@ -3260,8 +3256,9 @@ int sdhci_add_host(struct sdhci_host *host)
mmc->max_segs = SDHCI_MAX_SEGS; mmc->max_segs = SDHCI_MAX_SEGS;
/* /*
* Maximum number of sectors in one transfer. Limited by DMA boundary * Maximum number of sectors in one transfer. Limited by SDMA boundary
* size (512KiB). * size (512KiB). Note some tuning modes impose a 4MiB limit, but this
* is less anyway.
*/ */
mmc->max_req_size = 524288; mmc->max_req_size = 524288;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment