Subject: Fwd: Re: [PATCH] mmc: at91: fix bus speed

From: [email-masked] (Prchal Jiří)
Date: Thu, 21 Jun 2012 09:56:25 +0200

Hello Ludovic,
I have tried it with atmel-mci driver. It took me little time to change setting of my board.
It seems to try clock down to 200kHz:
[    5.860000] mmc0: mmc_rescan_try_freq: trying to init card at 400000 Hz
[    5.920000] mmc0: mmc_rescan_try_freq: trying to init card at 300000 Hz
[    5.980000] mmc0: mmc_rescan_try_freq: trying to init card at 205079 Hz
As I see in driver source, there is better clkdiv overrun work around.
But I don't find min and max freq definitions in this driver, it is probably somewhere else.
So this would be OK.

Dne 20.6.2012 11:13, ludovic.desroches napsal(a):
> Add mmc mailing list.
>
>
> -------- Message original --------
> Sujet: Re: [PATCH] mmc: at91: fix bus speed
> Date : Wed, 20 Jun 2012 10:49:08 +0200
> De : ludovic.desroches <[email-masked]>
> Pour : Prchal Ji?? <[email-masked]>
> Copie ? : <[email-masked]>, <[email-masked]>
>
> Hello Jiri,
>
> Thanks for your patch but at91-mci is now deprecated and should be
> removed in 3.7.
> On one hand I don't know if we have to continue to take patches for this
> driver, on the other hand it's a fix for some SD cards.
>
> Le 06/20/2012 10:15 AM, Prchal Ji?? a ?crit :
>> This patch change minimum and maximum clock speed because some noname
>> cards doesn't work during init even at 375kHz and new cards (SD v. 3.0)
>> can run at 50 or 100 MHz.
>> Also aded clkdiv register overrun fix when setting low speeds.
>>
>> Signed-off-by: Jiri Prchal <[email-masked]>
>> ---
>>
>> --- linux/linux-3.5-rc3/drivers/mmc/host/at91_mci.c.orig 2012-06-17
>> 02:25:17.000000000 +0200
>> +++ linux/linux-3.5-rc3/drivers/mmc/host/at91_mci.c 2012-06-18
>> 11:01:49.751415984 +0200
>> @@ -724,6 +724,10 @@ static void at91_mci_set_ios(struct mmc_
>> else
>> clkdiv = (at91_master_clock / ios->clock) / 2;
>>
>> + /* set maximum divider */
>> + if (clkdiv > 255)
>> + clkdiv = 255;
>> +
>> pr_debug("clkdiv = %d. mcck = %ld\n", clkdiv,
>> at91_master_clock / (2 * (clkdiv + 1)));
>> }
>> @@ -948,8 +952,8 @@ static int __init at91_mci_probe(struct
>> }
>>
>> mmc->ops = &at91_mci_ops;
>> - mmc->f_min = 375000;
>> - mmc->f_max = 25000000;
>> + mmc->f_min = 200000; /* not all cards can run at 375kHz */
>
> I will check on atmel-mci if we have to decrease f_min.
>
>> + mmc->f_max = 100000000; /* new cards can run at 100MHz */
>
> MCI operates at a rate of up to master clock divided by two so you can't
> reach 100MHz as max frequency since it means that our master clock is at
> 200MHz that is not the case. I would say 50MHz is the maximum frequency
> for product compatible with at91-mci.
>
>> mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
>> mmc->caps = 0;
>>
>>
>>
>
> Regards
>
> Ludovic
>
>
>
>
>