sdhci: only reprogram retuning timer when flag is set
When the host->tuning_count is zero it means that the retuning is disabled. This is checked on the first run of sdhci_execute_tuning() by the if statement below: if (!(host->flags & SDHCI_NEEDS_RETUNING) && host->tuning_count && (host->tuning_mode == SDHCI_TUNING_MODE_1)) { So only when tuning_count is non-zero it will set the host flag SDHCI_USING_RETUNING_TIMER. The else statement is only for re-programming the timer, which means that flag must be set. Because that is not checked the else statement is executed in the first run when tuning_count is zero. This was seen on a host controller which indicated SDHCI_TUNING_MODE_1 (0) and tuning_count being zero. Suspect that (one of) these registers is not properly set. Signed-off-by: Arend van Spriel <arend@broadcom.com> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by: Aaron Lu <aaron.lu@intel.com> Signed-off-by: Chris Ball <chris@printf.net>
This commit is contained in:
Родитель
fc2bd2e492
Коммит
2bc024855e
|
@ -2026,10 +2026,9 @@ out:
|
|||
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 {
|
||||
} else if (host->flags & SDHCI_USING_RETUNING_TIMER) {
|
||||
host->flags &= ~SDHCI_NEEDS_RETUNING;
|
||||
/* Reload the new initial value for timer */
|
||||
if (host->tuning_mode == SDHCI_TUNING_MODE_1)
|
||||
mod_timer(&host->tuning_timer, jiffies +
|
||||
host->tuning_count * HZ);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче