diff options
author | Kishon Vijay Abraham I <kishon@ti.com> | 2019-03-21 11:45:44 +0530 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2019-03-21 11:19:06 +0100 |
commit | 031d2ccc16775c9531800979069e141fbedeb2f7 (patch) | |
tree | fe4d3fe3a5306ff15215cae8d1e7d1495dea394e /drivers/mmc | |
parent | 2b77158ffa92b820a0c5da9a3c6ead7aa069c71c (diff) | |
download | linux-rpi-031d2ccc16775c9531800979069e141fbedeb2f7.tar.gz linux-rpi-031d2ccc16775c9531800979069e141fbedeb2f7.tar.bz2 linux-rpi-031d2ccc16775c9531800979069e141fbedeb2f7.zip |
mmc: sdhci-omap: Set caps2 to indicate no physical write protect pin
After commit 6d5cd068ee59fba ("mmc: sdhci: use WP GPIO in
sdhci_check_ro()") and commit 39ee32ce486756f ("mmc: sdhci-omap: drop
->get_ro() implementation"), sdhci-omap relied on SDHCI_PRESENT_STATE
to check if the card is read-only, if wp-gpios is not populated
in device tree. However SDHCI_PRESENT_STATE in sdhci-omap does not have
correct read-only state.
sdhci-omap can be used by platforms with both micro SD slot and standard
SD slot with physical write protect pin (using GPIO). Set caps2 to
MMC_CAP2_NO_WRITE_PROTECT based on if wp-gpios property is populated or
not.
This fix is required since existing device-tree node doesn't have
"disable-wp" property and to preserve old-dt compatibility.
Fixes: 6d5cd068ee59fba ("mmc: sdhci: use WP GPIO in sdhci_check_ro()")
Fixes: 39ee32ce486756f ("mmc: sdhci-omap: drop ->get_ro() implementation")
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/sdhci-omap.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c index b1a66ca3821a..5bbed477c9b1 100644 --- a/drivers/mmc/host/sdhci-omap.c +++ b/drivers/mmc/host/sdhci-omap.c @@ -1056,6 +1056,9 @@ static int sdhci_omap_probe(struct platform_device *pdev) mmc->f_max = 48000000; } + if (!mmc_can_gpio_ro(mmc)) + mmc->caps2 |= MMC_CAP2_NO_WRITE_PROTECT; + pltfm_host->clk = devm_clk_get(dev, "fck"); if (IS_ERR(pltfm_host->clk)) { ret = PTR_ERR(pltfm_host->clk); |