]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/hdcp: Use HDCP2_STREAM_STATUS instead of HDCP2_AUTH_STREAM
authorSuraj Kandpal <suraj.kandpal@intel.com>
Thu, 19 Jun 2025 11:33:40 +0000 (17:03 +0530)
committerSuraj Kandpal <suraj.kandpal@intel.com>
Tue, 24 Jun 2025 04:53:30 +0000 (10:23 +0530)
From PTL we need to move to using HDCP2_STREAM_STATUS as a WARN_ON
to see if written content type info is not the same since
HDCP2_AUTH_STREAM is inaccessible to us now.

--v2
-Fix commit message [Jani]

Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://lore.kernel.org/r/20250619113340.3379200-3-suraj.kandpal@intel.com
drivers/gpu/drm/i915/display/intel_dp_hdcp.c
drivers/gpu/drm/i915/display/intel_hdcp_regs.h

index 70dafaa2afadc627de2ac1775927ac3389f72143..bd757db8592742d63d0c27654adb1cd6b690b5b7 100644 (file)
@@ -808,10 +808,13 @@ intel_dp_mst_hdcp2_stream_encryption(struct intel_connector *connector,
        u32 val;
        u8 stream_type;
 
-       val = intel_de_read(display, HDCP2_AUTH_STREAM(display, cpu_transcoder, port));
-       stream_type = REG_FIELD_GET(AUTH_STREAM_TYPE_MASK, val);
-       drm_WARN_ON(display->drm, enable &&
-                   stream_type != data->streams[0].stream_type);
+       if (DISPLAY_VER(display) < 30) {
+               val = intel_de_read(display,
+                                   HDCP2_AUTH_STREAM(display, cpu_transcoder, port));
+               stream_type = REG_FIELD_GET(AUTH_STREAM_TYPE_MASK, val);
+               drm_WARN_ON(display->drm, enable &&
+                           stream_type != data->streams[0].stream_type);
+       }
 
        ret = intel_dp_mst_toggle_hdcp_stream_select(connector, enable);
        if (ret)
@@ -827,6 +830,14 @@ intel_dp_mst_hdcp2_stream_encryption(struct intel_connector *connector,
                return -ETIMEDOUT;
        }
 
+       if (DISPLAY_VER(display) >= 30) {
+               val = intel_de_read(display,
+                                   HDCP2_STREAM_STATUS(display, cpu_transcoder, port));
+               stream_type = REG_FIELD_GET(STREAM_TYPE_STATUS_MASK, val);
+               drm_WARN_ON(display->drm, enable &&
+                           stream_type != data->streams[0].stream_type);
+       }
+
        return 0;
 }
 
index 8b9b87910a9eecc733d3eb60f9fcd8a2a8f79950..112ce8c896d639673f9bf7d79a0e902b1b4039b1 100644 (file)
                                                    _TRANSA_HDCP2_STREAM_STATUS, \
                                                    _TRANSB_HDCP2_STREAM_STATUS)
 #define   STREAM_ENCRYPTION_STATUS     REG_BIT(31)
-#define   STREAM_TYPE_STATUS           REG_BIT(30)
+#define   STREAM_TYPE_STATUS_MASK      REG_GENMASK(30, 30)
 #define HDCP2_STREAM_STATUS(dev_priv, trans, port) \
                                        (TRANS_HDCP(dev_priv) ? \
                                         TRANS_HDCP2_STREAM_STATUS(trans) : \