diff options
Diffstat (limited to 'drivers/base/power/runtime.c')
-rw-r--r-- | drivers/base/power/runtime.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index a80dbf08a99c..977db40378b0 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c | |||
@@ -64,7 +64,7 @@ static int rpm_suspend(struct device *dev, int rpmflags); | |||
64 | * runtime_status field is updated, to account the time in the old state | 64 | * runtime_status field is updated, to account the time in the old state |
65 | * correctly. | 65 | * correctly. |
66 | */ | 66 | */ |
67 | void update_pm_runtime_accounting(struct device *dev) | 67 | static void update_pm_runtime_accounting(struct device *dev) |
68 | { | 68 | { |
69 | u64 now, last, delta; | 69 | u64 now, last, delta; |
70 | 70 | ||
@@ -98,7 +98,7 @@ static void __update_runtime_status(struct device *dev, enum rpm_status status) | |||
98 | dev->power.runtime_status = status; | 98 | dev->power.runtime_status = status; |
99 | } | 99 | } |
100 | 100 | ||
101 | u64 pm_runtime_suspended_time(struct device *dev) | 101 | static u64 rpm_get_accounted_time(struct device *dev, bool suspended) |
102 | { | 102 | { |
103 | u64 time; | 103 | u64 time; |
104 | unsigned long flags; | 104 | unsigned long flags; |
@@ -106,12 +106,22 @@ u64 pm_runtime_suspended_time(struct device *dev) | |||
106 | spin_lock_irqsave(&dev->power.lock, flags); | 106 | spin_lock_irqsave(&dev->power.lock, flags); |
107 | 107 | ||
108 | update_pm_runtime_accounting(dev); | 108 | update_pm_runtime_accounting(dev); |
109 | time = dev->power.suspended_time; | 109 | time = suspended ? dev->power.suspended_time : dev->power.active_time; |
110 | 110 | ||
111 | spin_unlock_irqrestore(&dev->power.lock, flags); | 111 | spin_unlock_irqrestore(&dev->power.lock, flags); |
112 | 112 | ||
113 | return time; | 113 | return time; |
114 | } | 114 | } |
115 | |||
116 | u64 pm_runtime_active_time(struct device *dev) | ||
117 | { | ||
118 | return rpm_get_accounted_time(dev, false); | ||
119 | } | ||
120 | |||
121 | u64 pm_runtime_suspended_time(struct device *dev) | ||
122 | { | ||
123 | return rpm_get_accounted_time(dev, true); | ||
124 | } | ||
115 | EXPORT_SYMBOL_GPL(pm_runtime_suspended_time); | 125 | EXPORT_SYMBOL_GPL(pm_runtime_suspended_time); |
116 | 126 | ||
117 | /** | 127 | /** |