linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
@ 2014-09-09 12:26 Jean-Michel Hautbois
  2014-09-11  2:38 ` Jaehoon Chung
  0 siblings, 1 reply; 10+ messages in thread
From: Jean-Michel Hautbois @ 2014-09-09 12:26 UTC (permalink / raw)
  To: linux-kernel, linux-mmc
  Cc: tgih.jun, ulf.hansson, chris, Jean-Michel Hautbois

Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
Without this patch, I/O errors occur.
This eMMC seems to have a different Manufacturer ID as it reads 0x45
and not 0x2 as specified in datasheet.

Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
---
 drivers/mmc/core/mmc_ops.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
index f51b5ba..91babaa 100644
--- a/drivers/mmc/core/mmc_ops.c
+++ b/drivers/mmc/core/mmc_ops.c
@@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
 	if (!use_busy_signal)
 		return 0;
 
+	/* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
+	 * before sending CMD13 after CMD6
+	 * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
+	 */
+	if (card->cid.manfid == CID_MANFID_SANDISK ||
+		card->cid.manfid == 0x45) {
+		msleep(1);
+	}
+
 	/*
 	 * CRC errors shall only be ignored in cases were CMD13 is used to poll
 	 * to detect busy completion.
-- 
2.0.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-09 12:26 [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards Jean-Michel Hautbois
@ 2014-09-11  2:38 ` Jaehoon Chung
  2014-09-15 10:08   ` Jean-Michel Hautbois
  0 siblings, 1 reply; 10+ messages in thread
From: Jaehoon Chung @ 2014-09-11  2:38 UTC (permalink / raw)
  To: Jean-Michel Hautbois, linux-kernel, linux-mmc
  Cc: tgih.jun, ulf.hansson, chris

Hi,

On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
> Without this patch, I/O errors occur.
> This eMMC seems to have a different Manufacturer ID as it reads 0x45
> and not 0x2 as specified in datasheet.

I think this patch don't merge into mainline.
This is not solution for problem.
you mentioned the below comment, this is workaround.

> 
> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
> ---
>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
> index f51b5ba..91babaa 100644
> --- a/drivers/mmc/core/mmc_ops.c
> +++ b/drivers/mmc/core/mmc_ops.c
> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>  	if (!use_busy_signal)
>  		return 0;
>  
> +	/* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
> +	 * before sending CMD13 after CMD6
> +	 * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
> +	 */
> +	if (card->cid.manfid == CID_MANFID_SANDISK ||
> +		card->cid.manfid == 0x45) {
> +		msleep(1);
> +	}

If it's a general problem of Sandisk SDIN5D1-2G,
I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?

Best Regards,
Jaehoon Chung

> +
>  	/*
>  	 * CRC errors shall only be ignored in cases were CMD13 is used to poll
>  	 * to detect busy completion.
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-11  2:38 ` Jaehoon Chung
@ 2014-09-15 10:08   ` Jean-Michel Hautbois
  2014-09-15 10:44     ` Jaehoon Chung
  0 siblings, 1 reply; 10+ messages in thread
From: Jean-Michel Hautbois @ 2014-09-15 10:08 UTC (permalink / raw)
  To: Jaehoon Chung; +Cc: linux-kernel, linux-mmc, tgih.jun, Ulf Hansson, Chris Ball

Hi Jaehoon,

> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
>> Without this patch, I/O errors occur.
>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
>> and not 0x2 as specified in datasheet.
>
> I think this patch don't merge into mainline.
> This is not solution for problem.
> you mentioned the below comment, this is workaround.

Yes

>>
>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
>> ---
>>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
>>  1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
>> index f51b5ba..91babaa 100644
>> --- a/drivers/mmc/core/mmc_ops.c
>> +++ b/drivers/mmc/core/mmc_ops.c
>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>>       if (!use_busy_signal)
>>               return 0;
>>
>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
>> +      * before sending CMD13 after CMD6
>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
>> +      */
>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
>> +             card->cid.manfid == 0x45) {
>> +             msleep(1);
>> +     }
>
> If it's a general problem of Sandisk SDIN5D1-2G,
> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?

Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
have this MANFID different from what is defined by CID_MANFID_SANDISK.
How should I use MMC_FIXUP ? Like this ?
MMC_FIXUP("SEM02G", 0x45, CID_OEMID_ANY, add_quirk, MMC_QUIRK_INAND_CMD13) ?

If so, can I use :
if (card->quirks & MMC_QUIRK_INAND_CMD38)
    msleep(1);

In drivers/mmc/core/mmc_ops.c ?
Is this the good way ?

Thanks,
JM

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-15 10:08   ` Jean-Michel Hautbois
@ 2014-09-15 10:44     ` Jaehoon Chung
  2014-09-15 10:53       ` Jean-Michel Hautbois
  2014-09-21 17:48       ` Pavel Machek
  0 siblings, 2 replies; 10+ messages in thread
From: Jaehoon Chung @ 2014-09-15 10:44 UTC (permalink / raw)
  To: Jean-Michel Hautbois, Jaehoon Chung
  Cc: linux-kernel, linux-mmc, tgih.jun, Ulf Hansson, Chris Ball

On 09/15/2014 07:08 PM, Jean-Michel Hautbois wrote:
> Hi Jaehoon,
> 
>> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
>>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
>>> Without this patch, I/O errors occur.
>>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
>>> and not 0x2 as specified in datasheet.
>>
>> I think this patch don't merge into mainline.
>> This is not solution for problem.
>> you mentioned the below comment, this is workaround.
> 
> Yes
> 
>>>
>>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
>>> ---
>>>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
>>>  1 file changed, 9 insertions(+)
>>>
>>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
>>> index f51b5ba..91babaa 100644
>>> --- a/drivers/mmc/core/mmc_ops.c
>>> +++ b/drivers/mmc/core/mmc_ops.c
>>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>>>       if (!use_busy_signal)
>>>               return 0;
>>>
>>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
>>> +      * before sending CMD13 after CMD6
>>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
>>> +      */
>>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
>>> +             card->cid.manfid == 0x45) {
>>> +             msleep(1);
>>> +     }
>>
>> If it's a general problem of Sandisk SDIN5D1-2G,
>> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?
> 
> Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
> have this MANFID different from what is defined by CID_MANFID_SANDISK.
> How should I use MMC_FIXUP ? Like this ?

I think you need to explain why delay is need.
i didn't have same card, but it might be your host controller or other problem. 

You can define the 0x45 with other naming.
ex) CID_MANFID_SANDISK_2	0x45 ? Just example.:)

And Your first patch is applied for every Sandisk card, isn't?

Best Regards,
Jaehoon Chung

> MMC_FIXUP("SEM02G", 0x45, CID_OEMID_ANY, add_quirk, MMC_QUIRK_INAND_CMD13) ?
> 
> If so, can I use :
> if (card->quirks & MMC_QUIRK_INAND_CMD38)
>     msleep(1);
> 
> In drivers/mmc/core/mmc_ops.c ?
> Is this the good way ?
> 
> Thanks,
> JM
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-15 10:44     ` Jaehoon Chung
@ 2014-09-15 10:53       ` Jean-Michel Hautbois
  2014-09-15 11:29         ` Jean-Michel Hautbois
  2014-09-21 17:48       ` Pavel Machek
  1 sibling, 1 reply; 10+ messages in thread
From: Jean-Michel Hautbois @ 2014-09-15 10:53 UTC (permalink / raw)
  To: Jaehoon Chung; +Cc: linux-kernel, linux-mmc, tgih.jun, Ulf Hansson, Chris Ball

