From: Jani Nikula Date: Thu, 24 Apr 2025 20:01:41 +0000 (+0300) Subject: drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code X-Git-Tag: v6.16-rc1~144^2~12^2~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c526ac45e7b90521ebb49a22d40f7268cd01b0c3;p=thirdparty%2Flinux.git drm/i915/hdcp: pass struct drm_device to driver specific HDCP GSC code The driver specific HDCP GSC code will eventually be part of the driver cores rather than display. Remove the struct intel_display references from them, and pass struct drm_device instead. Cc: Suraj Kandpal Reviewed-by: Suraj Kandpal Link: https://lore.kernel.org/r/bf9aa8e44e18eef41e3077a2966935b4e2649b62.1745524803.git.jani.nikula@intel.com Signed-off-by: Jani Nikula --- diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c index 39bcf8f3d8100..3e3038f4ee1f8 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c @@ -254,7 +254,7 @@ static bool intel_hdcp2_prerequisite(struct intel_connector *connector) /* If MTL+ make sure gsc is loaded and proxy is setup */ if (USE_HDCP_GSC(display)) { - if (!intel_hdcp_gsc_check_status(display)) + if (!intel_hdcp_gsc_check_status(display->drm)) return false; } diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c index 4194ef77f7c38..6a22862d6be10 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.c @@ -19,14 +19,14 @@ struct intel_hdcp_gsc_context { void *hdcp_cmd_out; }; -bool intel_hdcp_gsc_check_status(struct intel_display *display) +bool intel_hdcp_gsc_check_status(struct drm_device *drm) { - struct drm_i915_private *i915 = to_i915(display->drm); + struct drm_i915_private *i915 = to_i915(drm); struct intel_gt *gt = i915->media_gt; struct intel_gsc_uc *gsc = gt ? >->uc.gsc : NULL; if (!gsc || !intel_uc_fw_is_running(&gsc->fw)) { - drm_dbg_kms(display->drm, + drm_dbg_kms(&i915->drm, "GSC components required for HDCP2.2 are not ready\n"); return false; } @@ -87,9 +87,9 @@ out_unpin: return err; } -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display) +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct drm_device *drm) { - struct drm_i915_private *i915 = to_i915(display->drm); + struct drm_i915_private *i915 = to_i915(drm); struct intel_hdcp_gsc_context *gsc_context; int ret; @@ -103,7 +103,7 @@ struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display */ ret = intel_hdcp_gsc_initialize_message(i915, gsc_context); if (ret) { - drm_err(display->drm, "Could not initialize gsc_context\n"); + drm_err(&i915->drm, "Could not initialize gsc_context\n"); kfree(gsc_context); gsc_context = ERR_PTR(ret); } diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h index e963c1fcc39ec..e014336aa2e48 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc.h @@ -9,15 +9,15 @@ #include #include -struct intel_display; +struct drm_device; struct intel_hdcp_gsc_context; 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); -bool intel_hdcp_gsc_check_status(struct intel_display *display); +bool intel_hdcp_gsc_check_status(struct drm_device *drm); -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display); +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct drm_device *drm); void intel_hdcp_gsc_context_free(struct intel_hdcp_gsc_context *gsc_context); #endif /* __INTEL_HDCP_GCS_H__ */ diff --git a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c index 4226e8705d2b3..98967bb148e38 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c @@ -645,7 +645,7 @@ int intel_hdcp_gsc_init(struct intel_display *display) mutex_lock(&display->hdcp.hdcp_mutex); - gsc_context = intel_hdcp_gsc_context_alloc(display); + gsc_context = intel_hdcp_gsc_context_alloc(display->drm); if (IS_ERR(gsc_context)) { ret = PTR_ERR(gsc_context); kfree(arbiter); diff --git a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c index 078916072c107..b35a6f201d4a7 100644 --- a/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +++ b/drivers/gpu/drm/xe/display/xe_hdcp_gsc.c @@ -30,9 +30,9 @@ struct intel_hdcp_gsc_context { #define HDCP_GSC_HEADER_SIZE sizeof(struct intel_gsc_mtl_header) -bool intel_hdcp_gsc_check_status(struct intel_display *display) +bool intel_hdcp_gsc_check_status(struct drm_device *drm) { - struct xe_device *xe = to_xe_device(display->drm); + struct xe_device *xe = to_xe_device(drm); struct xe_tile *tile = xe_device_get_root_tile(xe); struct xe_gt *gt = tile->media_gt; struct xe_gsc *gsc = >->uc.gsc; @@ -64,10 +64,9 @@ out: } /*This function helps allocate memory for the command that we will send to gsc cs */ -static int intel_hdcp_gsc_initialize_message(struct intel_display *display, +static int intel_hdcp_gsc_initialize_message(struct xe_device *xe, struct intel_hdcp_gsc_context *gsc_context) { - struct xe_device *xe = to_xe_device(display->drm); struct xe_bo *bo = NULL; u64 cmd_in, cmd_out; int ret = 0; @@ -79,7 +78,7 @@ static int intel_hdcp_gsc_initialize_message(struct intel_display *display, XE_BO_FLAG_GGTT); if (IS_ERR(bo)) { - drm_err(display->drm, "Failed to allocate bo for HDCP streaming command!\n"); + drm_err(&xe->drm, "Failed to allocate bo for HDCP streaming command!\n"); ret = PTR_ERR(bo); goto out; } @@ -97,8 +96,9 @@ out: return ret; } -struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display *display) +struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct drm_device *drm) { + struct xe_device *xe = to_xe_device(drm); struct intel_hdcp_gsc_context *gsc_context; int ret; @@ -110,9 +110,9 @@ struct intel_hdcp_gsc_context *intel_hdcp_gsc_context_alloc(struct intel_display * NOTE: No need to lock the comp mutex here as it is already * going to be taken before this function called */ - ret = intel_hdcp_gsc_initialize_message(display, gsc_context); + ret = intel_hdcp_gsc_initialize_message(xe, gsc_context); if (ret) { - drm_err(display->drm, "Could not initialize gsc_context\n"); + drm_err(&xe->drm, "Could not initialize gsc_context\n"); kfree(gsc_context); gsc_context = ERR_PTR(ret); }