-----Original Message----- From: Sean Paul sean@poorly.run Sent: Tuesday, June 23, 2020 9:29 PM To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org Cc: Li, Juston juston.li@intel.com; C, Ramalingam ramalingam.c@intel.com; ville.syrjala@linux.intel.com; jani.nikula@linux.intel.com; joonas.lahtinen@linux.intel.com; Vivi, Rodrigo rodrigo.vivi@intel.com; daniel.vetter@ffwll.ch; Sean Paul seanpaul@chromium.org Subject: [PATCH v7 14/17] drm/i915: Add connector to hdcp_shim->check_link()
From: Sean Paul seanpaul@chromium.org
Currently we derive the connector from digital port in check_link(). For MST, this isn't sufficient since the digital port passed into the function can have multiple connectors downstream. This patch adds connector to the check_link() arguments so we have it when we need it.
Signed-off-by: Sean Paul seanpaul@chromium.org
Reviewed-by: Ramalingam C ramalingam.c@intel.com
Link: https://patchwork.freedesktop.org/patch/msgid/20200218220242.107265-13- sean@poorly.run #v4 Link: https://patchwork.freedesktop.org/patch/msgid/20200305201236.152307-14- sean@poorly.run #v5 Link: https://patchwork.freedesktop.org/patch/msgid/20200429195502.39919- 14-sean@poorly.run #v6
Changes in v4: -Added to the set Changes in v5: -None Changes in v6: -None Changes in v7:
-None
drivers/gpu/drm/i915/display/intel_display_types.h | 3 ++- drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 3 ++- drivers/gpu/drm/i915/display/intel_hdcp.c | 2 +- drivers/gpu/drm/i915/display/intel_hdmi.c | 5 ++--- 4 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h index 811085ef3fba..94211b8fc159 100644 --- a/drivers/gpu/drm/i915/display/intel_display_types.h +++ b/drivers/gpu/drm/i915/display/intel_display_types.h @@ -318,7 +318,8 @@ struct intel_hdcp_shim { bool enable);
/* Ensures the link is still protected */
- bool (*check_link)(struct intel_digital_port *intel_dig_port);
bool (*check_link)(struct intel_digital_port *intel_dig_port,
struct intel_connector *connector);
/* Detects panel's hdcp capability. This is optional for HDMI. */ int (*hdcp_capable)(struct intel_digital_port *intel_dig_port, diff --git
a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c index e26a45f880cb..43446a6cae8d 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_hdcp.c +++ b/drivers/gpu/drm/i915/display/intel_dp_hdcp.c @@ -223,7 +223,8 @@ int intel_dp_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port, }
static -bool intel_dp_hdcp_check_link(struct intel_digital_port *intel_dig_port) +bool intel_dp_hdcp_check_link(struct intel_digital_port *intel_dig_port,
struct intel_connector *connector)
{ struct drm_i915_private *i915 = to_i915(intel_dig_port-
base.base.dev);
ssize_t ret; diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c index d79d4142aea7..6bd0e4616ee1 100644 --- a/drivers/gpu/drm/i915/display/intel_hdcp.c +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c @@ -953,7 +953,7 @@ static int intel_hdcp_check_link(struct intel_connector *connector) goto out; }
- if (hdcp->shim->check_link(intel_dig_port)) {
- if (hdcp->shim->check_link(intel_dig_port, connector)) { if (hdcp->value !=
DRM_MODE_CONTENT_PROTECTION_UNDESIRED) { intel_hdcp_update_value(connector,
DRM_MODE_CONTENT_PROTECTION_ENABLED, true); diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c index ca71ee3dd1c7..b12f1af0611d 100644 --- a/drivers/gpu/drm/i915/display/intel_hdmi.c +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c @@ -1546,11 +1546,10 @@ int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port, }
static -bool intel_hdmi_hdcp_check_link(struct intel_digital_port *intel_dig_port) +bool intel_hdmi_hdcp_check_link(struct intel_digital_port *intel_dig_port,
struct intel_connector *connector)
{ struct drm_i915_private *i915 = to_i915(intel_dig_port-
base.base.dev);
- struct intel_connector *connector =
enum port port = intel_dig_port->base.port; enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; int ret;intel_dig_port->hdmi.attached_connector;
-- Sean Paul, Software Engineer, Google / Chromium OS