Re: [PATCH] mmc: mmci: Add new VE MMCI variant

Ulf Hansson
2013-01-24T20:11:51Z

On 24 January 2013 18:12, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Thu, Jan 24, 2013 at 1:59 PM, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
>
>> The clock can be masked independently too via the clock enable bit in
>> the clock register.
>>
>> However, it's interesting to note: experiments that Linus did with having
>> the primecell automatically masking the clock to the card did not prove
>> worthwhile (see the comment in the code). We seem to be heading towards
>> doing this in software and people suggesting it is worthwhile... Why is
>> this?
>>
>> If the hardware can gate the clock and it doesn't produce the power
>> savings we expect, how does then gating the clock via software then
>> become worthwhile? It doesn't make sense.
>
> We're talking about this I guess:
> http://marc.info/?l=linux-arm-kernel&m=123790711306850&w=4
>
> In these experiments I actually gated not only the
> enable bit (bit 8) to the MCI clock, but also the pclk to
> the PrimeCell itself as well. This was due to the U300
> clock framework doing that behind the scenes on
> clk_disable(host->clk);
>
> And the reason the clock framework was doing that
> was that the U300 had the block clock and the card
> clock wired to the same clock tap ...
> The equivalent patch today would also call
> amba_pclk_disable() when the card was inactive.
>
> Thus we also got rid of all the switching leaks in the PL180
> logic. (Containing two big state machines for example.)
>
> It was an interesting comparison to just enable PwrSave
> (bit 9) instead, and disable the other clock logic.
>
> It turned out that this saving was significantly bigger when
> gating the entire PrimeCell than the savings for just gating
> the clock out to the card itself with bit 9.
>
> But at this time I didn't have a card in the slot, so as to
> eliminate the power consumed in the card (assuming
> this would drown the overall current consumption).
>
> So I have second thoughts about this. The experiment
> was not testing the PwrSave bit with a card inserted, this
> is the wrong thing to do. To determine if that bit is a good
> thing to turn on, it needs to be tested with a card in the
> slot.
>
> The only really useful information is that the switching
> logic inside the PL180 synthesized IP-core consumes
> circa 200uA, so it could be useful to gate it at times.

So in the runtime_pm callbacks, it you don't just want to do normal
clk gating/ungating with the clock API, which is done right now. You
also would like to actually gate the clock internally by using
clock/power register. Does that make sense?

>
> Anyone wants to re-do the measurements?
>
> Yours,
> Linus Walleij

Kind regards
Ulf Hansson