2014-09-15 12:44 GMT+02:00 Jaehoon Chung <jh80.chung@samsung.com>:
> On 09/15/2014 07:08 PM, Jean-Michel Hautbois wrote:
>> Hi Jaehoon,
>>
>>> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
>>>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
>>>> Without this patch, I/O errors occur.
>>>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
>>>> and not 0x2 as specified in datasheet.
>>>
>>> I think this patch don't merge into mainline.
>>> This is not solution for problem.
>>> you mentioned the below comment, this is workaround.
>>
>> Yes
>>
>>>>
>>>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
>>>> ---
>>>>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
>>>>  1 file changed, 9 insertions(+)
>>>>
>>>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
>>>> index f51b5ba..91babaa 100644
>>>> --- a/drivers/mmc/core/mmc_ops.c
>>>> +++ b/drivers/mmc/core/mmc_ops.c
>>>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>>>>       if (!use_busy_signal)
>>>>               return 0;
>>>>
>>>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
>>>> +      * before sending CMD13 after CMD6
>>>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
>>>> +      */
>>>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
>>>> +             card->cid.manfid == 0x45) {
>>>> +             msleep(1);
>>>> +     }
>>>
>>> If it's a general problem of Sandisk SDIN5D1-2G,
>>> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?
>>
>> Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
>> have this MANFID different from what is defined by CID_MANFID_SANDISK.
>> How should I use MMC_FIXUP ? Like this ?
>
> I think you need to explain why delay is need.
> i didn't have same card, but it might be your host controller or other problem.

Well, I don't know why it is needed, this is undocumented, nothing in
datasheet explains anything about this.

