mmc: Poll for broken card detection case

Message ID 1514867157-18907-1-git-send-email-jun.nie@linaro.org
State Accepted
Commit 2f516e4aa286eb0203e34ab9be68b08f7a3c44c1
Headers show
Series
  • mmc: Poll for broken card detection case
Related show

Commit Message

Jun Nie Jan. 2, 2018, 4:25 a.m.
Poll for broken card detection case instead of return
no card detected.

Signed-off-by: Jun Nie <jun.nie@linaro.org>
---
 drivers/mmc/Kconfig | 5 +++++
 drivers/mmc/mmc.c   | 4 ++++
 2 files changed, 9 insertions(+)

Comments

Jaehoon Chung Jan. 22, 2018, 5:03 a.m. | #1
Hi,

On 01/02/2018 01:25 PM, Jun Nie wrote:
> Poll for broken card detection case instead of return
> no card detected.

Sorry for late. i didn't see this patch in my mailbox.

Does it need to add the new config?

Best Regards,
Jaehoon Chung

> 
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> ---
>  drivers/mmc/Kconfig | 5 +++++
>  drivers/mmc/mmc.c   | 4 ++++
>  2 files changed, 9 insertions(+)
> 
> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
> index 8fbeaa7..ed194a3 100644
> --- a/drivers/mmc/Kconfig
> +++ b/drivers/mmc/Kconfig
> @@ -10,6 +10,11 @@ config MMC
>  	  If you want MMC/SD/SDIO support, you should say Y here and
>  	  also to your specific host controller driver.
>  
> +config MMC_BROKEN_CD
> +	bool "Poll for broken card detection case"
> +	help
> +	  If card  detection feature is broken, just poll to detect.
> +
>  config DM_MMC
>  	bool "Enable MMC controllers using Driver Model"
>  	depends on DM
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 38d2e07..13c5bf5 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1650,8 +1650,12 @@ int mmc_start_init(struct mmc *mmc)
>  	bool no_card;
>  	int err;
>  
> +#if !defined(CONFIG_MMC_BROKEN_CD)
>  	/* we pretend there's no card when init is NULL */
>  	no_card = mmc_getcd(mmc) == 0;
> +#else
> +	no_card = 0;
> +#endif
>  #if !CONFIG_IS_ENABLED(DM_MMC)
>  	no_card = no_card || (mmc->cfg->ops->init == NULL);
>  #endif
>
Jun Nie Jan. 22, 2018, 12:21 p.m. | #2
2018-01-22 13:03 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
> Hi,
>
> On 01/02/2018 01:25 PM, Jun Nie wrote:
>> Poll for broken card detection case instead of return
>> no card detected.
>
> Sorry for late. i didn't see this patch in my mailbox.
>
> Does it need to add the new config?

Yes, a new config, CONFIG_MMC_BROKEN_CD is needed for board that does
not support card detection pin. Not sure whether you mean this.
Without this config, the logic is not changed so no board is impacted
by this config.

Jun

>
> Best Regards,
> Jaehoon Chung
>
>>
>> Signed-off-by: Jun Nie <jun.nie@linaro.org>
>> ---
>>  drivers/mmc/Kconfig | 5 +++++
>>  drivers/mmc/mmc.c   | 4 ++++
>>  2 files changed, 9 insertions(+)
>>
>> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
>> index 8fbeaa7..ed194a3 100644
>> --- a/drivers/mmc/Kconfig
>> +++ b/drivers/mmc/Kconfig
>> @@ -10,6 +10,11 @@ config MMC
>>         If you want MMC/SD/SDIO support, you should say Y here and
>>         also to your specific host controller driver.
>>
>> +config MMC_BROKEN_CD
>> +     bool "Poll for broken card detection case"
>> +     help
>> +       If card  detection feature is broken, just poll to detect.
>> +
>>  config DM_MMC
>>       bool "Enable MMC controllers using Driver Model"
>>       depends on DM
>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>> index 38d2e07..13c5bf5 100644
>> --- a/drivers/mmc/mmc.c
>> +++ b/drivers/mmc/mmc.c
>> @@ -1650,8 +1650,12 @@ int mmc_start_init(struct mmc *mmc)
>>       bool no_card;
>>       int err;
>>
>> +#if !defined(CONFIG_MMC_BROKEN_CD)
>>       /* we pretend there's no card when init is NULL */
>>       no_card = mmc_getcd(mmc) == 0;
>> +#else
>> +     no_card = 0;
>> +#endif
>>  #if !CONFIG_IS_ENABLED(DM_MMC)
>>       no_card = no_card || (mmc->cfg->ops->init == NULL);
>>  #endif
>>
>
Jaehoon Chung Jan. 23, 2018, 2 a.m. | #3
On 01/22/2018 09:21 PM, Jun Nie wrote:
> 2018-01-22 13:03 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
>> Hi,
>>
>> On 01/02/2018 01:25 PM, Jun Nie wrote:
>>> Poll for broken card detection case instead of return
>>> no card detected.
>>
>> Sorry for late. i didn't see this patch in my mailbox.
>>
>> Does it need to add the new config?
> 
> Yes, a new config, CONFIG_MMC_BROKEN_CD is needed for board that does
> not support card detection pin. Not sure whether you mean this.
> Without this config, the logic is not changed so no board is impacted
> by this config.

