diff mbox series

[3/3] mmc: mmc_get_op_cond: Allow quiet detection of eMMC

Message ID 20210714143729.2396-3-pali@kernel.org
State Accepted
Commit a4c577f981569bf34e997cd85618f922409d6b2f
Delegated to: Stefan Roese
Headers show
Series [1/3] arm: mvebu: Espressobin: Fix setting $fdtfile env | expand

Commit Message

Pali Rohár July 14, 2021, 2:37 p.m. UTC
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>
---
 board/Marvell/mvebu_armada-37xx/board.c | 2 +-
 board/solidrun/mx6cuboxi/mx6cuboxi.c    | 2 +-
 drivers/mmc/mmc.c                       | 7 ++++---
 include/mmc.h                           | 3 ++-
 4 files changed, 8 insertions(+), 6 deletions(-)

Comments

Baruch Siach July 15, 2021, 5:39 a.m. UTC | #1
Hi Pali,

On Wed, Jul 14 2021, Pali Rohár wrote:
> 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>
> ---
>  board/Marvell/mvebu_armada-37xx/board.c | 2 +-

Ordering this patch before #2 would make it smaller.

baruch

>  board/solidrun/mx6cuboxi/mx6cuboxi.c    | 2 +-
>  drivers/mmc/mmc.c                       | 7 ++++---
>  include/mmc.h                           | 3 ++-
>  4 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c
> index 6086996b8062..fdc873b1952f 100644
> --- a/board/Marvell/mvebu_armada-37xx/board.c
> +++ b/board/Marvell/mvebu_armada-37xx/board.c
> @@ -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) {
> diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
> index 3eadc38f6fd4..6207bf8253ab 100644
> --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
> +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
> @@ -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)
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 1e83007286b2..8078a89f18cb 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -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;
> diff --git a/include/mmc.h b/include/mmc.h
> index 6f943e78b740..0bf19de20e52 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -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
Stefan Roese July 15, 2021, 8:03 a.m. UTC | #2
On 14.07.21 16:37, Pali Rohár wrote:
> 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>

Thanks,
Stefan

> ---
>   board/Marvell/mvebu_armada-37xx/board.c | 2 +-
>   board/solidrun/mx6cuboxi/mx6cuboxi.c    | 2 +-
>   drivers/mmc/mmc.c                       | 7 ++++---
>   include/mmc.h                           | 3 ++-
>   4 files changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c
> index 6086996b8062..fdc873b1952f 100644
> --- a/board/Marvell/mvebu_armada-37xx/board.c
> +++ b/board/Marvell/mvebu_armada-37xx/board.c
> @@ -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) {
> diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
> index 3eadc38f6fd4..6207bf8253ab 100644
> --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
> +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
> @@ -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)
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 1e83007286b2..8078a89f18cb 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -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;
> diff --git a/include/mmc.h b/include/mmc.h
> index 6f943e78b740..0bf19de20e52 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -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
> 


Viele Grüße,
Stefan
Stefan Roese July 15, 2021, 8:20 a.m. UTC | #3
(added Jaehoon as MMC co-maintainer)

On 15.07.21 10:03, Stefan Roese wrote:
> On 14.07.21 16:37, Pali Rohár wrote:
>> 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>

Peng, Jaehoon are you okay with this patch? If yes, is it okay that
I will pull it via the marvell tree?

Thanks,
Stefan

> Thanks,
> Stefan
> 
>> ---
>>   board/Marvell/mvebu_armada-37xx/board.c | 2 +-
>>   board/solidrun/mx6cuboxi/mx6cuboxi.c    | 2 +-
>>   drivers/mmc/mmc.c                       | 7 ++++---
>>   include/mmc.h                           | 3 ++-
>>   4 files changed, 8 insertions(+), 6 deletions(-)
>>
>> diff --git a/board/Marvell/mvebu_armada-37xx/board.c 
>> b/board/Marvell/mvebu_armada-37xx/board.c
>> index 6086996b8062..fdc873b1952f 100644
>> --- a/board/Marvell/mvebu_armada-37xx/board.c
>> +++ b/board/Marvell/mvebu_armada-37xx/board.c
>> @@ -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) {
>> diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c 
>> b/board/solidrun/mx6cuboxi/mx6cuboxi.c
>> index 3eadc38f6fd4..6207bf8253ab 100644
>> --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
>> +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
>> @@ -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)
>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>> index 1e83007286b2..8078a89f18cb 100644
>> --- a/drivers/mmc/mmc.c
>> +++ b/drivers/mmc/mmc.c
>> @@ -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;
>> diff --git a/include/mmc.h b/include/mmc.h
>> index 6f943e78b740..0bf19de20e52 100644
>> --- a/include/mmc.h
>> +++ b/include/mmc.h
>> @@ -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
>>
> 
> 
> Viele Grüße,
> Stefan
> 


Viele Grüße,
Stefan
Jaehoon Chung July 15, 2021, 8:41 a.m. UTC | #4
Hi Stefan,

On 7/15/21 5:20 PM, Stefan Roese wrote:
> (added Jaehoon as MMC co-maintainer)
> 
> On 15.07.21 10:03, Stefan Roese wrote:
>> On 14.07.21 16:37, Pali Rohár wrote:
>>> 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>
> 
> Peng, Jaehoon are you okay with this patch? If yes, is it okay that
> I will pull it via the marvell tree?

I don't have any objection.

Acked-by: Jaehoon Chung <jh80.chung@samsung.com>

Best Regards,
Jaehoon Chung

> 
> Thanks,
> Stefan
> 
>> Thanks,
>> Stefan
>>
>>> ---
>>>   board/Marvell/mvebu_armada-37xx/board.c | 2 +-
>>>   board/solidrun/mx6cuboxi/mx6cuboxi.c    | 2 +-
>>>   drivers/mmc/mmc.c                       | 7 ++++---
>>>   include/mmc.h                           | 3 ++-
>>>   4 files changed, 8 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c
>>> index 6086996b8062..fdc873b1952f 100644
>>> --- a/board/Marvell/mvebu_armada-37xx/board.c
>>> +++ b/board/Marvell/mvebu_armada-37xx/board.c
>>> @@ -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) {
>>> diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
>>> index 3eadc38f6fd4..6207bf8253ab 100644
>>> --- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
>>> +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
>>> @@ -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)
>>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>>> index 1e83007286b2..8078a89f18cb 100644
>>> --- a/drivers/mmc/mmc.c
>>> +++ b/drivers/mmc/mmc.c
>>> @@ -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;
>>> diff --git a/include/mmc.h b/include/mmc.h
>>> index 6f943e78b740..0bf19de20e52 100644
>>> --- a/include/mmc.h
>>> +++ b/include/mmc.h
>>> @@ -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
>>>
>>
>>
>> Viele Grüße,
>> Stefan
>>
> 
> 
> Viele Grüße,
> Stefan
>
diff mbox series

Patch

diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c
index 6086996b8062..fdc873b1952f 100644
--- a/board/Marvell/mvebu_armada-37xx/board.c
+++ b/board/Marvell/mvebu_armada-37xx/board.c
@@ -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) {
diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c b/board/solidrun/mx6cuboxi/mx6cuboxi.c
index 3eadc38f6fd4..6207bf8253ab 100644
--- a/board/solidrun/mx6cuboxi/mx6cuboxi.c
+++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c
@@ -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)
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 1e83007286b2..8078a89f18cb 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -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;
diff --git a/include/mmc.h b/include/mmc.h
index 6f943e78b740..0bf19de20e52 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -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