JM

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-15 10:53       ` Jean-Michel Hautbois
@ 2014-09-15 11:29         ` Jean-Michel Hautbois
  2014-09-16  0:53           ` hisanao.kinkawa
  0 siblings, 1 reply; 10+ messages in thread
From: Jean-Michel Hautbois @ 2014-09-15 11:29 UTC (permalink / raw)
  To: Jaehoon Chung; +Cc: linux-kernel, linux-mmc, tgih.jun, Ulf Hansson, Chris Ball

2014-09-15 12:53 GMT+02:00 Jean-Michel Hautbois
<jean-michel.hautbois@vodalys.com>:
> 2014-09-15 12:44 GMT+02:00 Jaehoon Chung <jh80.chung@samsung.com>:
>> On 09/15/2014 07:08 PM, Jean-Michel Hautbois wrote:
>>> Hi Jaehoon,
>>>
>>>> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
>>>>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
>>>>> Without this patch, I/O errors occur.
>>>>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
>>>>> and not 0x2 as specified in datasheet.
>>>>
>>>> I think this patch don't merge into mainline.
>>>> This is not solution for problem.
>>>> you mentioned the below comment, this is workaround.
>>>
>>> Yes
>>>
>>>>>
>>>>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
>>>>> ---
>>>>>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
>>>>>  1 file changed, 9 insertions(+)
>>>>>
>>>>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
>>>>> index f51b5ba..91babaa 100644
>>>>> --- a/drivers/mmc/core/mmc_ops.c
>>>>> +++ b/drivers/mmc/core/mmc_ops.c
>>>>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>>>>>       if (!use_busy_signal)
>>>>>               return 0;
>>>>>
>>>>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
>>>>> +      * before sending CMD13 after CMD6
>>>>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
>>>>> +      */
>>>>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
>>>>> +             card->cid.manfid == 0x45) {
>>>>> +             msleep(1);
>>>>> +     }
>>>>
>>>> If it's a general problem of Sandisk SDIN5D1-2G,
>>>> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?
>>>
>>> Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
>>> have this MANFID different from what is defined by CID_MANFID_SANDISK.
>>> How should I use MMC_FIXUP ? Like this ?
>>
>> I think you need to explain why delay is need.
>> i didn't have same card, but it might be your host controller or other problem.
>
> Well, I don't know why it is needed, this is undocumented, nothing in
> datasheet explains anything about this.

It seems to be uSDHC / DDR mode related. I don't even know if this is
limited to Sandisk !
And I don't have another board with another manufacturer eMMC to test.
Maybe some guys from Freescale could help with this ?

Thanks,
JM

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-15 11:29         ` Jean-Michel Hautbois
@ 2014-09-16  0:53           ` hisanao.kinkawa
  0 siblings, 0 replies; 10+ messages in thread
From: hisanao.kinkawa @ 2014-09-16  0:53 UTC (permalink / raw)
  To: jean-michel.hautbois, jh80.chung
  Cc: linux-kernel, linux-mmc, tgih.jun, ulf.hansson, chris

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 4455 bytes --]

Hi

Do not hit the following bug?
Often, This bug fails setting of CMD6.

-------- Original Message --------
Subject: 	Re: [PATCH v2] mmc:sdhci: handle busy-end interrupt during command
Date: 	Tue, 2 Sep 2014 11:27:51 +0200
From: 	Ulf Hansson <ulf.hansson@linaro.org>
To: 	Chanho Min <chanho.min@lge.com>

	

On 30 August 2014 05:40, Chanho Min <chanho.min@lge.com> wrote:
> It is fully legal for a controller to start handling busy-end interrupt
> before it has signaled that the command has completed. So make sure
> we do things in the proper order, Or it results that command interrupt
> is ignored so it can cause unexpected operations. This is founded at some
> toshiba emmc with the bellow warning.
>
> "mmc0: Got command interrupt 0x00000001 even though
> no command operation was in progress."
>
> This issue has been also reported by Youssef TRIKI:
> It is not specific to Toshiba devices, and happens with eMMC devices
> as well as SD card which support Auto-CMD12 rather than CMD23.
>
> Also, similar patch is submitted by:
> Gwendal Grignou <gwendal@chromium.org>
>
> Changes since v1:
>  Fixed conflict with the next of git.linaro.org/people/ulf.hansson/mmc.git
>  and Tested if issue is fixed again.
>
> Signed-off-by: Hankyung Yu <hankyung.yu@lge.com>
> Signed-off-by: Chanho Min <chanho.min@lge.com>
> Tested-by: Youssef TRIKI <youssef.triki@st.com>

Best Regards,
=======================================================
Hisanao Kinkawa      [hisanao.kinkawa@toshiba.co.jp <mailto:hisanao.kinkawa@toshiba.co.jp>]
=======================================================


(2014/09/15 20:29), Jean-Michel Hautbois wrote:
> 2014-09-15 12:53 GMT+02:00 Jean-Michel Hautbois
> <jean-michel.hautbois@vodalys.com>:
>> 2014-09-15 12:44 GMT+02:00 Jaehoon Chung <jh80.chung@samsung.com>:
>>> On 09/15/2014 07:08 PM, Jean-Michel Hautbois wrote:
>>>> Hi Jaehoon,
>>>>
>>>>> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
>>>>>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
>>>>>> Without this patch, I/O errors occur.
>>>>>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
>>>>>> and not 0x2 as specified in datasheet.
>>>>> I think this patch don't merge into mainline.
>>>>> This is not solution for problem.
>>>>> you mentioned the below comment, this is workaround.
>>>> Yes
>>>>
>>>>>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
>>>>>> ---
>>>>>>   drivers/mmc/core/mmc_ops.c | 9 +++++++++
>>>>>>   1 file changed, 9 insertions(+)
>>>>>>
>>>>>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
>>>>>> index f51b5ba..91babaa 100644
>>>>>> --- a/drivers/mmc/core/mmc_ops.c
>>>>>> +++ b/drivers/mmc/core/mmc_ops.c
>>>>>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>>>>>>        if (!use_busy_signal)
>>>>>>                return 0;
>>>>>>
>>>>>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
>>>>>> +      * before sending CMD13 after CMD6
>>>>>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
>>>>>> +      */
>>>>>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
>>>>>> +             card->cid.manfid == 0x45) {
>>>>>> +             msleep(1);
>>>>>> +     }
>>>>> If it's a general problem of Sandisk SDIN5D1-2G,
>>>>> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?
>>>> Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
>>>> have this MANFID different from what is defined by CID_MANFID_SANDISK.
>>>> How should I use MMC_FIXUP ? Like this ?
>>> I think you need to explain why delay is need.
>>> i didn't have same card, but it might be your host controller or other problem.
>> Well, I don't know why it is needed, this is undocumented, nothing in
>> datasheet explains anything about this.
> It seems to be uSDHC / DDR mode related. I don't even know if this is
> limited to Sandisk !
> And I don't have another board with another manufacturer eMMC to test.
> Maybe some guys from Freescale could help with this ?
>
> Thanks,
> JM
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> .
>

ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-15 10:44     ` Jaehoon Chung
  2014-09-15 10:53       ` Jean-Michel Hautbois
@ 2014-09-21 17:48       ` Pavel Machek
  2014-09-22  2:59         ` Jaehoon Chung
  2014-09-22  7:23         ` Jean-Michel Hautbois
  1 sibling, 2 replies; 10+ messages in thread
