mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
mmc: sdhci: fix caps2 for HS200
Although the HC supports HS200 (eMMC) the caps2 are always zero; this means there's no way to use the super speed mode (when init the card). If the HC support SDR104, for SD3.0, so it also supports HS200 for eMMC and this patch just sets the MMC_CAP2_HS200 in the host caps2 field. Reported-by: Youssef Triki <[email protected]> Signed-off-by: Giuseppe Cavallaro <[email protected]> Reviewed-by: Philip Rakity <[email protected]> Signed-off-by: Chris Ball <[email protected]>
This commit is contained in:
parent
0dcaa2499b
commit
156e14b126
2 changed files with 10 additions and 6 deletions
|
|
@ -1863,7 +1863,7 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
|
|||
*/
|
||||
if (((ctrl & SDHCI_CTRL_UHS_MASK) == SDHCI_CTRL_UHS_SDR50) &&
|
||||
(host->flags & SDHCI_SDR50_NEEDS_TUNING ||
|
||||
host->flags & SDHCI_HS200_NEEDS_TUNING))
|
||||
host->flags & SDHCI_SDR104_NEEDS_TUNING))
|
||||
requires_tuning_nonuhs = true;
|
||||
|
||||
if (((ctrl & SDHCI_CTRL_UHS_MASK) == SDHCI_CTRL_UHS_SDR104) ||
|
||||
|
|
@ -2994,9 +2994,13 @@ int sdhci_add_host(struct sdhci_host *host)
|
|||
mmc->caps |= MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25;
|
||||
|
||||
/* SDR104 supports also implies SDR50 support */
|
||||
if (caps[1] & SDHCI_SUPPORT_SDR104)
|
||||
if (caps[1] & SDHCI_SUPPORT_SDR104) {
|
||||
mmc->caps |= MMC_CAP_UHS_SDR104 | MMC_CAP_UHS_SDR50;
|
||||
else if (caps[1] & SDHCI_SUPPORT_SDR50)
|
||||
/* SD3.0: SDR104 is supported so (for eMMC) the caps2
|
||||
* field can be promoted to support HS200.
|
||||
*/
|
||||
mmc->caps2 |= MMC_CAP2_HS200;
|
||||
} else if (caps[1] & SDHCI_SUPPORT_SDR50)
|
||||
mmc->caps |= MMC_CAP_UHS_SDR50;
|
||||
|
||||
if (caps[1] & SDHCI_SUPPORT_DDR50)
|
||||
|
|
@ -3006,9 +3010,9 @@ int sdhci_add_host(struct sdhci_host *host)
|
|||
if (caps[1] & SDHCI_USE_SDR50_TUNING)
|
||||
host->flags |= SDHCI_SDR50_NEEDS_TUNING;
|
||||
|
||||
/* Does the host need tuning for HS200? */
|
||||
/* Does the host need tuning for SDR104 / HS200? */
|
||||
if (mmc->caps2 & MMC_CAP2_HS200)
|
||||
host->flags |= SDHCI_HS200_NEEDS_TUNING;
|
||||
host->flags |= SDHCI_SDR104_NEEDS_TUNING;
|
||||
|
||||
/* Driver Type(s) (A, C, D) supported by the host */
|
||||
if (caps[1] & SDHCI_DRIVER_TYPE_A)
|
||||
|
|
|
|||
Loading…
Reference in a new issue