There is no "default speed mode" in the JEDEC specification. It is that eMMC speed using the clock frequency not in high speed mode. In the mmc core driver of the kernel-3.9, bus width is changed from 1 to 4 or 8 without EXT_CSD_CARD_TYPE_HS and HS_TIMING setting. But, bus width is not changed in the kernel 3.10. And the cause of this problem is that mmc_select_bus_width() is never called in this situation, I think. So, you suggest when I want to use 20MHz clock frequency without high speed setting, I should modify mmc driver. There is no problem with that. Thank you. Best regards, Minwoo Jang. 2016-05-26 17:30 GMT+09:00 Jaehoon Chung <jh80.chung@xxxxxxxxxxx>: > On 05/26/2016 03:34 PM, 장민우 wrote: >> Yes, "default speed mode" what I mentioned is using below 26MHz clock >> (not in high speed mode). >> >> While eMMC card is on the initializing step, it uses below 400KHz not 26MHz. >> >> I just want to use below 26MHz, because some customers want to use low >> hertz clock. > > Just for some customers? Then You can add the workaround code in your local. > >> >> So, eMMC versions and environments have nothing to do with "default speed mode". > > How do you set your "default speed mode"? (Support HS/DDR/HS200 etc..) > > It seems that can't set the lower hertz than 26MHz with only your patch. > what hertz exactly? Your purpose is just hook for some customers. > > And i can't find "default speed mode" in eMMC SPEC. Could you explain where mentioned "default speed mode"? > > Best Regards, > Jaehoon Chung > >> >> If there is a misunderstanding, please let me know. >> >> Thank you. >> >> Best Regards, >> Minwoo Jang >> >> >> 2016-05-26 14:49 GMT+09:00 Jaehoon Chung <jh80.chung@xxxxxxxxxxx>: >>> On 05/26/2016 02:16 PM, 장민우 wrote: >>>> Hello, Jaehoon Chung. >>>> >>>> I mentioned "default speed mode" not hs200, hs400, ddr and hs mode. >>> >>> Yes, default speed mode is not HS400, HS400, DDR.. >>> You mean "default speed mode" is 26MHz? >>> >>> As i know, default speed is 26MHz. and it used for initializing card. >>> >>>> >>>> I think If "default speed mode" is set, there is no bus width change. >>> >>> There is DEVICE_TYPE[196] at ext_csd register. >>> Device type should be selected one of them. (You can see the currently valid value.) >>> >>> I don't know exactly what your purpose. >>> If i missed something, let me know in more detail about default speed, eMMC version, your environment. >>> >>> Best Regards, >>> Jaehoon Chung >>> >>>> >>>> If you have any advice to use "default speed mode" of the eMMC. please >>>> let me know. >>>> >>>> Thank you. >>>> >>>> Best Regards, >>>> Minwoo Jang. >>>> >>>> 2016-05-24 18:41 GMT+09:00 Jaehoon Chung <jh80.chung@xxxxxxxxxxx>: >>>>> Hi, >>>>> >>>>> On 05/24/2016 06:07 PM, 장민우 wrote: >>>>>> Dear linux-mmc. >>>>>> >>>>>> Hello, I'm Minwoo Jang. >>>>>> >>>>>> I have a question about using default speed of the eMMC. >>>>>> >>>>>> When default speed is used, mmc_select_bus_width() is never called. >>>>>> >>>>>> So, eMMC can not be set 4 bit or 8 bit bus width, I think. >>>>>> >>>>>> Please, give me your opinions on the following diff codes. >>>>> >>>>> In mmc_select_timing(), timing should be set to MMC_TIMING_HS or others. >>>>> Then mmc_select_bus_width() should be entered. >>>>> >>>>> Best Regards, >>>>> Jaehoon Chung >>>>> >>>>>> >>>>>> Thank you. >>>>>> >>>>>> ===================================================== >>>>>> >>>>>> diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c >>>>>> index 94b4462..3b1cc4d 100644 >>>>>> --- a/drivers/mmc/core/mmc.c >>>>>> +++ b/drivers/mmc/core/mmc.c >>>>>> @@ -952,6 +952,8 @@ static int mmc_select_bus_width(struct mmc_card *card) >>>>>> >>>>>> if (!err) { >>>>>> err = bus_width; >>>>>> + pr_warn("%s: switch to bus width %d\n", >>>>>> + mmc_hostname(host), (1 << bus_width)); >>>>>> break; >>>>>> } else { >>>>>> pr_warn("%s: switch to bus width %d failed\n", >>>>>> @@ -1500,6 +1502,14 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, >>>>>> if (err) >>>>>> goto err; >>>>>> } >>>>>> + } else { >>>>>> + /* Select the bus width for normal speed mode */ >>>>>> + err = mmc_select_bus_width(card); >>>>>> + if (IS_ERR_VALUE(err)) { >>>>>> + pr_warn("%s: Selecting bus width failed\n", >>>>>> + mmc_hostname(card->host)); >>>>>> + goto err; >>>>>> + } >>>>>> } >>>>>> >>>>>> Best regards, >>>>>> >>>>>> MW Jang. >>>>>> -- >>>>>> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >>>>>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>>>>> >>>>>> >>>>>> >>>>> >>>> >>>> >>>> >>> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html