s390/cio: remove pm support from css-bus driver
[sfrench/cifs-2.6.git] / drivers / s390 / cio / css.c
index cca1a7c4bb3366e73bf80e107f96931fe94a53d7..94c6470de6351317cb8f2c42743324c268ad8e82 100644 (file)
@@ -18,7 +18,6 @@
 #include <linux/errno.h>
 #include <linux/list.h>
 #include <linux/reboot.h>
-#include <linux/suspend.h>
 #include <linux/proc_fs.h>
 #include <linux/genalloc.h>
 #include <linux/dma-mapping.h>
@@ -1044,59 +1043,6 @@ static struct notifier_block css_reboot_notifier = {
        .notifier_call = css_reboot_event,
 };
 
-/*
- * Since the css devices are neither on a bus nor have a class
- * nor have a special device type, we cannot stop/restart channel
- * path measurements via the normal suspend/resume callbacks, but have
- * to use notifiers.
- */
-static int css_power_event(struct notifier_block *this, unsigned long event,
-                          void *ptr)
-{
-       struct channel_subsystem *css;
-       int ret;
-
-       switch (event) {
-       case PM_HIBERNATION_PREPARE:
-       case PM_SUSPEND_PREPARE:
-               ret = NOTIFY_DONE;
-               for_each_css(css) {
-                       mutex_lock(&css->mutex);
-                       if (!css->cm_enabled) {
-                               mutex_unlock(&css->mutex);
-                               continue;
-                       }
-                       ret = __chsc_do_secm(css, 0);
-                       ret = notifier_from_errno(ret);
-                       mutex_unlock(&css->mutex);
-               }
-               break;
-       case PM_POST_HIBERNATION:
-       case PM_POST_SUSPEND:
-               ret = NOTIFY_DONE;
-               for_each_css(css) {
-                       mutex_lock(&css->mutex);
-                       if (!css->cm_enabled) {
-                               mutex_unlock(&css->mutex);
-                               continue;
-                       }
-                       ret = __chsc_do_secm(css, 1);
-                       ret = notifier_from_errno(ret);
-                       mutex_unlock(&css->mutex);
-               }
-               /* search for subchannels, which appeared during hibernation */
-               css_schedule_reprobe();
-               break;
-       default:
-               ret = NOTIFY_DONE;
-       }
-       return ret;
-
-}
-static struct notifier_block css_power_notifier = {
-       .notifier_call = css_power_event,
-};
-
 #define  CIO_DMA_GFP (GFP_KERNEL | __GFP_ZERO)
 static struct gen_pool *cio_dma_pool;
 
@@ -1242,12 +1188,9 @@ static int __init css_bus_init(void)
        ret = register_reboot_notifier(&css_reboot_notifier);
        if (ret)
                goto out_unregister;
-       ret = register_pm_notifier(&css_power_notifier);
-       if (ret)
-               goto out_unregister_rn;
        ret = cio_dma_pool_init();
        if (ret)
-               goto out_unregister_pmn;
+               goto out_unregister_rn;
        airq_init();
        css_init_done = 1;
 
@@ -1255,8 +1198,6 @@ static int __init css_bus_init(void)
        isc_register(IO_SCH_ISC);
 
        return 0;
-out_unregister_pmn:
-       unregister_pm_notifier(&css_power_notifier);
 out_unregister_rn:
        unregister_reboot_notifier(&css_reboot_notifier);
 out_unregister:
@@ -1456,74 +1397,6 @@ static int css_uevent(struct device *dev, struct kobj_uevent_env *env)
        return ret;
 }
 
-static int css_pm_prepare(struct device *dev)
-{
-       struct subchannel *sch = to_subchannel(dev);
-       struct css_driver *drv;
-
-       if (mutex_is_locked(&sch->reg_mutex))
-               return -EAGAIN;
-       if (!sch->dev.driver)
-               return 0;
-       drv = to_cssdriver(sch->dev.driver);
-       /* Notify drivers that they may not register children. */
-       return drv->prepare ? drv->prepare(sch) : 0;
-}
-
-static void css_pm_complete(struct device *dev)
-{
-       struct subchannel *sch = to_subchannel(dev);
-       struct css_driver *drv;
-
-       if (!sch->dev.driver)
-               return;
-       drv = to_cssdriver(sch->dev.driver);
-       if (drv->complete)
-               drv->complete(sch);
-}
-
-static int css_pm_freeze(struct device *dev)
-{
-       struct subchannel *sch = to_subchannel(dev);
-       struct css_driver *drv;
-
-       if (!sch->dev.driver)
-               return 0;
-       drv = to_cssdriver(sch->dev.driver);
-       return drv->freeze ? drv->freeze(sch) : 0;
-}
-
-static int css_pm_thaw(struct device *dev)
-{
-       struct subchannel *sch = to_subchannel(dev);
-       struct css_driver *drv;
-
-       if (!sch->dev.driver)
-               return 0;
-       drv = to_cssdriver(sch->dev.driver);
-       return drv->thaw ? drv->thaw(sch) : 0;
-}
-
-static int css_pm_restore(struct device *dev)
-{
-       struct subchannel *sch = to_subchannel(dev);
-       struct css_driver *drv;
-
-       css_update_ssd_info(sch);
-       if (!sch->dev.driver)
-               return 0;
-       drv = to_cssdriver(sch->dev.driver);
-       return drv->restore ? drv->restore(sch) : 0;
-}
-
-static const struct dev_pm_ops css_pm_ops = {
-       .prepare = css_pm_prepare,
-       .complete = css_pm_complete,
-       .freeze = css_pm_freeze,
-       .thaw = css_pm_thaw,
-       .restore = css_pm_restore,
-};
-
 static struct bus_type css_bus_type = {
        .name     = "css",
        .match    = css_bus_match,
@@ -1531,7 +1404,6 @@ static struct bus_type css_bus_type = {
        .remove   = css_remove,
        .shutdown = css_shutdown,
        .uevent   = css_uevent,
-       .pm = &css_pm_ops,
 };
 
 /**