diff options
Diffstat (limited to 'drivers/base/power/main.c')
-rw-r--r-- | drivers/base/power/main.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index bb5c8cb64174..a90480baa850 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c | |||
@@ -63,7 +63,7 @@ static int async_error; | |||
63 | */ | 63 | */ |
64 | void device_pm_init(struct device *dev) | 64 | void device_pm_init(struct device *dev) |
65 | { | 65 | { |
66 | dev->power.status = DPM_ON; | 66 | dev->power.in_suspend = false; |
67 | init_completion(&dev->power.completion); | 67 | init_completion(&dev->power.completion); |
68 | complete_all(&dev->power.completion); | 68 | complete_all(&dev->power.completion); |
69 | dev->power.wakeup = NULL; | 69 | dev->power.wakeup = NULL; |
@@ -98,7 +98,7 @@ void device_pm_add(struct device *dev) | |||
98 | kobject_name(&dev->kobj)); | 98 | kobject_name(&dev->kobj)); |
99 | mutex_lock(&dpm_list_mtx); | 99 | mutex_lock(&dpm_list_mtx); |
100 | if (dev->parent) { | 100 | if (dev->parent) { |
101 | if (dev->parent->power.status >= DPM_SUSPENDING) | 101 | if (dev->parent->power.in_suspend) |
102 | dev_warn(dev, "parent %s should not be sleeping\n", | 102 | dev_warn(dev, "parent %s should not be sleeping\n", |
103 | dev_name(dev->parent)); | 103 | dev_name(dev->parent)); |
104 | } else if (transition_started) { | 104 | } else if (transition_started) { |
@@ -488,7 +488,6 @@ void dpm_resume_noirq(pm_message_t state) | |||
488 | int error; | 488 | int error; |
489 | 489 | ||
490 | get_device(dev); | 490 | get_device(dev); |
491 | dev->power.status = DPM_OFF; | ||
492 | list_move_tail(&dev->power.entry, &dpm_suspended_list); | 491 | list_move_tail(&dev->power.entry, &dpm_suspended_list); |
493 | mutex_unlock(&dpm_list_mtx); | 492 | mutex_unlock(&dpm_list_mtx); |
494 | 493 | ||
@@ -541,7 +540,7 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) | |||
541 | dpm_wait(dev->parent, async); | 540 | dpm_wait(dev->parent, async); |
542 | device_lock(dev); | 541 | device_lock(dev); |
543 | 542 | ||
544 | dev->power.status = DPM_RESUMING; | 543 | dev->power.in_suspend = false; |
545 | 544 | ||
546 | if (dev->bus) { | 545 | if (dev->bus) { |
547 | if (dev->bus->pm) { | 546 | if (dev->bus->pm) { |
@@ -690,7 +689,7 @@ static void dpm_complete(pm_message_t state) | |||
690 | struct device *dev = to_device(dpm_prepared_list.prev); | 689 | struct device *dev = to_device(dpm_prepared_list.prev); |
691 | 690 | ||
692 | get_device(dev); | 691 | get_device(dev); |
693 | dev->power.status = DPM_ON; | 692 | dev->power.in_suspend = false; |
694 | list_move(&dev->power.entry, &list); | 693 | list_move(&dev->power.entry, &list); |
695 | mutex_unlock(&dpm_list_mtx); | 694 | mutex_unlock(&dpm_list_mtx); |
696 | 695 | ||
@@ -806,7 +805,6 @@ int dpm_suspend_noirq(pm_message_t state) | |||
806 | put_device(dev); | 805 | put_device(dev); |
807 | break; | 806 | break; |
808 | } | 807 | } |
809 | dev->power.status = DPM_OFF_IRQ; | ||
810 | if (!list_empty(&dev->power.entry)) | 808 | if (!list_empty(&dev->power.entry)) |
811 | list_move(&dev->power.entry, &dpm_noirq_list); | 809 | list_move(&dev->power.entry, &dpm_noirq_list); |
812 | put_device(dev); | 810 | put_device(dev); |
@@ -894,9 +892,6 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) | |||
894 | } | 892 | } |
895 | } | 893 | } |
896 | 894 | ||
897 | if (!error) | ||
898 | dev->power.status = DPM_OFF; | ||
899 | |||
900 | End: | 895 | End: |
901 | device_unlock(dev); | 896 | device_unlock(dev); |
902 | complete_all(&dev->power.completion); | 897 | complete_all(&dev->power.completion); |
@@ -1030,7 +1025,6 @@ static int dpm_prepare(pm_message_t state) | |||
1030 | struct device *dev = to_device(dpm_list.next); | 1025 | struct device *dev = to_device(dpm_list.next); |
1031 | 1026 | ||
1032 | get_device(dev); | 1027 | get_device(dev); |
1033 | dev->power.status = DPM_PREPARING; | ||
1034 | mutex_unlock(&dpm_list_mtx); | 1028 | mutex_unlock(&dpm_list_mtx); |
1035 | 1029 | ||
1036 | pm_runtime_get_noresume(dev); | 1030 | pm_runtime_get_noresume(dev); |
@@ -1046,7 +1040,6 @@ static int dpm_prepare(pm_message_t state) | |||
1046 | 1040 | ||
1047 | mutex_lock(&dpm_list_mtx); | 1041 | mutex_lock(&dpm_list_mtx); |
1048 | if (error) { | 1042 | if (error) { |
1049 | dev->power.status = DPM_ON; | ||
1050 | if (error == -EAGAIN) { | 1043 | if (error == -EAGAIN) { |
1051 | put_device(dev); | 1044 | put_device(dev); |
1052 | error = 0; | 1045 | error = 0; |
@@ -1058,7 +1051,7 @@ static int dpm_prepare(pm_message_t state) | |||
1058 | put_device(dev); | 1051 | put_device(dev); |
1059 | break; | 1052 | break; |
1060 | } | 1053 | } |
1061 | dev->power.status = DPM_SUSPENDING; | 1054 | dev->power.in_suspend = true; |
1062 | if (!list_empty(&dev->power.entry)) | 1055 | if (!list_empty(&dev->power.entry)) |
1063 | list_move_tail(&dev->power.entry, &dpm_prepared_list); | 1056 | list_move_tail(&dev->power.entry, &dpm_prepared_list); |
1064 | put_device(dev); | 1057 | put_device(dev); |