Right, there is no impacted by this config.
In Kernel, there is "broken-cd" property. So how about using 'broken-cd' property instead of adding config?

Best Regards,
Jaehoon Chung

> 
> Jun
> 
>>
>> Best Regards,
>> Jaehoon Chung
>>
>>>
>>> Signed-off-by: Jun Nie <jun.nie@linaro.org>
>>> ---
>>>  drivers/mmc/Kconfig | 5 +++++
>>>  drivers/mmc/mmc.c   | 4 ++++
>>>  2 files changed, 9 insertions(+)
>>>
>>> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
>>> index 8fbeaa7..ed194a3 100644
>>> --- a/drivers/mmc/Kconfig
>>> +++ b/drivers/mmc/Kconfig
>>> @@ -10,6 +10,11 @@ config MMC
>>>         If you want MMC/SD/SDIO support, you should say Y here and
>>>         also to your specific host controller driver.
>>>
>>> +config MMC_BROKEN_CD
>>> +     bool "Poll for broken card detection case"
>>> +     help
>>> +       If card  detection feature is broken, just poll to detect.
>>> +
>>>  config DM_MMC
>>>       bool "Enable MMC controllers using Driver Model"
>>>       depends on DM
>>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>>> index 38d2e07..13c5bf5 100644
>>> --- a/drivers/mmc/mmc.c
>>> +++ b/drivers/mmc/mmc.c
>>> @@ -1650,8 +1650,12 @@ int mmc_start_init(struct mmc *mmc)
>>>       bool no_card;
>>>       int err;
>>>
>>> +#if !defined(CONFIG_MMC_BROKEN_CD)
>>>       /* we pretend there's no card when init is NULL */
>>>       no_card = mmc_getcd(mmc) == 0;
>>> +#else
>>> +     no_card = 0;
>>> +#endif
>>>  #if !CONFIG_IS_ENABLED(DM_MMC)
>>>       no_card = no_card || (mmc->cfg->ops->init == NULL);
>>>  #endif
>>>
>>
> 
> 
>
Jun Nie Jan. 23, 2018, 3:10 a.m. | #4
2018-01-23 10:00 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
> On 01/22/2018 09:21 PM, Jun Nie wrote:
>> 2018-01-22 13:03 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
>>> Hi,
>>>
>>> On 01/02/2018 01:25 PM, Jun Nie wrote:
>>>> Poll for broken card detection case instead of return
>>>> no card detected.
>>>
>>> Sorry for late. i didn't see this patch in my mailbox.
>>>
>>> Does it need to add the new config?
>>
>> Yes, a new config, CONFIG_MMC_BROKEN_CD is needed for board that does
>> not support card detection pin. Not sure whether you mean this.
>> Without this config, the logic is not changed so no board is impacted
>> by this config.
>
> Right, there is no impacted by this config.
> In Kernel, there is "broken-cd" property. So how about using 'broken-cd' property instead of adding config?
>
> Best Regards,
> Jaehoon Chung
>
Some platforms, if not all, do not support DTB in SPL. So a config is
better than dt node property.

