Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 59096
b: refs/heads/master
c: 9cddad7
h: refs/heads/master
v: v3
  • Loading branch information
Rafael J. Wysocki authored and Greg Kroah-Hartman committed Jul 11, 2007
1 parent 7957400 commit 7cf3e0c
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 38 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 11048dcf333c414f237bb713c422e68f67b115a3
refs/heads/master: 9cddad77574313fcee36c5e60122718daa7c0361
30 changes: 4 additions & 26 deletions trunk/drivers/base/power/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,28 +33,7 @@ DEFINE_MUTEX(dpm_list_mtx);

int (*platform_enable_wakeup)(struct device *dev, int is_on);


/**
* device_pm_set_parent - Specify power dependency.
* @dev: Device who needs power.
* @parent: Device that supplies power.
*
* This function is used to manually describe a power-dependency
* relationship. It may be used to specify a transversal relationship
* (where the power supplier is not the physical (or electrical)
* ancestor of a specific device.
* The effect of this is that the supplier will not be powered down
* before the power dependent.
*/

void device_pm_set_parent(struct device * dev, struct device * parent)
{
put_device(dev->power.pm_parent);
dev->power.pm_parent = get_device(parent);
}
EXPORT_SYMBOL_GPL(device_pm_set_parent);

int device_pm_add(struct device * dev)
int device_pm_add(struct device *dev)
{
int error;

Expand All @@ -63,21 +42,20 @@ int device_pm_add(struct device * dev)
kobject_name(&dev->kobj));
mutex_lock(&dpm_list_mtx);
list_add_tail(&dev->power.entry, &dpm_active);
device_pm_set_parent(dev, dev->parent);
if ((error = dpm_sysfs_add(dev)))
error = dpm_sysfs_add(dev);
if (error)
list_del(&dev->power.entry);
mutex_unlock(&dpm_list_mtx);
return error;
}

void device_pm_remove(struct device * dev)
void device_pm_remove(struct device *dev)
{
pr_debug("PM: Removing info for %s:%s\n",
dev->bus ? dev->bus->name : "No Bus",
kobject_name(&dev->kobj));
mutex_lock(&dpm_list_mtx);
dpm_sysfs_remove(dev);
put_device(dev->power.pm_parent);
list_del_init(&dev->power.entry);
mutex_unlock(&dpm_list_mtx);
}
Expand Down
7 changes: 3 additions & 4 deletions trunk/drivers/base/power/resume.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,11 @@ int resume_device(struct device * dev)

down(&dev->sem);

if (dev->power.pm_parent
&& dev->power.pm_parent->power.power_state.event) {
if (dev->parent && dev->parent->power.power_state.event) {
dev_err(dev, "PM: resume from %d, parent %s still %d\n",
dev->power.power_state.event,
dev->power.pm_parent->bus_id,
dev->power.pm_parent->power.power_state.event);
dev->parent->bus_id,
dev->parent->power.power_state.event);
}

if (dev->bus && dev->bus->resume) {
Expand Down
7 changes: 3 additions & 4 deletions trunk/drivers/base/power/suspend.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,12 @@ int suspend_device(struct device * dev, pm_message_t state)
dev_dbg(dev, "PM: suspend %d-->%d\n",
dev->power.power_state.event, state.event);
}
if (dev->power.pm_parent
&& dev->power.pm_parent->power.power_state.event) {
if (dev->parent && dev->parent->power.power_state.event) {
dev_err(dev,
"PM: suspend %d->%d, parent %s already %d\n",
dev->power.power_state.event, state.event,
dev->power.pm_parent->bus_id,
dev->power.pm_parent->power.power_state.event);
dev->parent->bus_id,
dev->parent->power.power_state.event);
}

dev->power.prev_state = dev->power.power_state;
Expand Down
3 changes: 0 additions & 3 deletions trunk/include/linux/pm.h
Original file line number Diff line number Diff line change
Expand Up @@ -269,13 +269,10 @@ struct dev_pm_info {
unsigned should_wakeup:1;
pm_message_t prev_state;
void * saved_state;
struct device * pm_parent;
struct list_head entry;
#endif
};

extern void device_pm_set_parent(struct device * dev, struct device * parent);

extern int device_power_down(pm_message_t state);
extern void device_power_up(void);
extern void device_resume(void);
Expand Down

0 comments on commit 7cf3e0c

Please sign in to comment.