Patch "drm/connector: Allow clearing HDMI infoframes" has been added to the 6.13-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    drm/connector: Allow clearing HDMI infoframes

to the 6.13-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     drm-connector-allow-clearing-hdmi-infoframes.patch
and it can be found in the queue-6.13 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 988c93ac0b3d169cc587f41cf41ddd77ed8ae044
Author: Derek Foreman <derek.foreman@xxxxxxxxxxxxx>
Date:   Mon Dec 2 12:19:39 2024 -0600

    drm/connector: Allow clearing HDMI infoframes
    
    [ Upstream commit d34357743b360c99903b5a59daab08f55b2f41a1 ]
    
    Our infoframe setting code currently lacks the ability to clear
    infoframes. For some of the infoframes, we only need to replace them,
    so if an error occurred when generating a new infoframe we would leave
    a stale frame instead of clearing the frame.
    
    However, the Dynamic Range and Mastering (DRM) infoframe should only
    be present when displaying HDR content (ie: the HDR_OUTPUT_METADATA blob
    is set). If we can't clear infoframes, the stale DRM infoframe will
    remain and we can never set the display back to SDR mode.
    
    With this change, we clear infoframes when they can not, or should not,
    be generated. This fixes switching to an SDR mode from an HDR one.
    
    Fixes: f378b77227bc ("drm/connector: hdmi: Add Infoframes generation")
    Signed-off-by: Derek Foreman <derek.foreman@xxxxxxxxxxxxx>
    Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx>
    Link: https://patchwork.freedesktop.org/patch/msgid/20241202181939.724011-1-derek.foreman@xxxxxxxxxxxxx
    Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
index feb7a3a759811..936a8f95d80f7 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
@@ -347,6 +347,8 @@ static int hdmi_generate_avi_infoframe(const struct drm_connector *connector,
 		is_limited_range ? HDMI_QUANTIZATION_RANGE_LIMITED : HDMI_QUANTIZATION_RANGE_FULL;
 	int ret;
 
+	infoframe->set = false;
+
 	ret = drm_hdmi_avi_infoframe_from_display_mode(frame, connector, mode);
 	if (ret)
 		return ret;
@@ -376,6 +378,8 @@ static int hdmi_generate_spd_infoframe(const struct drm_connector *connector,
 		&infoframe->data.spd;
 	int ret;
 
+	infoframe->set = false;
+
 	ret = hdmi_spd_infoframe_init(frame,
 				      connector->hdmi.vendor,
 				      connector->hdmi.product);
@@ -398,6 +402,8 @@ static int hdmi_generate_hdr_infoframe(const struct drm_connector *connector,
 		&infoframe->data.drm;
 	int ret;
 
+	infoframe->set = false;
+
 	if (connector->max_bpc < 10)
 		return 0;
 
@@ -425,6 +431,8 @@ static int hdmi_generate_hdmi_vendor_infoframe(const struct drm_connector *conne
 		&infoframe->data.vendor.hdmi;
 	int ret;
 
+	infoframe->set = false;
+
 	if (!info->has_hdmi_infoframe)
 		return 0;
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux