We were sending HAD DRM_DPMS_ON event when resuming from sleep state
in gfx_late_resume. Which was causing the HAD HOT_PLUG sequence to
run again causing:
1. Audio Noise
2. Random crash.
With this patch, we handle the situation by checking if audio stream
is busy in resume sequence. If yes, we don't send DRM_DPMS_ON in
gfx_late_resume to both Local MIPI and HDMI as we never send
DRM_DPMS_OFF in case HDMI audio is busy becasue of a known JIRA
issue - ANDROID-1553. Otherwise we turn them ON.
After the Jira issue is resolved, we can turn the local MIPI
sequence independent of HDMI Audio state.
Refer JIRA: ANDROID-1553 for more details.
ISSUE: HSD-206943
Signed-off-by: Mohan Kandra <mohan.b.kandra@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
struct drm_encoder_helper_funcs *ehf = encoder->helper_private;
if (drm_helper_encoder_in_use(encoder) && ehf && ehf->mode_set
- && ehf->dpms) {
+ && ehf->dpms
+#ifndef JIRA_ANDROID-1553
+ /*
+ Local MIPI fails to turn back on from a DPMS off/on cycle if HDMI
+ audio returns busy to disallow system suspend.
+ Once ANDROID-1553 is fixed, the expectation is to turn off MIPI but
+ keep display island on if there is active audio playback over HDMI
+ Refer Jira bug# Android-1553 for more details.
+ */
+ && !(dev_priv->hdmi_audio_busy)
+#endif
+ ) {
struct drm_crtc *crtc = encoder->crtc;
if (crtc)