]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/msm/hdmi: Fix wrong CTRL1 register used in writing info frames
authorKrzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Wed, 11 Mar 2026 19:16:21 +0000 (20:16 +0100)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Wed, 25 Mar 2026 06:06:09 +0000 (08:06 +0200)
Commit 384d2b03d0a1 ("drm/msm/hdmi: make use of the drm_connector_hdmi
framework") changed the unconditional register writes in few places to
updates: read, apply mask, write.  The new code reads
REG_HDMI_INFOFRAME_CTRL1 register, applies fields/mask for
HDMI_INFOFRAME_CTRL0 register and finally writes to
HDMI_INFOFRAME_CTRL0.  This difference between CTRL1 and CTRL0 looks
unintended and may result in wrong data being written to HDMI bridge
registers.

Cc: <stable@vger.kernel.org>
Fixes: 384d2b03d0a1 ("drm/msm/hdmi: make use of the drm_connector_hdmi framework")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/711156/
Link: https://lore.kernel.org/r/20260311191620.245394-2-krzysztof.kozlowski@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c

index 46fd58646d32fd0611192595826a3aa680bd0d02..93a491a103e0a8dd8bdae50af6e27e3001c4a2a5 100644 (file)
@@ -80,7 +80,7 @@ static int msm_hdmi_config_avi_infoframe(struct hdmi *hdmi,
        for (i = 0; i < ARRAY_SIZE(buf); i++)
                hdmi_write(hdmi, REG_HDMI_AVI_INFO(i), buf[i]);
 
-       val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1);
+       val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0);
        val |= HDMI_INFOFRAME_CTRL0_AVI_SEND |
                HDMI_INFOFRAME_CTRL0_AVI_CONT;
        hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL0, val);
@@ -116,7 +116,7 @@ static int msm_hdmi_config_audio_infoframe(struct hdmi *hdmi,
                   buffer[9] << 16 |
                   buffer[10] << 24);
 
-       val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1);
+       val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0);
        val |= HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SEND |
                HDMI_INFOFRAME_CTRL0_AUDIO_INFO_CONT |
                HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SOURCE |