Re: [PATCH] sdhci: adjust sd 3.0 host controller spec clock divider

David Vrabel
2010-10-06T13:06:43Z

Chris Ball wrote:
> Hi David,
>
> On Thu, Sep 30, 2010 at 08:03:14PM -0700, Philip Rakity wrote:
>> From: Philip Rakity <prakity@marvell.com>
>> Date: Thu, 30 Sep 2010 15:34:24 -0700
>> Subject: [PATCH] sdhci: adjust sd 3.0 host controller spec clock divider
>>
>> The sd 3.0 host spec does not require the clock divider to be a power of 2.
>>
>> Signed-off-by: Philip Rakity <prakity@marvell.com>
>> ---
>> drivers/mmc/host/sdhci.c | 8 +++-----
>> 1 files changed, 3 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
>> index 96c7f60..73a94fe 100644
>> --- a/drivers/mmc/host/sdhci.c
>> +++ b/drivers/mmc/host/sdhci.c
>> @@ -1003,14 +1003,12 @@ static void sdhci_set_clock(struct sdhci_host *host, unsigned int clock)
>> goto out;
>>
>> if (host->version >= SDHCI_SPEC_300) {
>> - /* Version 3.00 divisors must be a multiple of 2. */
>> if (host->max_clk <= clock)
>> div = 1;
>> else {
>> - for (div = 2; div < SDHCI_MAX_DIV_SPEC_300; div += 2) {
>> - if ((host->max_clk / div) <= clock)
>> - break;
>> - }
>> + div = host->max_clk/clock;
>> + if (host->max_clk % clock)
>> + div++;
>> }
>> } else {
>> /* Version 2.00 divisors must be a power of 2. */
>> --
>
> Would you mind reviewing this, please? I don't have access to the 3.0
> spec.

NAK. The divisors for 3.00 controllers must be a multiple of two (the
register value N gives a divisor of 2N).

David
--
David Vrabel, Senior Software Engineer, Drivers
CSR, Churchill House, Cambridge Business Park, Tel: +44 (0)1223 692562
Cowley Road, Cambridge, CB4 0WZ http://www.csr.com/

Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom