>>+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

Reply via email to