{
        struct mmc_driver *drv = to_mmc_driver(dev->driver);
        struct mmc_card *card = mmc_dev_to_card(dev);
-       int ret = 0;
+       struct mmc_host *host = card->host;
+       int ret;
 
-       if (dev->driver && drv->suspend)
+       if (dev->driver && drv->suspend) {
                ret = drv->suspend(card);
+               if (ret)
+                       return ret;
+       }
+
+       ret = host->bus_ops->suspend(host);
        return ret;
 }
 
 {
        struct mmc_driver *drv = to_mmc_driver(dev->driver);
        struct mmc_card *card = mmc_dev_to_card(dev);
-       int ret = 0;
+       struct mmc_host *host = card->host;
+       int ret;
+
+       ret = host->bus_ops->resume(host);
+       if (ret)
+               pr_warn("%s: error %d during resume (card was removed?)\n",
+                       mmc_hostname(host), ret);
 
        if (dev->driver && drv->resume)
                ret = drv->resume(card);
+
        return ret;
 }
 #endif
 
  */
 int mmc_suspend_host(struct mmc_host *host)
 {
-       int err = 0;
-
-       mmc_bus_get(host);
-       if (host->bus_ops && !host->bus_dead) {
-               if (host->bus_ops->suspend)
-                       err = host->bus_ops->suspend(host);
-       }
-       mmc_bus_put(host);
-
-       return err;
+       /* This function is deprecated */
+       return 0;
 }
 EXPORT_SYMBOL(mmc_suspend_host);
 
  */
 int mmc_resume_host(struct mmc_host *host)
 {
-       int err;
-
-       mmc_bus_get(host);
-       if (host->bus_ops && !host->bus_dead) {
-               BUG_ON(!host->bus_ops->resume);
-               err = host->bus_ops->resume(host);
-               if (err)
-                       pr_warning("%s: error %d during resume "
-                                           "(card was removed?)\n",
-                                           mmc_hostname(host), err);
-       }
-       mmc_bus_put(host);
-
+       /* This function is deprecated */
        return 0;
 }
 EXPORT_SYMBOL(mmc_resume_host);