From: Pavel Machek @ 2014-09-21 17:48 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: Jean-Michel Hautbois, linux-kernel, linux-mmc, tgih.jun,
	Ulf Hansson, Chris Ball

On Mon 2014-09-15 19:44:28, Jaehoon Chung wrote:
> On 09/15/2014 07:08 PM, Jean-Michel Hautbois wrote:
> > Hi Jaehoon,
> > 
> >> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
> >>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
> >>> Without this patch, I/O errors occur.
> >>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
> >>> and not 0x2 as specified in datasheet.
> >>
> >> I think this patch don't merge into mainline.
> >> This is not solution for problem.
> >> you mentioned the below comment, this is workaround.
> > 
> > Yes
> > 
> >>>
> >>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
> >>> ---
> >>>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
> >>>  1 file changed, 9 insertions(+)
> >>>
> >>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
> >>> index f51b5ba..91babaa 100644
> >>> --- a/drivers/mmc/core/mmc_ops.c
> >>> +++ b/drivers/mmc/core/mmc_ops.c
> >>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
> >>>       if (!use_busy_signal)
> >>>               return 0;
> >>>
> >>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
> >>> +      * before sending CMD13 after CMD6
> >>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
> >>> +      */
> >>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
> >>> +             card->cid.manfid == 0x45) {
> >>> +             msleep(1);
> >>> +     }
> >>
> >> If it's a general problem of Sandisk SDIN5D1-2G,
> >> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?
> > 
> > Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
> > have this MANFID different from what is defined by CID_MANFID_SANDISK.
> > How should I use MMC_FIXUP ? Like this ?
> 
> I think you need to explain why delay is need.
> i didn't have same card, but it might be your host controller or other problem. 

Datasheet says it is needed, so we need to do the delay.

Adding pointer to the datasheet (page, chapter) to the comment might be good idea.


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-21 17:48       ` Pavel Machek
@ 2014-09-22  2:59         ` Jaehoon Chung
  2014-09-22  7:23         ` Jean-Michel Hautbois
  1 sibling, 0 replies; 10+ messages in thread
From: Jaehoon Chung @ 2014-09-22  2:59 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Jean-Michel Hautbois, linux-kernel, linux-mmc, tgih.jun,
	Ulf Hansson, Chris Ball

Hi,

On 09/22/2014 02:48 AM, Pavel Machek wrote:
> On Mon 2014-09-15 19:44:28, Jaehoon Chung wrote:
>> On 09/15/2014 07:08 PM, Jean-Michel Hautbois wrote:
>>> Hi Jaehoon,
>>>
>>>> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
>>>>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
>>>>> Without this patch, I/O errors occur.
>>>>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
>>>>> and not 0x2 as specified in datasheet.
>>>>
>>>> I think this patch don't merge into mainline.
>>>> This is not solution for problem.
>>>> you mentioned the below comment, this is workaround.
>>>
>>> Yes
>>>
>>>>>
>>>>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
>>>>> ---
>>>>>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
>>>>>  1 file changed, 9 insertions(+)
>>>>>
>>>>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
>>>>> index f51b5ba..91babaa 100644
>>>>> --- a/drivers/mmc/core/mmc_ops.c
>>>>> +++ b/drivers/mmc/core/mmc_ops.c
>>>>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>>>>>       if (!use_busy_signal)
>>>>>               return 0;
>>>>>
>>>>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
>>>>> +      * before sending CMD13 after CMD6
>>>>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
>>>>> +      */
>>>>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
>>>>> +             card->cid.manfid == 0x45) {
>>>>> +             msleep(1);
>>>>> +     }
>>>>
>>>> If it's a general problem of Sandisk SDIN5D1-2G,
>>>> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?
>>>
>>> Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
>>> have this MANFID different from what is defined by CID_MANFID_SANDISK.
>>> How should I use MMC_FIXUP ? Like this ?
>>
>> I think you need to explain why delay is need.
>> i didn't have same card, but it might be your host controller or other problem. 
> 
> Datasheet says it is needed, so we need to do the delay.
> 
> Adding pointer to the datasheet (page, chapter) to the comment might be good idea.

It's good. Then i think good that it will add the delay with the MMC_FIXUP and QUIRK.

Best Regards,
Jaehoon Chung

> 
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards
  2014-09-21 17:48       ` Pavel Machek
  2014-09-22  2:59         ` Jaehoon Chung
@ 2014-09-22  7:23         ` Jean-Michel Hautbois
  1 sibling, 0 replies; 10+ messages in thread
