Merge tag 'trace-seq-buf-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/roste...
[cascardo/linux.git] / drivers / mmc / core / bus.c
index 8a1f124..5ca562c 100644 (file)
@@ -25,8 +25,6 @@
 #include "sdio_cis.h"
 #include "bus.h"
 
-#define to_mmc_driver(d)       container_of(d, struct mmc_driver, drv)
-
 static ssize_t type_show(struct device *dev,
        struct device_attribute *attr, char *buf)
 {
@@ -106,33 +104,14 @@ mmc_bus_uevent(struct device *dev, struct kobj_uevent_env *env)
        return retval;
 }
 
-static int mmc_bus_probe(struct device *dev)
-{
-       struct mmc_driver *drv = to_mmc_driver(dev->driver);
-       struct mmc_card *card = mmc_dev_to_card(dev);
-
-       return drv->probe(card);
-}
-
-static int mmc_bus_remove(struct device *dev)
-{
-       struct mmc_driver *drv = to_mmc_driver(dev->driver);
-       struct mmc_card *card = mmc_dev_to_card(dev);
-
-       drv->remove(card);
-
-       return 0;
-}
-
 static void mmc_bus_shutdown(struct device *dev)
 {
-       struct mmc_driver *drv = to_mmc_driver(dev->driver);
        struct mmc_card *card = mmc_dev_to_card(dev);
        struct mmc_host *host = card->host;
        int ret;
 
-       if (dev->driver && drv->shutdown)
-               drv->shutdown(card);
+       if (dev->driver && dev->driver->shutdown)
+               dev->driver->shutdown(dev);
 
        if (host->bus_ops->shutdown) {
                ret = host->bus_ops->shutdown(host);
@@ -145,16 +124,13 @@ static void mmc_bus_shutdown(struct device *dev)
 #ifdef CONFIG_PM_SLEEP
 static int mmc_bus_suspend(struct device *dev)
 {
-       struct mmc_driver *drv = to_mmc_driver(dev->driver);
        struct mmc_card *card = mmc_dev_to_card(dev);
        struct mmc_host *host = card->host;
        int ret;
 
-       if (dev->driver && drv->suspend) {
-               ret = drv->suspend(card);
-               if (ret)
-                       return ret;
-       }
+       ret = pm_generic_suspend(dev);
+       if (ret)
+               return ret;
 
        ret = host->bus_ops->suspend(host);
        return ret;
@@ -162,7 +138,6 @@ static int mmc_bus_suspend(struct device *dev)
 
 static int mmc_bus_resume(struct device *dev)
 {
-       struct mmc_driver *drv = to_mmc_driver(dev->driver);
        struct mmc_card *card = mmc_dev_to_card(dev);
        struct mmc_host *host = card->host;
        int ret;
@@ -172,9 +147,7 @@ static int mmc_bus_resume(struct device *dev)
                pr_warn("%s: error %d during resume (card was removed?)\n",
                        mmc_hostname(host), ret);
 
-       if (dev->driver && drv->resume)
-               ret = drv->resume(card);
-
+       ret = pm_generic_resume(dev);
        return ret;
 }
 #endif
@@ -207,8 +180,6 @@ static struct bus_type mmc_bus_type = {
        .dev_groups     = mmc_dev_groups,
        .match          = mmc_bus_match,
        .uevent         = mmc_bus_uevent,
-       .probe          = mmc_bus_probe,
-       .remove         = mmc_bus_remove,
        .shutdown       = mmc_bus_shutdown,
        .pm             = &mmc_bus_pm_ops,
 };
@@ -227,24 +198,22 @@ void mmc_unregister_bus(void)
  *     mmc_register_driver - register a media driver
  *     @drv: MMC media driver
  */
-int mmc_register_driver(struct mmc_driver *drv)
+int mmc_register_driver(struct device_driver *drv)
 {
-       drv->drv.bus = &mmc_bus_type;
-       return driver_register(&drv->drv);
+       drv->bus = &mmc_bus_type;
+       return driver_register(drv);
 }
-
 EXPORT_SYMBOL(mmc_register_driver);
 
 /**
  *     mmc_unregister_driver - unregister a media driver
  *     @drv: MMC media driver
  */
-void mmc_unregister_driver(struct mmc_driver *drv)
+void mmc_unregister_driver(struct device_driver *drv)
 {
-       drv->drv.bus = &mmc_bus_type;
-       driver_unregister(&drv->drv);
+       drv->bus = &mmc_bus_type;
+       driver_unregister(drv);
 }
-
 EXPORT_SYMBOL(mmc_unregister_driver);
 
 static void mmc_release_card(struct device *dev)