diff mbox

[U-Boot,U-BOOT] mmc: remove the hard setting for tran_speed

Message ID 4F716933.4080006@samsung.com
State Accepted, archived
Delegated to: Andy Fleming
Headers show

Commit Message

Jaehoon Chung March 27, 2012, 7:16 a.m. UTC
mmc_set_clock is set to the hard-coding.
But i think good that use the tran_speed value.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/mmc/mmc.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

Comments

Jaehoon Chung April 2, 2012, 6:31 p.m. UTC | #1
Hi Andy.

How do you about this patch?
I want to know your thinking.
In my case, clock is set to 50MHz, but mmcinfo is produced the "25MHz".
Because tran_speed is 25MHz.
But mmc->card_caps is set to MMC_MODE_HS and MMC_MODE_HS_52MHZ.
So we should be see the wrong information with mmcinfo.

Best Regards,
Jaehoon Chung

2012/3/27 Jaehoon Chung <jh80.chung@samsung.com>:
> mmc_set_clock is set to the hard-coding.
> But i think good that use the tran_speed value.
>
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
>  drivers/mmc/mmc.c |   13 +++++++------
>  1 files changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index e035012..cba96cf 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -1124,9 +1124,9 @@ int mmc_startup(struct mmc *mmc)
>                }
>
>                if (mmc->card_caps & MMC_MODE_HS)
> -                       mmc_set_clock(mmc, 50000000);
> +                       mmc->tran_speed = 50000000;
>                else
> -                       mmc_set_clock(mmc, 25000000);
> +                       mmc->tran_speed = 25000000;
>        } else {
>                for (width = EXT_CSD_BUS_WIDTH_8; width >= 0; width--) {
>                        /* Set the card to use 4 bit*/
> @@ -1161,13 +1161,14 @@ int mmc_startup(struct mmc *mmc)
>
>                if (mmc->card_caps & MMC_MODE_HS) {
>                        if (mmc->card_caps & MMC_MODE_HS_52MHz)
> -                               mmc_set_clock(mmc, 52000000);
> +                               mmc->tran_speed = 52000000;
>                        else
> -                               mmc_set_clock(mmc, 26000000);
> -               } else
> -                       mmc_set_clock(mmc, 20000000);
> +                               mmc->tran_speed = 26000000;
> +               }
>        }
>
> +       mmc_set_clock(mmc, mmc->tran_speed);
> +
>        /* fill in device description */
>        mmc->block_dev.lun = 0;
>        mmc->block_dev.type = 0;
> --
> 1.7.4.1
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Andy Fleming May 7, 2012, 9:50 p.m. UTC | #2
On Mon, Apr 2, 2012 at 1:31 PM, Jae hoon Chung <jh80.chung@gmail.com> wrote:

>>                if (mmc->card_caps & MMC_MODE_HS) {
>>                        if (mmc->card_caps & MMC_MODE_HS_52MHz)
>> -                               mmc_set_clock(mmc, 52000000);
>> +                               mmc->tran_speed = 52000000;
>>                        else
>> -                               mmc_set_clock(mmc, 26000000);
>> -               } else
>> -                       mmc_set_clock(mmc, 20000000);
>> +                               mmc->tran_speed = 26000000;
>> +               }


Why did you remove the outer else clause, here (the one that set the
speed to 20000000)?
Jaehoon Chung May 8, 2012, 2:51 a.m. UTC | #3
Hi Andy.

On 05/08/2012 06:50 AM, Andy Fleming wrote:

> On Mon, Apr 2, 2012 at 1:31 PM, Jae hoon Chung <jh80.chung@gmail.com> wrote:
> 
>>>                if (mmc->card_caps & MMC_MODE_HS) {
>>>                        if (mmc->card_caps & MMC_MODE_HS_52MHz)
>>> -                               mmc_set_clock(mmc, 52000000);
>>> +                               mmc->tran_speed = 52000000;
>>>                        else
>>> -                               mmc_set_clock(mmc, 26000000);
>>> -               } else
>>> -                       mmc_set_clock(mmc, 20000000);
>>> +                               mmc->tran_speed = 26000000;
>>> +               }
> 
> 
> Why did you remove the outer else clause, here (the one that set the
> speed to 20000000)?
> 

If card->caps didn't set MMC_MODE_HS, then it's set to mmc->tran_speed.
That value is assigned from freq * mult.

I think that is reasonable..if set to 20000000 here, then why need freq & mult?

Best Regards,
Jaehoon Chung
Andy Fleming May 8, 2012, 9:39 p.m. UTC | #4
On Mon, May 7, 2012 at 9:51 PM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> Hi Andy.
>
> On 05/08/2012 06:50 AM, Andy Fleming wrote:
>
>> On Mon, Apr 2, 2012 at 1:31 PM, Jae hoon Chung <jh80.chung@gmail.com> wrote:
>>
>>>>                if (mmc->card_caps & MMC_MODE_HS) {
>>>>                        if (mmc->card_caps & MMC_MODE_HS_52MHz)
>>>> -                               mmc_set_clock(mmc, 52000000);
>>>> +                               mmc->tran_speed = 52000000;
>>>>                        else
>>>> -                               mmc_set_clock(mmc, 26000000);
>>>> -               } else
>>>> -                       mmc_set_clock(mmc, 20000000);
>>>> +                               mmc->tran_speed = 26000000;
>>>> +               }
>>
>>
>> Why did you remove the outer else clause, here (the one that set the
>> speed to 20000000)?
>>
>
> If card->caps didn't set MMC_MODE_HS, then it's set to mmc->tran_speed.
> That value is assigned from freq * mult.
>
> I think that is reasonable..if set to 20000000 here, then why need freq & mult?

Ok, that's probably fine, then.
diff mbox

Patch

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index e035012..cba96cf 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1124,9 +1124,9 @@  int mmc_startup(struct mmc *mmc)
 		}
 
 		if (mmc->card_caps & MMC_MODE_HS)
-			mmc_set_clock(mmc, 50000000);
+			mmc->tran_speed = 50000000;
 		else
-			mmc_set_clock(mmc, 25000000);
+			mmc->tran_speed = 25000000;
 	} else {
 		for (width = EXT_CSD_BUS_WIDTH_8; width >= 0; width--) {
 			/* Set the card to use 4 bit*/
@@ -1161,13 +1161,14 @@  int mmc_startup(struct mmc *mmc)
 
 		if (mmc->card_caps & MMC_MODE_HS) {
 			if (mmc->card_caps & MMC_MODE_HS_52MHz)
-				mmc_set_clock(mmc, 52000000);
+				mmc->tran_speed = 52000000;
 			else
-				mmc_set_clock(mmc, 26000000);
-		} else
-			mmc_set_clock(mmc, 20000000);
+				mmc->tran_speed = 26000000;
+		}
 	}
 
+	mmc_set_clock(mmc, mmc->tran_speed);
+
 	/* fill in device description */
 	mmc->block_dev.lun = 0;
 	mmc->block_dev.type = 0;