*/
 void device_pm_init(struct device *dev)
 {
-       dev->power.status = DPM_ON;
+       dev->power.in_suspend = false;
        init_completion(&dev->power.completion);
        complete_all(&dev->power.completion);
        dev->power.wakeup = NULL;
                 kobject_name(&dev->kobj));
        mutex_lock(&dpm_list_mtx);
        if (dev->parent) {
-               if (dev->parent->power.status >= DPM_SUSPENDING)
+               if (dev->parent->power.in_suspend)
                        dev_warn(dev, "parent %s should not be sleeping\n",
                                 dev_name(dev->parent));
        } else if (transition_started) {
                int error;
 
                get_device(dev);
-               dev->power.status = DPM_OFF;
                list_move_tail(&dev->power.entry, &dpm_suspended_list);
                mutex_unlock(&dpm_list_mtx);
 
        dpm_wait(dev->parent, async);
        device_lock(dev);
 
-       dev->power.status = DPM_RESUMING;
+       dev->power.in_suspend = false;
 
        if (dev->bus) {
                if (dev->bus->pm) {
                struct device *dev = to_device(dpm_prepared_list.prev);
 
                get_device(dev);
-               dev->power.status = DPM_ON;
+               dev->power.in_suspend = false;
                list_move(&dev->power.entry, &list);
                mutex_unlock(&dpm_list_mtx);
 
                        put_device(dev);
                        break;
                }
-               dev->power.status = DPM_OFF_IRQ;
                if (!list_empty(&dev->power.entry))
                        list_move(&dev->power.entry, &dpm_noirq_list);
                put_device(dev);
                }
        }
 
-       if (!error)
-               dev->power.status = DPM_OFF;
-
  End:
        device_unlock(dev);
        complete_all(&dev->power.completion);
                struct device *dev = to_device(dpm_list.next);
 
                get_device(dev);
-               dev->power.status = DPM_PREPARING;
                mutex_unlock(&dpm_list_mtx);
 
                pm_runtime_get_noresume(dev);
 
                mutex_lock(&dpm_list_mtx);
                if (error) {
-                       dev->power.status = DPM_ON;
                        if (error == -EAGAIN) {
                                put_device(dev);
                                error = 0;
                        put_device(dev);
                        break;
                }
-               dev->power.status = DPM_SUSPENDING;
+               dev->power.in_suspend = true;
                if (!list_empty(&dev->power.entry))
                        list_move_tail(&dev->power.entry, &dpm_prepared_list);
                put_device(dev);
 
                 * Just re-enable it without affecting the endpoint toggles.
                 */
                usb_enable_interface(udev, intf, false);
-       } else if (!error && intf->dev.power.status == DPM_ON) {
+       } else if (!error && !intf->dev.power.in_suspend) {
                r = usb_set_interface(udev, intf->altsetting[0].
                                desc.bInterfaceNumber, 0);
                if (r < 0)
        }
 
        /* Try to rebind the interface */
-       if (intf->dev.power.status == DPM_ON) {
+       if (!intf->dev.power.in_suspend) {
                intf->needs_binding = 0;
                rc = device_attach(&intf->dev);
                if (rc < 0)
        if (intf->condition == USB_INTERFACE_UNBOUND) {
 
                /* Carry out a deferred switch to altsetting 0 */
-               if (intf->needs_altsetting0 &&
-                               intf->dev.power.status == DPM_ON) {
+               if (intf->needs_altsetting0 && !intf->dev.power.in_suspend) {
                        usb_set_interface(udev, intf->altsetting[0].
                                        desc.bInterfaceNumber, 0);
                        intf->needs_altsetting0 = 0;
 
 
 static inline void device_enable_async_suspend(struct device *dev)
 {
-       if (dev->power.status == DPM_ON)
+       if (!dev->power.in_suspend)
                dev->power.async_suspend = true;
 }
 
 static inline void device_disable_async_suspend(struct device *dev)
 {
-       if (dev->power.status == DPM_ON)
+       if (!dev->power.in_suspend)
                dev->power.async_suspend = false;
 }
 
 
 #define PMSG_AUTO_RESUME       ((struct pm_message) \
                                        { .event = PM_EVENT_AUTO_RESUME, })
 
-/**
- * Device power management states
- *
- * These state labels are used internally by the PM core to indicate the current
- * status of a device with respect to the PM core operations.
- *
- * DPM_ON              Device is regarded as operational.  Set this way
- *                     initially and when ->complete() is about to be called.
- *                     Also set when ->prepare() fails.
- *
- * DPM_PREPARING       Device is going to be prepared for a PM transition.  Set
- *                     when ->prepare() is about to be called.
- *
- * DPM_RESUMING                Device is going to be resumed.  Set when ->resume(),
- *                     ->thaw(), or ->restore() is about to be called.
- *
- * DPM_SUSPENDING      Device has been prepared for a power transition.  Set
- *                     when ->prepare() has just succeeded.
- *
- * DPM_OFF             Device is regarded as inactive.  Set immediately after
- *                     ->suspend(), ->freeze(), or ->poweroff() has succeeded.
- *                     Also set when ->resume()_noirq, ->thaw_noirq(), or
- *                     ->restore_noirq() is about to be called.
- *
- * DPM_OFF_IRQ         Device is in a "deep sleep".  Set immediately after
- *                     ->suspend_noirq(), ->freeze_noirq(), or
- *                     ->poweroff_noirq() has just succeeded.
- */
-
-enum dpm_state {
-       DPM_INVALID,
-       DPM_ON,
-       DPM_PREPARING,
-       DPM_RESUMING,
-       DPM_SUSPENDING,
-       DPM_OFF,
-       DPM_OFF_IRQ,
-};
-
 /**
  * Device run-time power management status.
  *
 struct dev_pm_info {
        pm_message_t            power_state;
        unsigned int            can_wakeup:1;
-       unsigned                async_suspend:1;
-       enum dpm_state          status;         /* Owned by the PM core */
+       unsigned int            async_suspend:1;
+       unsigned int            in_suspend:1;   /* Owned by the PM core */
        spinlock_t              lock;
 #ifdef CONFIG_PM_SLEEP
        struct list_head        entry;