>>+static int mmc_runtime_suspend(struct device *dev)
>+{
>+ int status = 0;
>+ struct mmc_card *card = dev_to_mmc_card(dev);
>+
>+ mmc_power_save_host(card->host);
>+
>+ return status;
>+}
It seems the power_save callback is not implemented (Null pointer) yet for both
mmc and sdio. Does it mean that the power_save callback will be implemented in
future or just don't need at all? Thanks.
>+static int mmc_runtime_resume(struct device *dev)
>+{
>+ int status = 0;
>+ struct mmc_card *card = dev_to_mmc_card(dev);
>+
>+ mmc_power_restore_host(card->host);
>+
>+ return status;
>+}
>+
>+static int mmc_runtime_idle(struct device *dev)
>+{
>+ struct mmc_card *card = dev_to_mmc_card(dev);
>+
>+ return pm_runtime_suspend(dev);
>+}
>+
>+static const struct dev_pm_ops mmc_bus_pm_ops = {
>+ .runtime_suspend = mmc_runtime_suspend,
>+ .runtime_resume = mmc_runtime_resume,
>+ .runtime_idle = mmc_runtime_idle,
>+};
>+
> static struct bus_type mmc_bus_type = {
> .name = "mmc",
> .dev_attrs = mmc_dev_attrs,
>@@ -146,6 +180,7 @@ static struct bus_type mmc_bus_type = {
> .remove = mmc_bus_remove,
> .suspend = mmc_bus_suspend,
> .resume = mmc_bus_resume,
>+ .pm = &mmc_bus_pm_ops,
> };
>
I think this is a good example to implement runtime PM support for mmc driver.
But seems it doesn't provide a runtime PM example on host controller driver
side. To my understanding, once the functions (mmc card or sdio devices) and
mmc/sdio bus enter into rumtime suspend, it should then make the host
controller enter into runtime suspend, too. Any ideas on how to achieve this?
Thanks.
Best Regards,
Yunpeng Gao
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html