Lines Matching refs:genpd
25 #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ argument
30 __routine = genpd->dev_ops.callback; \
48 struct generic_pm_domain *genpd = NULL, *gpd; in pm_genpd_lookup_dev() local
56 genpd = gpd; in pm_genpd_lookup_dev()
62 return genpd; in pm_genpd_lookup_dev()
77 static int genpd_stop_dev(struct generic_pm_domain *genpd, struct device *dev) in genpd_stop_dev() argument
79 return GENPD_DEV_CALLBACK(genpd, int, stop, dev); in genpd_stop_dev()
82 static int genpd_start_dev(struct generic_pm_domain *genpd, struct device *dev) in genpd_start_dev() argument
84 return GENPD_DEV_CALLBACK(genpd, int, start, dev); in genpd_start_dev()
87 static bool genpd_sd_counter_dec(struct generic_pm_domain *genpd) in genpd_sd_counter_dec() argument
91 if (!WARN_ON(atomic_read(&genpd->sd_count) == 0)) in genpd_sd_counter_dec()
92 ret = !!atomic_dec_and_test(&genpd->sd_count); in genpd_sd_counter_dec()
97 static void genpd_sd_counter_inc(struct generic_pm_domain *genpd) in genpd_sd_counter_inc() argument
99 atomic_inc(&genpd->sd_count); in genpd_sd_counter_inc()
103 static int genpd_power_on(struct generic_pm_domain *genpd, bool timed) in genpd_power_on() argument
109 if (!genpd->power_on) in genpd_power_on()
113 return genpd->power_on(genpd); in genpd_power_on()
116 ret = genpd->power_on(genpd); in genpd_power_on()
121 if (elapsed_ns <= genpd->power_on_latency_ns) in genpd_power_on()
124 genpd->power_on_latency_ns = elapsed_ns; in genpd_power_on()
125 genpd->max_off_time_changed = true; in genpd_power_on()
127 genpd->name, "on", elapsed_ns); in genpd_power_on()
132 static int genpd_power_off(struct generic_pm_domain *genpd, bool timed) in genpd_power_off() argument
138 if (!genpd->power_off) in genpd_power_off()
142 return genpd->power_off(genpd); in genpd_power_off()
145 ret = genpd->power_off(genpd); in genpd_power_off()
150 if (elapsed_ns <= genpd->power_off_latency_ns) in genpd_power_off()
153 genpd->power_off_latency_ns = elapsed_ns; in genpd_power_off()
154 genpd->max_off_time_changed = true; in genpd_power_off()
156 genpd->name, "off", elapsed_ns); in genpd_power_off()
168 static void genpd_queue_power_off_work(struct generic_pm_domain *genpd) in genpd_queue_power_off_work() argument
170 queue_work(pm_wq, &genpd->power_off_work); in genpd_queue_power_off_work()
173 static int genpd_poweron(struct generic_pm_domain *genpd);
182 static int __genpd_poweron(struct generic_pm_domain *genpd) in __genpd_poweron() argument
187 if (genpd->status == GPD_STATE_ACTIVE in __genpd_poweron()
188 || (genpd->prepared_count > 0 && genpd->suspend_power_off)) in __genpd_poweron()
196 list_for_each_entry(link, &genpd->slave_links, slave_node) { in __genpd_poweron()
206 ret = genpd_power_on(genpd, true); in __genpd_poweron()
210 genpd->status = GPD_STATE_ACTIVE; in __genpd_poweron()
215 &genpd->slave_links, in __genpd_poweron()
228 static int genpd_poweron(struct generic_pm_domain *genpd) in genpd_poweron() argument
232 mutex_lock(&genpd->lock); in genpd_poweron()
233 ret = __genpd_poweron(genpd); in genpd_poweron()
234 mutex_unlock(&genpd->lock); in genpd_poweron()
238 static int genpd_save_dev(struct generic_pm_domain *genpd, struct device *dev) in genpd_save_dev() argument
240 return GENPD_DEV_CALLBACK(genpd, int, save_state, dev); in genpd_save_dev()
243 static int genpd_restore_dev(struct generic_pm_domain *genpd, in genpd_restore_dev() argument
246 return GENPD_DEV_CALLBACK(genpd, int, restore_state, dev); in genpd_restore_dev()
259 struct generic_pm_domain *genpd; in genpd_dev_pm_qos_notifier() local
268 genpd = dev_to_genpd(dev); in genpd_dev_pm_qos_notifier()
270 genpd = ERR_PTR(-ENODATA); in genpd_dev_pm_qos_notifier()
275 if (!IS_ERR(genpd)) { in genpd_dev_pm_qos_notifier()
276 mutex_lock(&genpd->lock); in genpd_dev_pm_qos_notifier()
277 genpd->max_off_time_changed = true; in genpd_dev_pm_qos_notifier()
278 mutex_unlock(&genpd->lock); in genpd_dev_pm_qos_notifier()
297 static int genpd_poweroff(struct generic_pm_domain *genpd, bool is_async) in genpd_poweroff() argument
308 if (genpd->status == GPD_STATE_POWER_OFF in genpd_poweroff()
309 || genpd->prepared_count > 0) in genpd_poweroff()
312 if (atomic_read(&genpd->sd_count) > 0) in genpd_poweroff()
315 list_for_each_entry(pdd, &genpd->dev_list, list_node) { in genpd_poweroff()
331 if (genpd->gov && genpd->gov->power_down_ok) { in genpd_poweroff()
332 if (!genpd->gov->power_down_ok(&genpd->domain)) in genpd_poweroff()
336 if (genpd->power_off) { in genpd_poweroff()
339 if (atomic_read(&genpd->sd_count) > 0) in genpd_poweroff()
350 ret = genpd_power_off(genpd, true); in genpd_poweroff()
355 genpd->status = GPD_STATE_POWER_OFF; in genpd_poweroff()
357 list_for_each_entry(link, &genpd->slave_links, slave_node) { in genpd_poweroff()
371 struct generic_pm_domain *genpd; in genpd_power_off_work_fn() local
373 genpd = container_of(work, struct generic_pm_domain, power_off_work); in genpd_power_off_work_fn()
375 mutex_lock(&genpd->lock); in genpd_power_off_work_fn()
376 genpd_poweroff(genpd, true); in genpd_power_off_work_fn()
377 mutex_unlock(&genpd->lock); in genpd_power_off_work_fn()
390 struct generic_pm_domain *genpd; in pm_genpd_runtime_suspend() local
400 genpd = dev_to_genpd(dev); in pm_genpd_runtime_suspend()
401 if (IS_ERR(genpd)) in pm_genpd_runtime_suspend()
410 stop_ok = genpd->gov ? genpd->gov->stop_ok : NULL; in pm_genpd_runtime_suspend()
418 ret = genpd_save_dev(genpd, dev); in pm_genpd_runtime_suspend()
422 ret = genpd_stop_dev(genpd, dev); in pm_genpd_runtime_suspend()
424 genpd_restore_dev(genpd, dev); in pm_genpd_runtime_suspend()
435 genpd->max_off_time_changed = true; in pm_genpd_runtime_suspend()
447 mutex_lock(&genpd->lock); in pm_genpd_runtime_suspend()
448 genpd_poweroff(genpd, false); in pm_genpd_runtime_suspend()
449 mutex_unlock(&genpd->lock); in pm_genpd_runtime_suspend()
464 struct generic_pm_domain *genpd; in pm_genpd_runtime_resume() local
474 genpd = dev_to_genpd(dev); in pm_genpd_runtime_resume()
475 if (IS_ERR(genpd)) in pm_genpd_runtime_resume()
484 mutex_lock(&genpd->lock); in pm_genpd_runtime_resume()
485 ret = __genpd_poweron(genpd); in pm_genpd_runtime_resume()
486 mutex_unlock(&genpd->lock); in pm_genpd_runtime_resume()
496 genpd_start_dev(genpd, dev); in pm_genpd_runtime_resume()
497 genpd_restore_dev(genpd, dev); in pm_genpd_runtime_resume()
506 genpd->max_off_time_changed = true; in pm_genpd_runtime_resume()
527 struct generic_pm_domain *genpd; in genpd_poweroff_unused() local
536 list_for_each_entry(genpd, &gpd_list, gpd_list_node) in genpd_poweroff_unused()
537 genpd_queue_power_off_work(genpd); in genpd_poweroff_unused()
551 static bool pm_genpd_present(const struct generic_pm_domain *genpd) in pm_genpd_present() argument
555 if (IS_ERR_OR_NULL(genpd)) in pm_genpd_present()
559 if (gpd == genpd) in pm_genpd_present()
565 static bool genpd_dev_active_wakeup(struct generic_pm_domain *genpd, in genpd_dev_active_wakeup() argument
568 return GENPD_DEV_CALLBACK(genpd, bool, active_wakeup, dev); in genpd_dev_active_wakeup()
584 static void pm_genpd_sync_poweroff(struct generic_pm_domain *genpd, in pm_genpd_sync_poweroff() argument
589 if (genpd->status == GPD_STATE_POWER_OFF) in pm_genpd_sync_poweroff()
592 if (genpd->suspended_count != genpd->device_count in pm_genpd_sync_poweroff()
593 || atomic_read(&genpd->sd_count) > 0) in pm_genpd_sync_poweroff()
596 genpd_power_off(genpd, timed); in pm_genpd_sync_poweroff()
598 genpd->status = GPD_STATE_POWER_OFF; in pm_genpd_sync_poweroff()
600 list_for_each_entry(link, &genpd->slave_links, slave_node) { in pm_genpd_sync_poweroff()
616 static void pm_genpd_sync_poweron(struct generic_pm_domain *genpd, in pm_genpd_sync_poweron() argument
621 if (genpd->status == GPD_STATE_ACTIVE) in pm_genpd_sync_poweron()
624 list_for_each_entry(link, &genpd->slave_links, slave_node) { in pm_genpd_sync_poweron()
629 genpd_power_on(genpd, timed); in pm_genpd_sync_poweron()
631 genpd->status = GPD_STATE_ACTIVE; in pm_genpd_sync_poweron()
650 static bool resume_needed(struct device *dev, struct generic_pm_domain *genpd) in resume_needed() argument
657 active_wakeup = genpd_dev_active_wakeup(genpd, dev); in resume_needed()
672 struct generic_pm_domain *genpd; in pm_genpd_prepare() local
677 genpd = dev_to_genpd(dev); in pm_genpd_prepare()
678 if (IS_ERR(genpd)) in pm_genpd_prepare()
695 if (resume_needed(dev, genpd)) in pm_genpd_prepare()
698 mutex_lock(&genpd->lock); in pm_genpd_prepare()
700 if (genpd->prepared_count++ == 0) { in pm_genpd_prepare()
701 genpd->suspended_count = 0; in pm_genpd_prepare()
702 genpd->suspend_power_off = genpd->status == GPD_STATE_POWER_OFF; in pm_genpd_prepare()
705 mutex_unlock(&genpd->lock); in pm_genpd_prepare()
707 if (genpd->suspend_power_off) { in pm_genpd_prepare()
723 mutex_lock(&genpd->lock); in pm_genpd_prepare()
725 if (--genpd->prepared_count == 0) in pm_genpd_prepare()
726 genpd->suspend_power_off = false; in pm_genpd_prepare()
728 mutex_unlock(&genpd->lock); in pm_genpd_prepare()
746 struct generic_pm_domain *genpd; in pm_genpd_suspend() local
750 genpd = dev_to_genpd(dev); in pm_genpd_suspend()
751 if (IS_ERR(genpd)) in pm_genpd_suspend()
754 return genpd->suspend_power_off ? 0 : pm_generic_suspend(dev); in pm_genpd_suspend()
767 struct generic_pm_domain *genpd; in pm_genpd_suspend_late() local
771 genpd = dev_to_genpd(dev); in pm_genpd_suspend_late()
772 if (IS_ERR(genpd)) in pm_genpd_suspend_late()
775 return genpd->suspend_power_off ? 0 : pm_generic_suspend_late(dev); in pm_genpd_suspend_late()
787 struct generic_pm_domain *genpd; in pm_genpd_suspend_noirq() local
791 genpd = dev_to_genpd(dev); in pm_genpd_suspend_noirq()
792 if (IS_ERR(genpd)) in pm_genpd_suspend_noirq()
795 if (genpd->suspend_power_off in pm_genpd_suspend_noirq()
796 || (dev->power.wakeup_path && genpd_dev_active_wakeup(genpd, dev))) in pm_genpd_suspend_noirq()
799 genpd_stop_dev(genpd, dev); in pm_genpd_suspend_noirq()
806 genpd->suspended_count++; in pm_genpd_suspend_noirq()
807 pm_genpd_sync_poweroff(genpd, true); in pm_genpd_suspend_noirq()
820 struct generic_pm_domain *genpd; in pm_genpd_resume_noirq() local
824 genpd = dev_to_genpd(dev); in pm_genpd_resume_noirq()
825 if (IS_ERR(genpd)) in pm_genpd_resume_noirq()
828 if (genpd->suspend_power_off in pm_genpd_resume_noirq()
829 || (dev->power.wakeup_path && genpd_dev_active_wakeup(genpd, dev))) in pm_genpd_resume_noirq()
837 pm_genpd_sync_poweron(genpd, true); in pm_genpd_resume_noirq()
838 genpd->suspended_count--; in pm_genpd_resume_noirq()
840 return genpd_start_dev(genpd, dev); in pm_genpd_resume_noirq()
854 struct generic_pm_domain *genpd; in pm_genpd_resume_early() local
858 genpd = dev_to_genpd(dev); in pm_genpd_resume_early()
859 if (IS_ERR(genpd)) in pm_genpd_resume_early()
862 return genpd->suspend_power_off ? 0 : pm_generic_resume_early(dev); in pm_genpd_resume_early()
875 struct generic_pm_domain *genpd; in pm_genpd_resume() local
879 genpd = dev_to_genpd(dev); in pm_genpd_resume()
880 if (IS_ERR(genpd)) in pm_genpd_resume()
883 return genpd->suspend_power_off ? 0 : pm_generic_resume(dev); in pm_genpd_resume()
896 struct generic_pm_domain *genpd; in pm_genpd_freeze() local
900 genpd = dev_to_genpd(dev); in pm_genpd_freeze()
901 if (IS_ERR(genpd)) in pm_genpd_freeze()
904 return genpd->suspend_power_off ? 0 : pm_generic_freeze(dev); in pm_genpd_freeze()
918 struct generic_pm_domain *genpd; in pm_genpd_freeze_late() local
922 genpd = dev_to_genpd(dev); in pm_genpd_freeze_late()
923 if (IS_ERR(genpd)) in pm_genpd_freeze_late()
926 return genpd->suspend_power_off ? 0 : pm_generic_freeze_late(dev); in pm_genpd_freeze_late()
940 struct generic_pm_domain *genpd; in pm_genpd_freeze_noirq() local
944 genpd = dev_to_genpd(dev); in pm_genpd_freeze_noirq()
945 if (IS_ERR(genpd)) in pm_genpd_freeze_noirq()
948 return genpd->suspend_power_off ? 0 : genpd_stop_dev(genpd, dev); in pm_genpd_freeze_noirq()
960 struct generic_pm_domain *genpd; in pm_genpd_thaw_noirq() local
964 genpd = dev_to_genpd(dev); in pm_genpd_thaw_noirq()
965 if (IS_ERR(genpd)) in pm_genpd_thaw_noirq()
968 return genpd->suspend_power_off ? in pm_genpd_thaw_noirq()
969 0 : genpd_start_dev(genpd, dev); in pm_genpd_thaw_noirq()
983 struct generic_pm_domain *genpd; in pm_genpd_thaw_early() local
987 genpd = dev_to_genpd(dev); in pm_genpd_thaw_early()
988 if (IS_ERR(genpd)) in pm_genpd_thaw_early()
991 return genpd->suspend_power_off ? 0 : pm_generic_thaw_early(dev); in pm_genpd_thaw_early()
1004 struct generic_pm_domain *genpd; in pm_genpd_thaw() local
1008 genpd = dev_to_genpd(dev); in pm_genpd_thaw()
1009 if (IS_ERR(genpd)) in pm_genpd_thaw()
1012 return genpd->suspend_power_off ? 0 : pm_generic_thaw(dev); in pm_genpd_thaw()
1024 struct generic_pm_domain *genpd; in pm_genpd_restore_noirq() local
1028 genpd = dev_to_genpd(dev); in pm_genpd_restore_noirq()
1029 if (IS_ERR(genpd)) in pm_genpd_restore_noirq()
1040 if (genpd->suspended_count++ == 0) { in pm_genpd_restore_noirq()
1046 genpd->status = GPD_STATE_POWER_OFF; in pm_genpd_restore_noirq()
1047 if (genpd->suspend_power_off) { in pm_genpd_restore_noirq()
1052 genpd_power_off(genpd, true); in pm_genpd_restore_noirq()
1058 if (genpd->suspend_power_off) in pm_genpd_restore_noirq()
1061 pm_genpd_sync_poweron(genpd, true); in pm_genpd_restore_noirq()
1063 return genpd_start_dev(genpd, dev); in pm_genpd_restore_noirq()
1077 struct generic_pm_domain *genpd; in pm_genpd_complete() local
1082 genpd = dev_to_genpd(dev); in pm_genpd_complete()
1083 if (IS_ERR(genpd)) in pm_genpd_complete()
1086 mutex_lock(&genpd->lock); in pm_genpd_complete()
1088 run_complete = !genpd->suspend_power_off; in pm_genpd_complete()
1089 if (--genpd->prepared_count == 0) in pm_genpd_complete()
1090 genpd->suspend_power_off = false; in pm_genpd_complete()
1092 mutex_unlock(&genpd->lock); in pm_genpd_complete()
1111 struct generic_pm_domain *genpd; in genpd_syscore_switch() local
1113 genpd = dev_to_genpd(dev); in genpd_syscore_switch()
1114 if (!pm_genpd_present(genpd)) in genpd_syscore_switch()
1118 genpd->suspended_count++; in genpd_syscore_switch()
1119 pm_genpd_sync_poweroff(genpd, false); in genpd_syscore_switch()
1121 pm_genpd_sync_poweron(genpd, false); in genpd_syscore_switch()
1122 genpd->suspended_count--; in genpd_syscore_switch()
1159 struct generic_pm_domain *genpd, in genpd_alloc_dev_data() argument
1191 dev->pm_domain = &genpd->domain; in genpd_alloc_dev_data()
1225 int __pm_genpd_add_device(struct generic_pm_domain *genpd, struct device *dev, in __pm_genpd_add_device() argument
1233 if (IS_ERR_OR_NULL(genpd) || IS_ERR_OR_NULL(dev)) in __pm_genpd_add_device()
1236 gpd_data = genpd_alloc_dev_data(dev, genpd, td); in __pm_genpd_add_device()
1240 mutex_lock(&genpd->lock); in __pm_genpd_add_device()
1242 if (genpd->prepared_count > 0) { in __pm_genpd_add_device()
1247 ret = genpd->attach_dev ? genpd->attach_dev(genpd, dev) : 0; in __pm_genpd_add_device()
1251 genpd->device_count++; in __pm_genpd_add_device()
1252 genpd->max_off_time_changed = true; in __pm_genpd_add_device()
1254 list_add_tail(&gpd_data->base.list_node, &genpd->dev_list); in __pm_genpd_add_device()
1257 mutex_unlock(&genpd->lock); in __pm_genpd_add_device()
1272 int pm_genpd_remove_device(struct generic_pm_domain *genpd, in pm_genpd_remove_device() argument
1281 if (!genpd || genpd != pm_genpd_lookup_dev(dev)) in pm_genpd_remove_device()
1289 mutex_lock(&genpd->lock); in pm_genpd_remove_device()
1291 if (genpd->prepared_count > 0) { in pm_genpd_remove_device()
1296 genpd->device_count--; in pm_genpd_remove_device()
1297 genpd->max_off_time_changed = true; in pm_genpd_remove_device()
1299 if (genpd->detach_dev) in pm_genpd_remove_device()
1300 genpd->detach_dev(genpd, dev); in pm_genpd_remove_device()
1304 mutex_unlock(&genpd->lock); in pm_genpd_remove_device()
1311 mutex_unlock(&genpd->lock); in pm_genpd_remove_device()
1322 int pm_genpd_add_subdomain(struct generic_pm_domain *genpd, in pm_genpd_add_subdomain() argument
1328 if (IS_ERR_OR_NULL(genpd) || IS_ERR_OR_NULL(subdomain) in pm_genpd_add_subdomain()
1329 || genpd == subdomain) in pm_genpd_add_subdomain()
1336 mutex_lock(&genpd->lock); in pm_genpd_add_subdomain()
1339 if (genpd->status == GPD_STATE_POWER_OFF in pm_genpd_add_subdomain()
1345 list_for_each_entry(itr, &genpd->master_links, master_node) { in pm_genpd_add_subdomain()
1346 if (itr->slave == subdomain && itr->master == genpd) { in pm_genpd_add_subdomain()
1352 link->master = genpd; in pm_genpd_add_subdomain()
1353 list_add_tail(&link->master_node, &genpd->master_links); in pm_genpd_add_subdomain()
1357 genpd_sd_counter_inc(genpd); in pm_genpd_add_subdomain()
1361 mutex_unlock(&genpd->lock); in pm_genpd_add_subdomain()
1373 int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, in pm_genpd_remove_subdomain() argument
1379 if (IS_ERR_OR_NULL(genpd) || IS_ERR_OR_NULL(subdomain)) in pm_genpd_remove_subdomain()
1382 mutex_lock(&genpd->lock); in pm_genpd_remove_subdomain()
1385 pr_warn("%s: unable to remove subdomain %s\n", genpd->name, in pm_genpd_remove_subdomain()
1391 list_for_each_entry(link, &genpd->master_links, master_node) { in pm_genpd_remove_subdomain()
1401 genpd_sd_counter_dec(genpd); in pm_genpd_remove_subdomain()
1410 mutex_unlock(&genpd->lock); in pm_genpd_remove_subdomain()
1470 void pm_genpd_init(struct generic_pm_domain *genpd, in pm_genpd_init() argument
1473 if (IS_ERR_OR_NULL(genpd)) in pm_genpd_init()
1476 INIT_LIST_HEAD(&genpd->master_links); in pm_genpd_init()
1477 INIT_LIST_HEAD(&genpd->slave_links); in pm_genpd_init()
1478 INIT_LIST_HEAD(&genpd->dev_list); in pm_genpd_init()
1479 mutex_init(&genpd->lock); in pm_genpd_init()
1480 genpd->gov = gov; in pm_genpd_init()
1481 INIT_WORK(&genpd->power_off_work, genpd_power_off_work_fn); in pm_genpd_init()
1482 atomic_set(&genpd->sd_count, 0); in pm_genpd_init()
1483 genpd->status = is_off ? GPD_STATE_POWER_OFF : GPD_STATE_ACTIVE; in pm_genpd_init()
1484 genpd->device_count = 0; in pm_genpd_init()
1485 genpd->max_off_time_ns = -1; in pm_genpd_init()
1486 genpd->max_off_time_changed = true; in pm_genpd_init()
1487 genpd->domain.ops.runtime_suspend = pm_genpd_runtime_suspend; in pm_genpd_init()
1488 genpd->domain.ops.runtime_resume = pm_genpd_runtime_resume; in pm_genpd_init()
1489 genpd->domain.ops.prepare = pm_genpd_prepare; in pm_genpd_init()
1490 genpd->domain.ops.suspend = pm_genpd_suspend; in pm_genpd_init()
1491 genpd->domain.ops.suspend_late = pm_genpd_suspend_late; in pm_genpd_init()
1492 genpd->domain.ops.suspend_noirq = pm_genpd_suspend_noirq; in pm_genpd_init()
1493 genpd->domain.ops.resume_noirq = pm_genpd_resume_noirq; in pm_genpd_init()
1494 genpd->domain.ops.resume_early = pm_genpd_resume_early; in pm_genpd_init()
1495 genpd->domain.ops.resume = pm_genpd_resume; in pm_genpd_init()
1496 genpd->domain.ops.freeze = pm_genpd_freeze; in pm_genpd_init()
1497 genpd->domain.ops.freeze_late = pm_genpd_freeze_late; in pm_genpd_init()
1498 genpd->domain.ops.freeze_noirq = pm_genpd_freeze_noirq; in pm_genpd_init()
1499 genpd->domain.ops.thaw_noirq = pm_genpd_thaw_noirq; in pm_genpd_init()
1500 genpd->domain.ops.thaw_early = pm_genpd_thaw_early; in pm_genpd_init()
1501 genpd->domain.ops.thaw = pm_genpd_thaw; in pm_genpd_init()
1502 genpd->domain.ops.poweroff = pm_genpd_suspend; in pm_genpd_init()
1503 genpd->domain.ops.poweroff_late = pm_genpd_suspend_late; in pm_genpd_init()
1504 genpd->domain.ops.poweroff_noirq = pm_genpd_suspend_noirq; in pm_genpd_init()
1505 genpd->domain.ops.restore_noirq = pm_genpd_restore_noirq; in pm_genpd_init()
1506 genpd->domain.ops.restore_early = pm_genpd_resume_early; in pm_genpd_init()
1507 genpd->domain.ops.restore = pm_genpd_resume; in pm_genpd_init()
1508 genpd->domain.ops.complete = pm_genpd_complete; in pm_genpd_init()
1509 genpd->dev_ops.save_state = pm_genpd_default_save_state; in pm_genpd_init()
1510 genpd->dev_ops.restore_state = pm_genpd_default_restore_state; in pm_genpd_init()
1512 if (genpd->flags & GENPD_FLAG_PM_CLK) { in pm_genpd_init()
1513 genpd->dev_ops.stop = pm_clk_suspend; in pm_genpd_init()
1514 genpd->dev_ops.start = pm_clk_resume; in pm_genpd_init()
1518 list_add(&genpd->gpd_list_node, &gpd_list); in pm_genpd_init()
1674 struct generic_pm_domain *genpd = ERR_PTR(-ENOENT); in of_genpd_get_from_provider() local
1682 genpd = provider->xlate(genpdspec, provider->data); in of_genpd_get_from_provider()
1683 if (!IS_ERR(genpd)) in of_genpd_get_from_provider()
1689 return genpd; in of_genpd_get_from_provider()
1862 struct generic_pm_domain *genpd) in pm_genpd_summary_one() argument
1873 ret = mutex_lock_interruptible(&genpd->lock); in pm_genpd_summary_one()
1877 if (WARN_ON(genpd->status >= ARRAY_SIZE(status_lookup))) in pm_genpd_summary_one()
1879 seq_printf(s, "%-30s %-15s ", genpd->name, status_lookup[genpd->status]); in pm_genpd_summary_one()
1886 list_for_each_entry(link, &genpd->master_links, master_node) { in pm_genpd_summary_one()
1888 if (!list_is_last(&link->master_node, &genpd->master_links)) in pm_genpd_summary_one()
1892 list_for_each_entry(pm_data, &genpd->dev_list, list_node) { in pm_genpd_summary_one()
1904 mutex_unlock(&genpd->lock); in pm_genpd_summary_one()
1911 struct generic_pm_domain *genpd; in pm_genpd_summary_show() local
1922 list_for_each_entry(genpd, &gpd_list, gpd_list_node) { in pm_genpd_summary_show()
1923 ret = pm_genpd_summary_one(s, genpd); in pm_genpd_summary_show()