This source file includes following definitions.
- pm_generic_runtime_suspend
- pm_generic_runtime_resume
- pm_generic_prepare
- pm_generic_suspend_noirq
- pm_generic_suspend_late
- pm_generic_suspend
- pm_generic_freeze_noirq
- pm_generic_freeze_late
- pm_generic_freeze
- pm_generic_poweroff_noirq
- pm_generic_poweroff_late
- pm_generic_poweroff
- pm_generic_thaw_noirq
- pm_generic_thaw_early
- pm_generic_thaw
- pm_generic_resume_noirq
- pm_generic_resume_early
- pm_generic_resume
- pm_generic_restore_noirq
- pm_generic_restore_early
- pm_generic_restore
- pm_generic_complete
1
2
3
4
5
6
7 #include <linux/pm.h>
8 #include <linux/pm_runtime.h>
9 #include <linux/export.h>
10
11 #ifdef CONFIG_PM
12
13
14
15
16
17
18
19
20 int pm_generic_runtime_suspend(struct device *dev)
21 {
22 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
23 int ret;
24
25 ret = pm && pm->runtime_suspend ? pm->runtime_suspend(dev) : 0;
26
27 return ret;
28 }
29 EXPORT_SYMBOL_GPL(pm_generic_runtime_suspend);
30
31
32
33
34
35
36
37
38
39 int pm_generic_runtime_resume(struct device *dev)
40 {
41 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
42 int ret;
43
44 ret = pm && pm->runtime_resume ? pm->runtime_resume(dev) : 0;
45
46 return ret;
47 }
48 EXPORT_SYMBOL_GPL(pm_generic_runtime_resume);
49 #endif
50
51 #ifdef CONFIG_PM_SLEEP
52
53
54
55
56
57
58 int pm_generic_prepare(struct device *dev)
59 {
60 struct device_driver *drv = dev->driver;
61 int ret = 0;
62
63 if (drv && drv->pm && drv->pm->prepare)
64 ret = drv->pm->prepare(dev);
65
66 return ret;
67 }
68
69
70
71
72
73 int pm_generic_suspend_noirq(struct device *dev)
74 {
75 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
76
77 return pm && pm->suspend_noirq ? pm->suspend_noirq(dev) : 0;
78 }
79 EXPORT_SYMBOL_GPL(pm_generic_suspend_noirq);
80
81
82
83
84
85 int pm_generic_suspend_late(struct device *dev)
86 {
87 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
88
89 return pm && pm->suspend_late ? pm->suspend_late(dev) : 0;
90 }
91 EXPORT_SYMBOL_GPL(pm_generic_suspend_late);
92
93
94
95
96
97 int pm_generic_suspend(struct device *dev)
98 {
99 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
100
101 return pm && pm->suspend ? pm->suspend(dev) : 0;
102 }
103 EXPORT_SYMBOL_GPL(pm_generic_suspend);
104
105
106
107
108
109 int pm_generic_freeze_noirq(struct device *dev)
110 {
111 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
112
113 return pm && pm->freeze_noirq ? pm->freeze_noirq(dev) : 0;
114 }
115 EXPORT_SYMBOL_GPL(pm_generic_freeze_noirq);
116
117
118
119
120
121 int pm_generic_freeze_late(struct device *dev)
122 {
123 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
124
125 return pm && pm->freeze_late ? pm->freeze_late(dev) : 0;
126 }
127 EXPORT_SYMBOL_GPL(pm_generic_freeze_late);
128
129
130
131
132
133 int pm_generic_freeze(struct device *dev)
134 {
135 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
136
137 return pm && pm->freeze ? pm->freeze(dev) : 0;
138 }
139 EXPORT_SYMBOL_GPL(pm_generic_freeze);
140
141
142
143
144
145 int pm_generic_poweroff_noirq(struct device *dev)
146 {
147 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
148
149 return pm && pm->poweroff_noirq ? pm->poweroff_noirq(dev) : 0;
150 }
151 EXPORT_SYMBOL_GPL(pm_generic_poweroff_noirq);
152
153
154
155
156
157 int pm_generic_poweroff_late(struct device *dev)
158 {
159 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
160
161 return pm && pm->poweroff_late ? pm->poweroff_late(dev) : 0;
162 }
163 EXPORT_SYMBOL_GPL(pm_generic_poweroff_late);
164
165
166
167
168
169 int pm_generic_poweroff(struct device *dev)
170 {
171 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
172
173 return pm && pm->poweroff ? pm->poweroff(dev) : 0;
174 }
175 EXPORT_SYMBOL_GPL(pm_generic_poweroff);
176
177
178
179
180
181 int pm_generic_thaw_noirq(struct device *dev)
182 {
183 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
184
185 return pm && pm->thaw_noirq ? pm->thaw_noirq(dev) : 0;
186 }
187 EXPORT_SYMBOL_GPL(pm_generic_thaw_noirq);
188
189
190
191
192
193 int pm_generic_thaw_early(struct device *dev)
194 {
195 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
196
197 return pm && pm->thaw_early ? pm->thaw_early(dev) : 0;
198 }
199 EXPORT_SYMBOL_GPL(pm_generic_thaw_early);
200
201
202
203
204
205 int pm_generic_thaw(struct device *dev)
206 {
207 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
208
209 return pm && pm->thaw ? pm->thaw(dev) : 0;
210 }
211 EXPORT_SYMBOL_GPL(pm_generic_thaw);
212
213
214
215
216
217 int pm_generic_resume_noirq(struct device *dev)
218 {
219 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
220
221 return pm && pm->resume_noirq ? pm->resume_noirq(dev) : 0;
222 }
223 EXPORT_SYMBOL_GPL(pm_generic_resume_noirq);
224
225
226
227
228
229 int pm_generic_resume_early(struct device *dev)
230 {
231 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
232
233 return pm && pm->resume_early ? pm->resume_early(dev) : 0;
234 }
235 EXPORT_SYMBOL_GPL(pm_generic_resume_early);
236
237
238
239
240
241 int pm_generic_resume(struct device *dev)
242 {
243 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
244
245 return pm && pm->resume ? pm->resume(dev) : 0;
246 }
247 EXPORT_SYMBOL_GPL(pm_generic_resume);
248
249
250
251
252
253 int pm_generic_restore_noirq(struct device *dev)
254 {
255 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
256
257 return pm && pm->restore_noirq ? pm->restore_noirq(dev) : 0;
258 }
259 EXPORT_SYMBOL_GPL(pm_generic_restore_noirq);
260
261
262
263
264
265 int pm_generic_restore_early(struct device *dev)
266 {
267 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
268
269 return pm && pm->restore_early ? pm->restore_early(dev) : 0;
270 }
271 EXPORT_SYMBOL_GPL(pm_generic_restore_early);
272
273
274
275
276
277 int pm_generic_restore(struct device *dev)
278 {
279 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
280
281 return pm && pm->restore ? pm->restore(dev) : 0;
282 }
283 EXPORT_SYMBOL_GPL(pm_generic_restore);
284
285
286
287
288
289
290
291 void pm_generic_complete(struct device *dev)
292 {
293 struct device_driver *drv = dev->driver;
294
295 if (drv && drv->pm && drv->pm->complete)
296 drv->pm->complete(dev);
297 }
298 #endif