* [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).