Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4800e87a authored by Dong Aisheng's avatar Dong Aisheng Committed by Ulf Hansson
Browse files

mmc: sdhci-esdhc-imx: fix cd regression for dt platform



Current card detect probe process is that when driver finds a valid
ESDHC_CD_GPIO, it will clear the quirk SDHCI_QUIRK_BROKEN_CARD_DETECTION
which is set by default for all esdhc/usdhc controllers.
Then host driver will know there's a valid card detect function.

Commit 8d86e4fc ("mmc: sdhci-esdhc-imx: Call mmc_of_parse()")
breaks GPIO CD function for dt platform that it will return directly
when find ESDHC_CD_GPIO for dt platform which result in the later wrongly
to keep SDHCI_QUIRK_BROKEN_CARD_DETECTION for all dt platforms.
Then MMC_CAP_NEEDS_POLL will be used instead even there's a valid
GPIO card detect.

This patch adds back this function and follows the original approach to
clear the quirk if find an valid CD GPIO for dt platforms.

Fixes: 8d86e4fc ("mmc: sdhci-esdhc-imx: Call mmc_of_parse()")
Signed-off-by: default avatarDong Aisheng <aisheng.dong@freescale.com>
Reviewed-by: default avatarJohan Derycke <johan.derycke@barco.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 1cd55947
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -881,6 +881,7 @@ sdhci_esdhc_imx_probe_dt(struct platform_device *pdev,
			 struct esdhc_platform_data *boarddata)
			 struct esdhc_platform_data *boarddata)
{
{
	struct device_node *np = pdev->dev.of_node;
	struct device_node *np = pdev->dev.of_node;
	int ret;


	if (!np)
	if (!np)
		return -ENODEV;
		return -ENODEV;
@@ -917,7 +918,14 @@ sdhci_esdhc_imx_probe_dt(struct platform_device *pdev,
	mmc_of_parse_voltage(np, &host->ocr_mask);
	mmc_of_parse_voltage(np, &host->ocr_mask);


	/* call to generic mmc_of_parse to support additional capabilities */
	/* call to generic mmc_of_parse to support additional capabilities */
	return mmc_of_parse(host->mmc);
	ret = mmc_of_parse(host->mmc);
	if (ret)
		return ret;

	if (!IS_ERR_VALUE(mmc_gpio_get_cd(host->mmc)))
		host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION;

	return 0;
}
}
#else
#else
static inline int
static inline int