diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2019-02-13 16:21:09 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2019-02-14 22:04:47 +0100 |
commit | d31c85fc864269ab8e6fb6ed36c87f2fc33a9430 (patch) | |
tree | 12bbfb4655f15035c96ed37c6fde897a386f49c7 /include/drm/drm_audio_component.h | |
parent | drm/i915: Implement new w/a for underruns with wm1+ disabled (diff) | |
download | linux-d31c85fc864269ab8e6fb6ed36c87f2fc33a9430.tar.xz linux-d31c85fc864269ab8e6fb6ed36c87f2fc33a9430.zip |
snd/hda, drm/i915: Track the display_power_status using a cookie
drm/i915 is tracking all wakeref owners with a cookie in order to
identify leaks. To that end, each rpm acquisition ops->get_power is
assigned a cookie which should be passed to ops->put_power to signify
its release (and removal from the list of wakeref owners). As snd/hda is
already using a bool to track current status of display_power extending
that to an unsigned long to hold the boolean cookie is a trivial
extension, and will quell all doubt that snd/hda is the cause of the
device runtime pm leaks.
v2: Keep using the power abstraction for local wakeref tracking.
v3: BUILD_BUG_ON impedance mismatch
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Jani Nikula <jani.nikula@intel.com>
Acked-by: Takashi Iwai <tiwai@suse.de>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190213152109.16997-1-chris@chris-wilson.co.uk
Diffstat (limited to 'include/drm/drm_audio_component.h')
-rw-r--r-- | include/drm/drm_audio_component.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/drm/drm_audio_component.h b/include/drm/drm_audio_component.h index 4923b00328c1..d0c7444319f5 100644 --- a/include/drm/drm_audio_component.h +++ b/include/drm/drm_audio_component.h @@ -18,14 +18,17 @@ struct drm_audio_component_ops { * @get_power: get the POWER_DOMAIN_AUDIO power well * * Request the power well to be turned on. + * + * Returns a wakeref cookie to be passed back to the corresponding + * call to @put_power. */ - void (*get_power)(struct device *); + unsigned long (*get_power)(struct device *); /** * @put_power: put the POWER_DOMAIN_AUDIO power well * * Allow the power well to be turned off. */ - void (*put_power)(struct device *); + void (*put_power)(struct device *, unsigned long); /** * @codec_wake_override: Enable/disable codec wake signal */ |