]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mmc: mmc_get_op_cond: Allow quiet detection of eMMC
authorPali Rohár <pali@kernel.org>
Wed, 14 Jul 2021 14:37:29 +0000 (16:37 +0200)
committerStefan Roese <sr@denx.de>
Thu, 15 Jul 2021 08:53:11 +0000 (10:53 +0200)
Add a new 'quiet' argument to mmc_get_op_cond() function which avoids
printing error message when SD/eMMC card is not detected.

Espressobin and mx6cuboxi boards use this function for detecting presence
of eMMC and therefore it is expected and normal that eMMC does not have to
be connected. So error message "Card did not respond to voltage select!"
should be skipped in this case as it is not an error.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
board/Marvell/mvebu_armada-37xx/board.c
board/solidrun/mx6cuboxi/mx6cuboxi.c
drivers/mmc/mmc.c
include/mmc.h

index 5af3f2f062bb144cebb1d83ed3ace53366c8f21a..2de9c2ac1736c3f5fc5b65b537509b70417708cb 100644 (file)
@@ -124,7 +124,7 @@ int board_late_init(void)
 
        /* eMMC is mmc dev num 1 */
        mmc_dev = find_mmc_device(1);
-       emmc = (mmc_dev && mmc_get_op_cond(mmc_dev) == 0);
+       emmc = (mmc_dev && mmc_get_op_cond(mmc_dev, true) == 0);
 
        /* if eMMC is not present then remove it from DM */
        if (!emmc && mmc_dev) {
index 3eadc38f6fd419a2581a184edd51fdb503ba026d..6207bf8253ab914a4264c86d5bc6685883421a57 100644 (file)
@@ -374,7 +374,7 @@ static bool has_emmc(void)
        mmc = find_mmc_device(2);
        if (!mmc)
                return 0;
-       return (mmc_get_op_cond(mmc) < 0) ? 0 : 1;
+       return (mmc_get_op_cond(mmc, true) < 0) ? 0 : 1;
 }
 
 int checkboard(void)
index 1e83007286b2e73833fea8c4c2a50ec93fb193d3..8078a89f18cb4892c35a9ac418259ee9a3160097 100644 (file)
@@ -2766,7 +2766,7 @@ static int mmc_power_cycle(struct mmc *mmc)
        return mmc_power_on(mmc);
 }
 
-int mmc_get_op_cond(struct mmc *mmc)
+int mmc_get_op_cond(struct mmc *mmc, bool quiet)
 {
        bool uhs_en = supports_uhs(mmc->cfg->host_caps);
        int err;
@@ -2842,7 +2842,8 @@ retry:
 
                if (err) {
 #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
-                       pr_err("Card did not respond to voltage select! : %d\n", err);
+                       if (!quiet)
+                               pr_err("Card did not respond to voltage select! : %d\n", err);
 #endif
                        return -EOPNOTSUPP;
                }
@@ -2882,7 +2883,7 @@ int mmc_start_init(struct mmc *mmc)
                return -ENOMEDIUM;
        }
 
-       err = mmc_get_op_cond(mmc);
+       err = mmc_get_op_cond(mmc, false);
 
        if (!err)
                mmc->init_in_progress = 1;
index 6f943e78b740127295585b77dbd29d83ca746d29..0bf19de20e528996674587c163aed83e8d285687 100644 (file)
@@ -900,9 +900,10 @@ int mmc_set_bkops_enable(struct mmc *mmc);
  * the presence of SD/eMMC when no card detect logic is available.
  *
  * @param mmc  Pointer to a MMC device struct
+ * @param quiet        Be quiet, do not print error messages when card is not detected.
  * @return 0 on success, <0 on error.
  */
-int mmc_get_op_cond(struct mmc *mmc);
+int mmc_get_op_cond(struct mmc *mmc, bool quiet);
 
 /**
  * Start device initialization and return immediately; it does not block on