mmc: sdhci: fix driver type B and D handling in sdhci_do_set_ios()
sdhci_do_set_ios() doesn't currently program SDHCI_HOST_CONTROL2 register correctly when host->preset_enabled == false. Add code to handle the missing cases MMC_SET_DRIVER_TYPE_B and MMC_SET_DRIVER_TYPE_D. Signed-off-by: Petri Gynther <pgynther@google.com> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
d9fbe003ea
commit
43e943a040
|
@ -1514,8 +1514,17 @@ static void sdhci_do_set_ios(struct sdhci_host *host, struct mmc_ios *ios)
|
||||||
ctrl_2 &= ~SDHCI_CTRL_DRV_TYPE_MASK;
|
ctrl_2 &= ~SDHCI_CTRL_DRV_TYPE_MASK;
|
||||||
if (ios->drv_type == MMC_SET_DRIVER_TYPE_A)
|
if (ios->drv_type == MMC_SET_DRIVER_TYPE_A)
|
||||||
ctrl_2 |= SDHCI_CTRL_DRV_TYPE_A;
|
ctrl_2 |= SDHCI_CTRL_DRV_TYPE_A;
|
||||||
|
else if (ios->drv_type == MMC_SET_DRIVER_TYPE_B)
|
||||||
|
ctrl_2 |= SDHCI_CTRL_DRV_TYPE_B;
|
||||||
else if (ios->drv_type == MMC_SET_DRIVER_TYPE_C)
|
else if (ios->drv_type == MMC_SET_DRIVER_TYPE_C)
|
||||||
ctrl_2 |= SDHCI_CTRL_DRV_TYPE_C;
|
ctrl_2 |= SDHCI_CTRL_DRV_TYPE_C;
|
||||||
|
else if (ios->drv_type == MMC_SET_DRIVER_TYPE_D)
|
||||||
|
ctrl_2 |= SDHCI_CTRL_DRV_TYPE_D;
|
||||||
|
else {
|
||||||
|
pr_warn("%s: invalid driver type, default to "
|
||||||
|
"driver type B\n", mmc_hostname(mmc));
|
||||||
|
ctrl_2 |= SDHCI_CTRL_DRV_TYPE_B;
|
||||||
|
}
|
||||||
|
|
||||||
sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
|
sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue