DECLARE_MUTEX(dpm_sem);
 DECLARE_MUTEX(dpm_list_sem);
 
-/*
- * PM Reference Counting.
- */
-
-static inline void device_pm_hold(struct device * dev)
-{
-       if (dev)
-               atomic_inc(&dev->power.pm_users);
-}
-
-static inline void device_pm_release(struct device * dev)
-{
-       if (dev)
-               atomic_dec(&dev->power.pm_users);
-}
-
-
 /**
  *     device_pm_set_parent - Specify power dependency.
  *     @dev:           Device who needs power.
 
 void device_pm_set_parent(struct device * dev, struct device * parent)
 {
-       struct device * old_parent = dev->power.pm_parent;
-       device_pm_release(old_parent);
-       dev->power.pm_parent = parent;
-       device_pm_hold(parent);
+       put_device(dev->power.pm_parent);
+       dev->power.pm_parent = get_device(parent);
 }
 EXPORT_SYMBOL_GPL(device_pm_set_parent);
 
 
        pr_debug("PM: Adding info for %s:%s\n",
                 dev->bus ? dev->bus->name : "No Bus", dev->kobj.name);
-       atomic_set(&dev->power.pm_users, 0);
        down(&dpm_list_sem);
        list_add_tail(&dev->power.entry, &dpm_active);
        device_pm_set_parent(dev, dev->parent);
                 dev->bus ? dev->bus->name : "No Bus", dev->kobj.name);
        down(&dpm_list_sem);
        dpm_sysfs_remove(dev);
-       device_pm_release(dev->power.pm_parent);
+       put_device(dev->power.pm_parent);
        list_del_init(&dev->power.entry);
        up(&dpm_list_sem);
 }