Lines Matching +full:pm +full:- +full:domains

2  * Copyright © 2012-2014 Intel Corporation
37 * DOC: runtime pm
47 * domains there's a sizeable amount of indirection required. This file provides
49 * abstract power domains. It then maps those to the actual power wells
62 if (!rpm->debug.class) in init_intel_runtime_pm_wakeref()
63 ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, in init_intel_runtime_pm_wakeref()
70 if (!rpm->available || rpm->no_wakeref_tracking) in track_intel_runtime_pm_wakeref()
73 return intel_ref_tracker_alloc(&rpm->debug); in track_intel_runtime_pm_wakeref()
79 if (!rpm->available || rpm->no_wakeref_tracking) in untrack_intel_runtime_pm_wakeref()
82 intel_ref_tracker_free(&rpm->debug, wakeref); in untrack_intel_runtime_pm_wakeref()
87 ref_tracker_dir_exit(&rpm->debug); in untrack_all_intel_runtime_pm_wakerefs()
95 if (!atomic_dec_and_lock_irqsave(&rpm->wakeref_count, in __intel_wakeref_dec_and_check_tracking()
96 &rpm->debug.lock, in __intel_wakeref_dec_and_check_tracking()
100 ref_tracker_dir_print_locked(&rpm->debug, INTEL_REFTRACK_PRINT_LIMIT); in __intel_wakeref_dec_and_check_tracking()
101 spin_unlock_irqrestore(&rpm->debug.lock, flags); in __intel_wakeref_dec_and_check_tracking()
107 intel_ref_tracker_show(&rpm->debug, p); in print_intel_runtime_pm_wakeref()
130 atomic_dec(&rpm->wakeref_count); in __intel_wakeref_dec_and_check_tracking()
144 atomic_add(1 + INTEL_RPM_WAKELOCK_BIAS, &rpm->wakeref_count); in intel_runtime_pm_acquire()
147 atomic_inc(&rpm->wakeref_count); in intel_runtime_pm_acquire()
157 atomic_sub(INTEL_RPM_WAKELOCK_BIAS, &rpm->wakeref_count); in intel_runtime_pm_release()
171 ret = pm_runtime_get_sync(rpm->kdev); in __intel_runtime_pm_get()
172 drm_WARN_ONCE(&i915->drm, ret < 0, in __intel_runtime_pm_get()
181 * intel_runtime_pm_get_raw - grab a raw runtime pm reference
187 * This function grabs a device-level runtime pm reference (mostly used for
188 * asynchronous PM management from display code) and ensures that it is powered
191 * Any runtime pm reference obtained by this function must have a symmetric
203 * intel_runtime_pm_get - grab a runtime pm reference
206 * This function grabs a device-level runtime pm reference (mostly used for GEM
209 * Any runtime pm reference obtained by this function must have a symmetric
220 * __intel_runtime_pm_get_if_active - grab a runtime pm reference if device is active
222 * @ignore_usecount: get a ref even if dev->power.usage_count is 0
224 * This function grabs a device-level runtime pm reference if the device is
229 * user requiring the device to be powered up (dev->power.usage_count == 0).
235 * Any runtime pm reference obtained by this function must have a symmetric
246 * In cases runtime PM is disabled by the RPM core and we get in __intel_runtime_pm_get_if_active()
247 * an -EINVAL return value we are not supposed to call this in __intel_runtime_pm_get_if_active()
252 pm_runtime_get_if_active(rpm->kdev) <= 0) || in __intel_runtime_pm_get_if_active()
254 pm_runtime_get_if_in_use(rpm->kdev) <= 0)) in __intel_runtime_pm_get_if_active()
274 * intel_runtime_pm_get_noresume - grab a runtime pm reference
277 * This function grabs a device-level runtime pm reference.
283 * Any runtime pm reference obtained by this function must have a symmetric
291 pm_runtime_get_noresume(rpm->kdev); in intel_runtime_pm_get_noresume()
302 struct device *kdev = rpm->kdev; in __intel_runtime_pm_put()
313 * intel_runtime_pm_put_raw - release a raw runtime pm reference
317 * This function drops the device-level runtime pm reference obtained by
328 * intel_runtime_pm_put_unchecked - release an unchecked runtime pm reference
331 * This function drops the device-level runtime pm reference obtained by
346 * intel_runtime_pm_put - release a runtime pm reference
350 * This function drops the device-level runtime pm reference obtained by
361 * intel_runtime_pm_enable - enable runtime pm
364 * This function enables runtime pm at the end of the driver load sequence.
366 * Note that this function does currently not enable runtime pm for the
367 * subordinate display power domains. That is done by
373 struct device *kdev = rpm->kdev; in intel_runtime_pm_enable()
394 if (!rpm->available) { in intel_runtime_pm_enable()
399 drm_WARN(&i915->drm, ret < 0, in intel_runtime_pm_enable()
426 struct device *kdev = rpm->kdev; in intel_runtime_pm_disable()
429 drm_WARN(&i915->drm, pm_runtime_get_sync(kdev) < 0, in intel_runtime_pm_disable()
434 if (!rpm->available) in intel_runtime_pm_disable()
441 int count = atomic_read(&rpm->wakeref_count); in intel_runtime_pm_driver_release()
443 intel_wakeref_auto_fini(&rpm->userfault_wakeref); in intel_runtime_pm_driver_release()
445 drm_WARN(&i915->drm, count, in intel_runtime_pm_driver_release()
446 "i915 raw-wakerefs=%d wakelocks=%d on cleanup\n", in intel_runtime_pm_driver_release()
460 struct pci_dev *pdev = to_pci_dev(i915->drm.dev); in intel_runtime_pm_init_early()
461 struct device *kdev = &pdev->dev; in intel_runtime_pm_init_early()
463 rpm->kdev = kdev; in intel_runtime_pm_init_early()
464 rpm->available = HAS_RUNTIME_PM(i915); in intel_runtime_pm_init_early()
465 atomic_set(&rpm->wakeref_count, 0); in intel_runtime_pm_init_early()
468 INIT_LIST_HEAD(&rpm->lmem_userfault_list); in intel_runtime_pm_init_early()
469 spin_lock_init(&rpm->lmem_userfault_lock); in intel_runtime_pm_init_early()
470 intel_wakeref_auto_init(&rpm->userfault_wakeref, i915); in intel_runtime_pm_init_early()