summaryrefslogtreecommitdiffstats
path: root/include/drm/drm_audio_component.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2019-02-13 16:21:09 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2019-02-14 22:04:47 +0100
commitd31c85fc864269ab8e6fb6ed36c87f2fc33a9430 (patch)
tree12bbfb4655f15035c96ed37c6fde897a386f49c7 /include/drm/drm_audio_component.h
parentdrm/i915: Implement new w/a for underruns with wm1+ disabled (diff)
downloadlinux-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.h7
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
*/