On 11 April 2013 10:31, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote: > On 08/04/13 14:44, Ulf Hansson wrote: >> From: Ulf Hansson <ulf.hansson@xxxxxxxxxx> >> >> Once the mmc blkdevice is being probed, runtime pm will be enabled. >> By using runtime autosuspend, the power save operations can be done >> when request inactivity occurs for a certain time. Right now the >> selected timeout value is set to 3 s. >> >> Moreover, when the blk device is being suspended, we make sure the device >> will be runtime resumed. The reason for doing this is that we want the >> host suspend sequence to be unaware of any runtime power save operations, >> so it can just handle the suspend as the device is fully powered from a >> runtime perspective. >> >> This patch is preparing to make it possible to move BKOPS handling into >> the runtime callbacks for the mmc bus_ops. Thus IDLE BKOPS can be >> accomplished. >> >> Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> >> Acked-by: Maya Erez <merez@xxxxxxxxxxxxxx> >> Acked-by: Arnd Bergmann <arnd@xxxxxxxx> >> Acked-by: Kevin Liu <kliu5@xxxxxxxxxxx> >> --- >> drivers/mmc/card/block.c | 28 ++++++++++++++++++++++++++-- >> 1 file changed, 26 insertions(+), 2 deletions(-) >> > > There are debugfs uses of the card also (e.g.mmc_dbg_card_status_get) > that will need get/put added. In the end it all depends on what kind of operations you decide to do in the runtime_supend|resume callbacks. Since the callbacks is not yet implemented for sd and mmc, this is not required as of now. Nevertheless a most valid point that needs to be considered, while implementing the callbacks. Thanks for pointing this out. > > There might be others. Please check. mmc_rescan needs to be considered at card removal and at resume. But, again this does not need to be handled as of now. > > It might be worth adding helpers e.g. mmc_claim_card()/mmc_release_card > so that it is easy to see the places that the host is claimed but runtime pm > is not used. I am not sure we gain more visibility adding helpers at this initial step. We already have three scenarios for get/claim. 1. mmc_claim_host and pm_runtime_get is done in conjuction. 2. only mmc_claim_host. 3. only pm_runtime_get. For put, we have a similar situation, and we don't even use the same runtime put API for all cases. I see your point, it could very well be wanted to add these helpers if we see that the callbacks force the pm_runtime API to be used from several more places. > > void mmc_claim_card(card) > { > pm_runtime_get_sync(&card->dev); > mmc_claim_host(card->host); > } > > void mmc_release_card(card) > { > mmc_release_host(card->host); > pm_runtime_mark_last_busy(&card->dev); > pm_runtime_put_autosuspend(&card->dev); > } > > > Kind regards Ulf Hansson -- 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