When timeout_clk is calculated the host->clock could be zero. So, instead of host->clock the calculation now uses mmc->f_max.
Unified · Split
| @@ -2505,12 +2505,9 @@ int sdhci_add_host(struct sdhci_host *host) · 2504 unmodified lines | ||
| 2505 | 2505 | host->timeout_clk *= 1000; |
| 2506 | 2506 | |
| 2507 | 2507 | if (host->quirks & SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK) |
| 2508 | − host->timeout_clk = host->clock / 1000; | |
| 2508 | + host->timeout_clk = mmc->f_max / 1000; | |
| 2509 | 2509 | |
| 2510 | − if (host->quirks & SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK) | |
| 2511 | − mmc->max_discard_to = (1 << 27) / (mmc->f_max / 1000); | |
| 2512 | − else | |
| 2513 | − mmc->max_discard_to = (1 << 27) / host->timeout_clk; | |
| 2510 | + mmc->max_discard_to = (1 << 27) / host->timeout_clk; | |
| 2514 | 2511 | |
| 2515 | 2512 | mmc->caps |= MMC_CAP_SDIO_IRQ | MMC_CAP_ERASE | MMC_CAP_CMD23; |
| 2516 | 2513 | |