From: Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com>

The card detect logic needs a short card present signal to work
dependable. Without a present card the SDHCI_CARD_STATE_STABLE signal is
not set dependable after a reset. Use the internal fixed card present
signal to initiate the card detect logic.

Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsme...@weidmueller.com>

---
On our hardware we get a "Sdhci card detect state not stable" error in
the SPL if no mmc card is present. It is unclear if this patch is the
correct solution, but a short card inserts or a fixed card present
signal leads to a SDHCI_CARD_STATE_STABLE signal with and without card.

 drivers/mmc/zynq_sdhci.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/drivers/mmc/zynq_sdhci.c b/drivers/mmc/zynq_sdhci.c
index e44868aaec..a88feeb367 100644
--- a/drivers/mmc/zynq_sdhci.c
+++ b/drivers/mmc/zynq_sdhci.c
@@ -1075,6 +1075,26 @@ static int sdhci_zynqmp_set_dynamic_config(struct 
arasan_sdhci_priv *priv,
                return ret;
        }
 
+       /* The card detect logic needs a short card present signal to work
+        * dependable. Without a present card the SDHCI_CARD_STATE_STABLE
+        * signal is not set dependable after a reset. Use the internal
+        * fixed card present signal to initiate the card detect logic.
+        */
+       if (!dev_read_bool(dev, "non-removable")) {
+               ret = zynqmp_pm_set_sd_config(priv->node_id, SD_CONFIG_EMMC_SEL,
+                                             1);
+               if (ret) {
+                       dev_err(dev, "SD_CONFIG_EMMC_SEL failed\n");
+                       return ret;
+               }
+               ret = zynqmp_pm_set_sd_config(priv->node_id, SD_CONFIG_EMMC_SEL,
+                                             0);
+               if (ret) {
+                       dev_err(dev, "SD_CONFIG_EMMC_SEL failed\n");
+                       return ret;
+               }
+       }
+
        return 0;
 }
 #endif
-- 
2.30.2

Reply via email to