summaryrefslogtreecommitdiff
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorKunihiko Hayashi <hayashi.kunihiko@socionext.com>2022-11-11 17:10:32 +0900
committerUlf Hansson <ulf.hansson@linaro.org>2022-12-07 13:22:36 +0100
commite2d2dcc82504b1beee9f2542e8b43b8c43829302 (patch)
tree423f55dbbd427e34a418e324c20732543b3918e8 /drivers/mmc/host
parent5914a9b16c842056c946665a39aa0ac5923a2d1f (diff)
downloadlinux-e2d2dcc82504b1beee9f2542e8b43b8c43829302.tar.gz
mmc: f-sdh30: Add support for non-removable media
To use F_SDH30 for non-removable meda like eMMC, need to enable FORCE_CARD_INSERT bit to skip the delay for detection. Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Acked-by: Jassi Brar <jaswinder.singh@linaro.org> Link: https://lore.kernel.org/r/20221111081033.3813-6-hayashi.kunihiko@socionext.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/sdhci_f_sdh30.c7
-rw-r--r--drivers/mmc/host/sdhci_f_sdh30.h3
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci_f_sdh30.c b/drivers/mmc/host/sdhci_f_sdh30.c
index 556f4601643d..afbe17312cb6 100644
--- a/drivers/mmc/host/sdhci_f_sdh30.c
+++ b/drivers/mmc/host/sdhci_f_sdh30.c
@@ -77,6 +77,13 @@ static void sdhci_f_sdh30_reset(struct sdhci_host *host, u8 mask)
ctl |= F_SDH30_CMD_DAT_DELAY;
sdhci_writel(host, ctl, F_SDH30_ESD_CONTROL);
}
+
+ if ((host->mmc->caps & MMC_CAP_NONREMOVABLE) &&
+ !(sdhci_readl(host, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT)) {
+ ctl = sdhci_readl(host, F_SDH30_TEST);
+ ctl |= F_SDH30_FORCE_CARD_INSERT;
+ sdhci_writel(host, ctl, F_SDH30_TEST);
+ }
}
static const struct sdhci_ops sdhci_f_sdh30_ops = {
diff --git a/drivers/mmc/host/sdhci_f_sdh30.h b/drivers/mmc/host/sdhci_f_sdh30.h
index fc1ad28f7ca9..7c3c66291d42 100644
--- a/drivers/mmc/host/sdhci_f_sdh30.h
+++ b/drivers/mmc/host/sdhci_f_sdh30.h
@@ -29,4 +29,7 @@
#define F_SDH30_CMD_DAT_DELAY BIT(9)
#define F_SDH30_EMMC_HS200 BIT(24)
+#define F_SDH30_TEST 0x158
+#define F_SDH30_FORCE_CARD_INSERT BIT(6)
+
#define F_SDH30_MIN_CLOCK 400000