diff mbox

use default speed of the eMMC

Message ID CA+pahgdUP3Zam-cSeW8fJR9AmiUo2_Ok_uDHqWTgwvzCGC58+g@mail.gmail.com
State New
Headers show

Commit Message

장민우 May 24, 2016, 9:07 a.m. UTC
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.

Thank you.


MW Jang.
--
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

Comments

Jaehoon Chung May 24, 2016, 9:41 a.m. UTC | #1
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@vger.kernel.org
> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
장민우 May 26, 2016, 5:16 a.m. UTC | #2
Hello, Jaehoon Chung.

I mentioned "default speed mode" not hs200, hs400, ddr and hs mode.

I think If "default speed mode" is set, there is no bus width change.

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@samsung.com>:
> 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@vger.kernel.org
>> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jaehoon Chung May 26, 2016, 5:49 a.m. UTC | #3
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@samsung.com>:
>> 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@vger.kernel.org
>>> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
장민우 May 26, 2016, 6:34 a.m. UTC | #4
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.

So, eMMC versions and environments have nothing to do with "default speed mode".

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@samsung.com>:
> 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@samsung.com>:
>>> 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@vger.kernel.org
>>>> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jaehoon Chung May 26, 2016, 8:30 a.m. UTC | #5
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@samsung.com>:
>> 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@samsung.com>:
>>>> 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@vger.kernel.org
>>>>> 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@vger.kernel.org
> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
장민우 May 26, 2016, 9:04 a.m. UTC | #6
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@samsung.com>:
> 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@samsung.com>:
>>> 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@samsung.com>:
>>>>> 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@vger.kernel.org
>>>>>> 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@vger.kernel.org
>> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jaehoon Chung May 26, 2016, 9:45 a.m. UTC | #7
On 05/26/2016 06:04 PM, 장민우 wrote:
> 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.

3.10? Now..going to 4.7...
I will not say anymore..Even though other guys can accept yours, but i'm not.

Best Regards,
Jaehoon Chung

> 
> 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@samsung.com>:
>> 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@samsung.com>:
>>>> 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@samsung.com>:
>>>>>> 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@vger.kernel.org
>>>>>>> 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@vger.kernel.org
>>> 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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

=====================================================

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,