Re: [PATCH] mmc: mmci: Gate the clock in runtime suspend to save power

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 11, 2012 at 3:52 PM, Russell King - ARM Linux
<linux@xxxxxxxxxxxxxxxx> wrote:
> On Tue, Dec 11, 2012 at 03:17:54PM +0100, Ulf Hansson wrote:
>> From: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
>>
>> The amba bus is already performing same actions but for the apb_pclk.
>> So here we just make sure the clock to card is gated as well to save
>> more power. At runtime resume we will thus restore the clock again.
>
> And how exactly do you ensure the requirement that a certain number of
> clocks is supplied to the card after the last command before you cut
> the clock?

Oh, that's gonna be a problem.

So I can see a quite straight-forward way to do this actually:

1) Turn on MMC_CLKGATE for this driver (select from Kconfig)
which means that the ios will be called with f=0 whenever
the card is unused, taking into account the required number
of clocks to the card.

2) Implement handling of f=0 from the ios in the ios callback.
Then clk_disable(host->clk). I did a hack at this some months
back but never got around to finish it, sorry for not doing
that even though this clock gating was invented for the MMCI
in the first place :-(

3) In the suspend() callback, sleep until the clock indicates
that the card is declocked with something like:
while (clk_is_enabled(host->clk)) { sleep(1) }
However the clk framework does not have clk_is_enabled()
so you'd either have to add that or use a local atomic
variable host_clk_enabled set in (2).

Should work, I think?

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux