From: Dom Cobley Date: Fri, 10 Dec 2021 18:03:18 +0000 (+0000) Subject: drm/vc4: Skip writes to disabled packet RAM X-Git-Tag: accepted/tizen/unified/20230118.172025~920 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=83e66038c2c20648e759f96deea85bb1d35e935f;p=platform%2Fkernel%2Flinux-rpi.git drm/vc4: Skip writes to disabled packet RAM This path actually occurs when audio is started during a hdmi mode set. As the data will be written by vc4_hdmi_set_infoframes when packet RAM is enabled again, don't treat as an error Signed-off-by: Dom Cobley --- diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index ed6a9d4..cddc227 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -684,6 +684,7 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder, mutex_lock(&vc4_hdmi->mutex); + vc4_hdmi->output_enabled = false; spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); HDMI_WRITE(HDMI_RAM_PACKET_CONFIG, 0); @@ -1200,6 +1201,7 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder, VC4_HDMI_RAM_PACKET_ENABLE); spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + vc4_hdmi->output_enabled = true; vc4_hdmi_set_infoframes(encoder); } @@ -1605,7 +1607,8 @@ static int vc4_hdmi_audio_prepare(struct device *dev, void *data, spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); memcpy(&vc4_hdmi->audio.infoframe, ¶ms->cea, sizeof(params->cea)); - vc4_hdmi_set_audio_infoframe(encoder); + if (vc4_hdmi->output_enabled) + vc4_hdmi_set_audio_infoframe(encoder); mutex_unlock(&vc4_hdmi->mutex); diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h index be3f93a..ea5c3e2 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.h +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h @@ -209,6 +209,12 @@ struct vc4_hdmi { struct drm_display_mode saved_adjusted_mode; /** + * @output_enabled: Is the HDMI controller currently active? + * Protected by @mutex. + */ + bool output_enabled; + + /** * @scdc_enabled: Is the HDMI controller currently running with * the scrambler on? Protected by @mutex. */