Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / base / power / main.c
index 15e6a8f..0d2e101 100644 (file)
@@ -30,23 +30,6 @@ LIST_HEAD(dpm_off_irq);
 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.
@@ -62,10 +45,8 @@ static inline void device_pm_release(struct device * dev)
 
 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);
 
@@ -75,7 +56,6 @@ int device_pm_add(struct device * dev)
 
        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);
@@ -91,7 +71,7 @@ void device_pm_remove(struct device * dev)
                 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);
 }