]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/hdcp: simplify HDCP GSC firmware usage selection
authorJani Nikula <jani.nikula@intel.com>
Thu, 24 Apr 2025 20:01:40 +0000 (23:01 +0300)
committerJani Nikula <jani.nikula@intel.com>
Fri, 2 May 2025 10:26:19 +0000 (13:26 +0300)
Just localize the GSC decision inside intel_hdcp.c, and deduplicate the
conditions.

Cc: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Link: https://lore.kernel.org/r/a1d031bfbff7073e576dfe8d3d3d5a28d7bb2c15.1745524803.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_hdcp.c
drivers/gpu/drm/i915/display/intel_hdcp_gsc.c
drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
drivers/gpu/drm/xe/display/xe_hdcp_gsc.c

index 4857685c4020d3d44a599321ff9c46ef06e7639a..39bcf8f3d8100a5b6d3e050b31dece2b65a1df91 100644 (file)
@@ -32,6 +32,8 @@
 #include "intel_hdcp_shim.h"
 #include "intel_pcode.h"
 
+#define USE_HDCP_GSC(__display)                (DISPLAY_VER(__display) >= 14)
+
 #define KEY_LOAD_TRIES 5
 #define HDCP2_LC_RETRY_CNT                     3
 
@@ -251,7 +253,7 @@ static bool intel_hdcp2_prerequisite(struct intel_connector *connector)
                return false;
 
        /* If MTL+ make sure gsc is loaded and proxy is setup */
-       if (intel_hdcp_gsc_cs_required(display)) {
+       if (USE_HDCP_GSC(display)) {
                if (!intel_hdcp_gsc_check_status(display))
                        return false;
        }
@@ -2340,7 +2342,7 @@ static int initialize_hdcp_port_data(struct intel_connector *connector,
 
 static bool is_hdcp2_supported(struct intel_display *display)
 {
-       if (intel_hdcp_gsc_cs_required(display))
+       if (USE_HDCP_GSC(display))
                return true;
 
        if (!IS_ENABLED(CONFIG_INTEL_MEI_HDCP))
@@ -2364,7 +2366,7 @@ void intel_hdcp_component_init(struct intel_display *display)
 
        display->hdcp.comp_added = true;
        mutex_unlock(&display->hdcp.hdcp_mutex);
-       if (intel_hdcp_gsc_cs_required(display))
+       if (USE_HDCP_GSC(display))
                ret = intel_hdcp_gsc_init(display);
        else
                ret = component_add_typed(display->drm->dev, &i915_hdcp_ops,
@@ -2639,7 +2641,7 @@ void intel_hdcp_component_fini(struct intel_display *display)
        display->hdcp.comp_added = false;
        mutex_unlock(&display->hdcp.hdcp_mutex);
 
-       if (intel_hdcp_gsc_cs_required(display))
+       if (USE_HDCP_GSC(display))
                intel_hdcp_gsc_fini(display);
        else
                component_del(display->drm->dev, &i915_hdcp_ops);
index 1ea2c7204444379762cad40ed715cf90d4fd6b9d..4194ef77f7c386b4fa5ab27a54ff3e4d20e91a14 100644 (file)
@@ -19,11 +19,6 @@ struct intel_hdcp_gsc_context {
        void *hdcp_cmd_out;
 };
 
-bool intel_hdcp_gsc_cs_required(struct intel_display *display)
-{
-       return DISPLAY_VER(display) >= 14;
-}
-
 bool intel_hdcp_gsc_check_status(struct intel_display *display)
 {
        struct drm_i915_private *i915 = to_i915(display->drm);
index fbef56db54f2554be091bbd08f58aebf4520a7f8..e963c1fcc39ec49e39a7419b8de86205caea23b0 100644 (file)
@@ -12,7 +12,6 @@
 struct intel_display;
 struct intel_hdcp_gsc_context;
 
-bool intel_hdcp_gsc_cs_required(struct intel_display *display);
 ssize_t intel_hdcp_gsc_msg_send(struct intel_hdcp_gsc_context *gsc_context,
                                void *msg_in, size_t msg_in_len,
                                void *msg_out, size_t msg_out_len);
index 7712d53627f02b78162982849d753ffc9d4d9b0e..078916072c107717dd9c4b5349b836f7dc055994 100644 (file)
@@ -30,11 +30,6 @@ struct intel_hdcp_gsc_context {
 
 #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header)
 
-bool intel_hdcp_gsc_cs_required(struct intel_display *display)
-{
-       return DISPLAY_VER(display) >= 14;
-}
-
 bool intel_hdcp_gsc_check_status(struct intel_display *display)
 {
        struct xe_device *xe = to_xe_device(display->drm);