[PATCH] one less word in struct device
authorDavid Brownell <david-b@pacbell.net>
Fri, 23 Sep 2005 05:30:48 +0000 (22:30 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 28 Oct 2005 23:47:39 +0000 (16:47 -0700)
This saves a word from "struct device" ... there's a refcounting mechanism
stub that's rather ineffective (the values are never even tested!), which
can safely be deleted.  With this patch it uses normal device refcounting,
so any potential users of the pm_parent mechanism will be more correct.
(That mechanism is actually unusable for now though; it does nothing.)

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
 drivers/base/power/main.c |   26 +++-----------------------
 include/linux/pm.h        |    1 -
 2 files changed, 3 insertions(+), 24 deletions(-)

drivers/base/power/main.c
include/linux/pm.h

index 15e6a8f951f1dbe1c017980174c688a57e0b37b9..0d2e101e4f158c60b88f66db966d5047b2dc05ed 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);
 }
index 7897cf500c51c3c5d1c6d1284eac9e1a061b4f09..83bae1cbe55b9a6857853c25af7a46766d40f2e6 100644 (file)
@@ -224,7 +224,6 @@ struct dev_pm_info {
        unsigned                should_wakeup:1;
        pm_message_t            prev_state;
        void                    * saved_state;
-       atomic_t                pm_users;
        struct device           * pm_parent;
        struct list_head        entry;
 #endif