From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>,
linux-mmc <linux-mmc@vger.kernel.org>,
Chris Ball <chris@printf.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
linux-arm-msm@vger.kernel.org,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH v3 12/13] mmc: mmci: add explicit clk control
Date: Tue, 27 May 2014 15:14:47 +0100 [thread overview]
Message-ID: <53849DD7.1070202@linaro.org> (raw)
In-Reply-To: <CAPDyKFqy+UW7QHhJfVCefeWTwTzpzLb2APwxQKhAdzM6Ex_ZrQ@mail.gmail.com>
On 27/05/14 15:07, Ulf Hansson wrote:
>>> Hmm. Looking a bit deeper into this, we have some additional related
>>> code to fixup. :-)
>>>
>>> In ->probe(), we do clk_set_rate(100MHz), if the mclk > 100MHz. That's
>>> due to the current variants don't support higher frequency than this.
>>> It seems like the Qcom variant may support up to 208MHz? Now, if
>>> that's the case, we need to add "f_max" to the struct variant_data to
>>> store this information, so we can respect different values while doing
>>> clk_set_rate() at ->probe().
>>>
>> Yes, qcom SOCs support more than 100Hhz clock.
>>
>> Probe and clk_set_rate/set_ios should respect this.
>>
>> On the other thought, Should probe actually care about clocks which are
>> explicitly controlled? It should not even attempt to set any frequency to
>> start with.
>
> The 100 MHz is related to constraints set by the specification of the
> IP block, not the MMC/SD/SDIO spec.
>
> Thus at ->probe() we must perform the clk_set_rate().
I agree its valid for controllers which have this constraints.
>
>> mmc-core would set the right frequency depending on the mmc
>> state-machine respecting f_min and f_max.
>> I think for qcom, probe should just check the if f_max and f_min are valid
>> and set them to defaults if any in the same lines as existing code.
>>
>>
>>> While updating mmc->f_max for host->variant->explicit_mclk_control, we
>>> shouldn't care about using the host->mclk as a limiter, instead, use
>>> min(mmc->f_max, host->variant->f_max) and fallback to fmax.
>>>
>> Yes, that's correct, mclk should not be used as limiter. Adding f_max to the
>> variant looks useful.
>>
>>
>>> Not sure how that will affect the logic. :-)
>>>
>>>>
>>>>
>>>>> Additionally, this makes me wonder about f_min. I haven't seen
>>>>> anywhere in this patch were that value is being set to proper value,
>>>>> right?
>>>>>
>>>>
>>>> f_min should be 400000 for qcom, I think with the default mclk frequency
>>>> and
>>>> a divider of 512 used for calculating the f_min is bringing down the
>>>> f_min
>>>> to lessthan 400Kz. Which is why its working fine.
>>>> I think the possibility of mclk default frequency being greater than
>>>> 208Mhz
>>>> is very less. so I could either leave it as it is Or force this to 400000
>>>> all the time for qcom chips.
>>>
>>>
>>> No, this seems like a wrong approach.
>>>
>>> I think you would like to do use the clk_round_rate() find out the
>>> lowest possible rate. Or just use a fixed fallback value somehow.
>>
>>
>> clk_round_rate(mclk, 0) might be more generic, instead of fixed fallback.
>> Let the mmc-core figure out what frequency would be best from its table
>> starting from f_min.
>
> Agree!
>
> clk_round_rate(mclk, 100KHz), might be better though - since that is
> actually the lowest request frequency whatsoever.
>
Perfect.
--srini
> Kind regards
> Ulf Hansson
>
next prev parent reply other threads:[~2014-05-27 14:14 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-23 12:49 [PATCH v3 00/13] Add Qualcomm SD Card Controller support srinivas.kandagatla
2014-05-23 12:50 ` [PATCH v3 01/13] mmc: mmci: use NSEC_PER_SEC macro srinivas.kandagatla
2014-05-23 12:50 ` [PATCH v3 02/13] mmc: mmci: convert register bits to use BIT() macro srinivas.kandagatla
2014-05-23 12:51 ` [PATCH v3 03/13] mmc: mmci: Add Qualcomm Id to amba id table srinivas.kandagatla
2014-05-26 9:10 ` Ulf Hansson
2014-05-26 17:00 ` Srinivas Kandagatla
2014-05-27 13:49 ` Srinivas Kandagatla
2014-05-23 12:51 ` [PATCH v3 04/13] mmc: mmci: Add Qcom datactrl register variant srinivas.kandagatla
2014-05-23 12:51 ` [PATCH v3 05/13] mmc: mmci: Add register read/write wrappers srinivas.kandagatla
2014-05-23 12:51 ` [PATCH v3 06/13] mmc: mmci: Qcomm: Add 3 clock cycle delay after register write srinivas.kandagatla
2014-05-26 9:34 ` Ulf Hansson
2014-05-26 17:04 ` Srinivas Kandagatla
2014-05-23 12:51 ` [PATCH v3 07/13] mmc: mmci: add ddrmode mask to variant data srinivas.kandagatla
2014-05-26 9:53 ` Ulf Hansson
2014-05-26 17:06 ` Srinivas Kandagatla
2014-05-23 12:52 ` [PATCH v3 08/13] mmc: mmci: add 8bit bus support in " srinivas.kandagatla
2014-05-26 10:07 ` Ulf Hansson
2014-05-28 7:27 ` Srinivas Kandagatla
2014-05-28 7:53 ` Linus Walleij
2014-05-23 12:52 ` [PATCH v3 09/13] mmc: mmci: add edge support to data and command out " srinivas.kandagatla
2014-05-23 12:52 ` [PATCH v3 10/13] mmc: mmci: add Qcom specifics of clk and datactrl registers srinivas.kandagatla
2014-05-26 13:05 ` Ulf Hansson
2014-05-26 21:38 ` Srinivas Kandagatla
2014-05-28 9:41 ` Srinivas Kandagatla
2014-05-28 10:03 ` Ulf Hansson
2014-05-23 12:52 ` [PATCH v3 11/13] mmc: mmci: Add support to data commands via variant structure srinivas.kandagatla
2014-05-23 12:52 ` [PATCH v3 12/13] mmc: mmci: add explicit clk control srinivas.kandagatla
2014-05-26 14:21 ` Ulf Hansson
2014-05-26 14:28 ` Ulf Hansson
2014-05-26 22:39 ` Srinivas Kandagatla
2014-05-27 9:32 ` Ulf Hansson
2014-05-27 12:43 ` Srinivas Kandagatla
2014-05-27 14:07 ` Ulf Hansson
2014-05-27 14:14 ` Srinivas Kandagatla [this message]
2014-05-28 8:02 ` Linus Walleij
2014-05-28 8:28 ` Srinivas Kandagatla
2014-05-28 10:17 ` Ulf Hansson
2014-05-23 12:53 ` [PATCH v3 13/13] mmc: mmci: Add Qcom specific pio_read function srinivas.kandagatla
2014-05-23 23:28 ` Stephen Boyd
2014-05-28 13:57 ` Srinivas Kandagatla
2014-05-29 7:43 ` Linus Walleij
2014-05-30 1:30 ` Stephen Boyd
2014-05-30 9:00 ` Linus Walleij
2014-05-26 14:34 ` Ulf Hansson
2014-05-26 17:10 ` Srinivas Kandagatla
2014-05-28 8:08 ` Linus Walleij
2014-05-28 8:51 ` Srinivas Kandagatla
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53849DD7.1070202@linaro.org \
--to=srinivas.kandagatla@linaro.org \
--cc=chris@printf.net \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.