Jun
>>
>> Jun
>>
>>>
>>> Best Regards,
>>> Jaehoon Chung
>>>
>>>>
>>>> Signed-off-by: Jun Nie <jun.nie@linaro.org>
>>>> ---
>>>>  drivers/mmc/Kconfig | 5 +++++
>>>>  drivers/mmc/mmc.c   | 4 ++++
>>>>  2 files changed, 9 insertions(+)
>>>>
>>>> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
>>>> index 8fbeaa7..ed194a3 100644
>>>> --- a/drivers/mmc/Kconfig
>>>> +++ b/drivers/mmc/Kconfig
>>>> @@ -10,6 +10,11 @@ config MMC
>>>>         If you want MMC/SD/SDIO support, you should say Y here and
>>>>         also to your specific host controller driver.
>>>>
>>>> +config MMC_BROKEN_CD
>>>> +     bool "Poll for broken card detection case"
>>>> +     help
>>>> +       If card  detection feature is broken, just poll to detect.
>>>> +
>>>>  config DM_MMC
>>>>       bool "Enable MMC controllers using Driver Model"
>>>>       depends on DM
>>>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>>>> index 38d2e07..13c5bf5 100644
>>>> --- a/drivers/mmc/mmc.c
>>>> +++ b/drivers/mmc/mmc.c
>>>> @@ -1650,8 +1650,12 @@ int mmc_start_init(struct mmc *mmc)
>>>>       bool no_card;
>>>>       int err;
>>>>
>>>> +#if !defined(CONFIG_MMC_BROKEN_CD)
>>>>       /* we pretend there's no card when init is NULL */
>>>>       no_card = mmc_getcd(mmc) == 0;
>>>> +#else
>>>> +     no_card = 0;
>>>> +#endif
>>>>  #if !CONFIG_IS_ENABLED(DM_MMC)
>>>>       no_card = no_card || (mmc->cfg->ops->init == NULL);
>>>>  #endif
>>>>
>>>
>>
>>
>>
>
Jaehoon Chung Jan. 23, 2018, 3:25 a.m. | #5
On 01/23/2018 12:10 PM, Jun Nie wrote:
> 2018-01-23 10:00 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
>> On 01/22/2018 09:21 PM, Jun Nie wrote:
>>> 2018-01-22 13:03 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
>>>> Hi,
>>>>
>>>> On 01/02/2018 01:25 PM, Jun Nie wrote:
>>>>> Poll for broken card detection case instead of return
>>>>> no card detected.
>>>>
>>>> Sorry for late. i didn't see this patch in my mailbox.
>>>>
>>>> Does it need to add the new config?
>>>
>>> Yes, a new config, CONFIG_MMC_BROKEN_CD is needed for board that does
>>> not support card detection pin. Not sure whether you mean this.
>>> Without this config, the logic is not changed so no board is impacted
>>> by this config.
>>
>> Right, there is no impacted by this config.
>> In Kernel, there is "broken-cd" property. So how about using 'broken-cd' property instead of adding config?
>>
>> Best Regards,
>> Jaehoon Chung
>>
> Some platforms, if not all, do not support DTB in SPL. So a config is
> better than dt node property.

Ok. It make sense...Will apply this patch to u-boot-mmc. Thanks!

Best Regards,
Jaehoon Chung

> 
> Jun
>>>
>>> Jun
>>>
>>>>
>>>> Best Regards,
>>>> Jaehoon Chung
>>>>
>>>>>
>>>>> Signed-off-by: Jun Nie <jun.nie@linaro.org>
>>>>> ---
>>>>>  drivers/mmc/Kconfig | 5 +++++
>>>>>  drivers/mmc/mmc.c   | 4 ++++
>>>>>  2 files changed, 9 insertions(+)
>>>>>
>>>>> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
>>>>> index 8fbeaa7..ed194a3 100644
>>>>> --- a/drivers/mmc/Kconfig
>>>>> +++ b/drivers/mmc/Kconfig
>>>>> @@ -10,6 +10,11 @@ config MMC
>>>>>         If you want MMC/SD/SDIO support, you should say Y here and
>>>>>         also to your specific host controller driver.
>>>>>
>>>>> +config MMC_BROKEN_CD
>>>>> +     bool "Poll for broken card detection case"
>>>>> +     help
>>>>> +       If card  detection feature is broken, just poll to detect.
>>>>> +
>>>>>  config DM_MMC
>>>>>       bool "Enable MMC controllers using Driver Model"
>>>>>       depends on DM
>>>>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>>>>> index 38d2e07..13c5bf5 100644
>>>>> --- a/drivers/mmc/mmc.c
>>>>> +++ b/drivers/mmc/mmc.c
>>>>> @@ -1650,8 +1650,12 @@ int mmc_start_init(struct mmc *mmc)
>>>>>       bool no_card;
>>>>>       int err;
>>>>>
>>>>> +#if !defined(CONFIG_MMC_BROKEN_CD)
>>>>>       /* we pretend there's no card when init is NULL */
>>>>>       no_card = mmc_getcd(mmc) == 0;
>>>>> +#else
>>>>> +     no_card = 0;
>>>>> +#endif
>>>>>  #if !CONFIG_IS_ENABLED(DM_MMC)
>>>>>       no_card = no_card || (mmc->cfg->ops->init == NULL);
>>>>>  #endif
>>>>>
>>>>
>>>
>>>
>>>
>>
> 
> 
>
Jaehoon Chung Jan. 24, 2018, 7:29 a.m. | #6
On 01/23/2018 12:25 PM, Jaehoon Chung wrote:
> On 01/23/2018 12:10 PM, Jun Nie wrote:
>> 2018-01-23 10:00 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
>>> On 01/22/2018 09:21 PM, Jun Nie wrote:
>>>> 2018-01-22 13:03 GMT+08:00 Jaehoon Chung <jh80.chung@samsung.com>:
>>>>> Hi,
>>>>>
>>>>> On 01/02/2018 01:25 PM, Jun Nie wrote:
>>>>>> Poll for broken card detection case instead of return
>>>>>> no card detected.
>>>>>
>>>>> Sorry for late. i didn't see this patch in my mailbox.
>>>>>
>>>>> Does it need to add the new config?
>>>>
>>>> Yes, a new config, CONFIG_MMC_BROKEN_CD is needed for board that does
>>>> not support card detection pin. Not sure whether you mean this.
>>>> Without this config, the logic is not changed so no board is impacted
>>>> by this config.
>>>
>>> Right, there is no impacted by this config.
>>> In Kernel, there is "broken-cd" property. So how about using 'broken-cd' property instead of adding config?
>>>
>>> Best Regards,
>>> Jaehoon Chung
>>>
>> Some platforms, if not all, do not support DTB in SPL. So a config is
>> better than dt node property.
> 
> Ok. It make sense...Will apply this patch to u-boot-mmc. Thanks!

Applied to u-boot-mmc.

Best Regards,
Jaehoon Chung

> 
> Best Regards,
> Jaehoon Chung
> 
>>
>> Jun
>>>>
>>>> Jun
>>>>
>>>>>
>>>>> Best Regards,
>>>>> Jaehoon Chung
>>>>>
>>>>>>
>>>>>> Signed-off-by: Jun Nie <jun.nie@linaro.org>
>>>>>> ---
>>>>>>  drivers/mmc/Kconfig | 5 +++++
>>>>>>  drivers/mmc/mmc.c   | 4 ++++
>>>>>>  2 files changed, 9 insertions(+)
>>>>>>
>>>>>> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
>>>>>> index 8fbeaa7..ed194a3 100644
>>>>>> --- a/drivers/mmc/Kconfig
>>>>>> +++ b/drivers/mmc/Kconfig
>>>>>> @@ -10,6 +10,11 @@ config MMC
>>>>>>         If you want MMC/SD/SDIO support, you should say Y here and
>>>>>>         also to your specific host controller driver.
>>>>>>
>>>>>> +config MMC_BROKEN_CD
>>>>>> +     bool "Poll for broken card detection case"
>>>>>> +     help
>>>>>> +       If card  detection feature is broken, just poll to detect.
>>>>>> +
>>>>>>  config DM_MMC
>>>>>>       bool "Enable MMC controllers using Driver Model"
>>>>>>       depends on DM
>>>>>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
>>>>>> index 38d2e07..13c5bf5 100644
>>>>>> --- a/drivers/mmc/mmc.c
>>>>>> +++ b/drivers/mmc/mmc.c
>>>>>> @@ -1650,8 +1650,12 @@ int mmc_start_init(struct mmc *mmc)
>>>>>>       bool no_card;
>>>>>>       int err;
>>>>>>
>>>>>> +#if !defined(CONFIG_MMC_BROKEN_CD)
>>>>>>       /* we pretend there's no card when init is NULL */
>>>>>>       no_card = mmc_getcd(mmc) == 0;
>>>>>> +#else
>>>>>> +     no_card = 0;
>>>>>> +#endif
>>>>>>  #if !CONFIG_IS_ENABLED(DM_MMC)
>>>>>>       no_card = no_card || (mmc->cfg->ops->init == NULL);
>>>>>>  #endif
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>>
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
>

Patch

diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index 8fbeaa7..ed194a3 100644
--- a/drivers/mmc/Kconfig
+++ b/drivers/mmc/Kconfig
@@ -10,6 +10,11 @@  config MMC
 	  If you want MMC/SD/SDIO support, you should say Y here and
 	  also to your specific host controller driver.
 
+config MMC_BROKEN_CD
+	bool "Poll for broken card detection case"
+	help
+	  If card  detection feature is broken, just poll to detect.
+
 config DM_MMC
 	bool "Enable MMC controllers using Driver Model"
 	depends on DM
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 38d2e07..13c5bf5 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1650,8 +1650,12 @@  int mmc_start_init(struct mmc *mmc)
 	bool no_card;
 	int err;
 
+#if !defined(CONFIG_MMC_BROKEN_CD)
 	/* we pretend there's no card when init is NULL */
 	no_card = mmc_getcd(mmc) == 0;
+#else
+	no_card = 0;
+#endif
 #if !CONFIG_IS_ENABLED(DM_MMC)
 	no_card = no_card || (mmc->cfg->ops->init == NULL);
 #endif