From: Jean-Michel Hautbois @ 2014-09-22  7:23 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Jaehoon Chung, linux-kernel, linux-mmc, tgih.jun, Ulf Hansson,
	Chris Ball

2014-09-21 19:48 GMT+02:00 Pavel Machek <pavel@ucw.cz>:
> On Mon 2014-09-15 19:44:28, Jaehoon Chung wrote:
>> On 09/15/2014 07:08 PM, Jean-Michel Hautbois wrote:
>> > Hi Jaehoon,
>> >
>> >> On 09/09/2014 09:26 PM, Jean-Michel Hautbois wrote:
>> >>> Tested on a i.MX6 board, with Sandisk SDIN5D1-2G.
>> >>> Without this patch, I/O errors occur.
>> >>> This eMMC seems to have a different Manufacturer ID as it reads 0x45
>> >>> and not 0x2 as specified in datasheet.
>> >>
>> >> I think this patch don't merge into mainline.
>> >> This is not solution for problem.
>> >> you mentioned the below comment, this is workaround.
>> >
>> > Yes
>> >
>> >>>
>> >>> Signed-off-by: Jean-Michel Hautbois <jean-michel.hautbois@vodalys.com>
>> >>> ---
>> >>>  drivers/mmc/core/mmc_ops.c | 9 +++++++++
>> >>>  1 file changed, 9 insertions(+)
>> >>>
>> >>> diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c
>> >>> index f51b5ba..91babaa 100644
>> >>> --- a/drivers/mmc/core/mmc_ops.c
>> >>> +++ b/drivers/mmc/core/mmc_ops.c
>> >>> @@ -458,6 +458,15 @@ int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
>> >>>       if (!use_busy_signal)
>> >>>               return 0;
>> >>>
>> >>> +     /* WORKAROUND: for Sandisk eMMC cards, it might need certain delay
>> >>> +      * before sending CMD13 after CMD6
>> >>> +      * On SDIN5D1-2G MANFID is 0x45 and not 0x2 as specified in datasheet
>> >>> +      */
>> >>> +     if (card->cid.manfid == CID_MANFID_SANDISK ||
>> >>> +             card->cid.manfid == 0x45) {
>> >>> +             msleep(1);
>> >>> +     }
>> >>
>> >> If it's a general problem of Sandisk SDIN5D1-2G,
>> >> I think you need to verify this problem. And can you use the MMC_FIXUP() and QUIRK?
>> >
>> > Well, this is difficult to verify, I know that on all my SDIN5D1-2G I
>> > have this MANFID different from what is defined by CID_MANFID_SANDISK.
>> > How should I use MMC_FIXUP ? Like this ?
>>
>> I think you need to explain why delay is need.
>> i didn't have same card, but it might be your host controller or other problem.
>
> Datasheet says it is needed, so we need to do the delay.
>
> Adding pointer to the datasheet (page, chapter) to the comment might be good idea.

I can't find the page saying a delay must be added... Can you point me
to the correct line ?
BTW, the MANFID is 0x45 on SDIN*-L parts. I will add a comment for this too.

JM

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-09-22  7:23 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-09 12:26 [PATCH] mmc: Add delay between CMD6 and CMD13 for Sandisk eMMC cards Jean-Michel Hautbois
2014-09-11  2:38 ` Jaehoon Chung
2014-09-15 10:08   ` Jean-Michel Hautbois
2014-09-15 10:44     ` Jaehoon Chung
2014-09-15 10:53       ` Jean-Michel Hautbois
2014-09-15 11:29         ` Jean-Michel Hautbois
2014-09-16  0:53           ` hisanao.kinkawa
2014-09-21 17:48       ` Pavel Machek
2014-09-22  2:59         ` Jaehoon Chung
2014-09-22  7:23         ` Jean-Michel Hautbois

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).