All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Paul <sean@poorly.run>
To: dri-devel@lists.freedesktop.org, jani.nikula@intel.com,
	intel-gfx@lists.freedesktop.org, freedreno@lists.freedesktop.org,
	rodrigo.vivi@intel.com
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	David Airlie <airlied@linux.ie>,
	markyacoub@chromium.org, swboyd@chromium.org,
	Sean Paul <seanpaul@chromium.org>,
	abhinavk@codeaurora.org, bjorn.andersson@linaro.org
Subject: [PATCH v5 05/10] drm/i915/hdcp: Consolidate HDCP setup/state cache
Date: Mon, 11 Apr 2022 20:47:34 +0000	[thread overview]
Message-ID: <20220411204741.1074308-6-sean@poorly.run> (raw)
In-Reply-To: <20220411204741.1074308-1-sean@poorly.run>

From: Sean Paul <seanpaul@chromium.org>

Stick all of the setup for HDCP into a dedicated function. No functional
change, but this will facilitate moving HDCP logic into helpers.

Acked-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-6-sean@poorly.run #v1
Link: https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-6-sean@poorly.run #v2
Link: https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-6-sean@poorly.run #v3
Link: https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-6-sean@poorly.run #v4

Changes in v2:
-None
Changes in v3:
-None
Changes in v4:
-None
Changes in v5:
-None
---
 drivers/gpu/drm/i915/display/intel_hdcp.c | 52 +++++++++++++++--------
 1 file changed, 35 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 861c550b5bd6..6bb5a3971ed9 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -2167,6 +2167,37 @@ static enum mei_fw_tc intel_get_mei_fw_tc(enum transcoder cpu_transcoder)
 	}
 }
 
+static int
+_intel_hdcp_setup(struct intel_connector *connector,
+		  const struct intel_crtc_state *pipe_config, u8 content_type)
+{
+	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+	struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
+	struct intel_hdcp *hdcp = &connector->hdcp;
+	int ret = 0;
+
+	if (!connector->encoder) {
+		drm_err(&dev_priv->drm, "[%s:%d] encoder is not initialized\n",
+			connector->base.name, connector->base.base.id);
+		return -ENODEV;
+	}
+
+	hdcp->content_type = content_type;
+
+	if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
+		hdcp->cpu_transcoder = pipe_config->mst_master_transcoder;
+		hdcp->stream_transcoder = pipe_config->cpu_transcoder;
+	} else {
+		hdcp->cpu_transcoder = pipe_config->cpu_transcoder;
+		hdcp->stream_transcoder = INVALID_TRANSCODER;
+	}
+
+	if (DISPLAY_VER(dev_priv) >= 12)
+		dig_port->hdcp_port_data.fw_tc = intel_get_mei_fw_tc(hdcp->cpu_transcoder);
+
+	return ret;
+}
+
 static int initialize_hdcp_port_data(struct intel_connector *connector,
 				     struct intel_digital_port *dig_port,
 				     const struct intel_hdcp_shim *shim)
@@ -2306,28 +2337,14 @@ int intel_hdcp_enable(struct intel_connector *connector,
 	if (!hdcp->shim)
 		return -ENOENT;
 
-	if (!connector->encoder) {
-		drm_err(&dev_priv->drm, "[%s:%d] encoder is not initialized\n",
-			connector->base.name, connector->base.base.id);
-		return -ENODEV;
-	}
-
 	mutex_lock(&hdcp->mutex);
 	mutex_lock(&dig_port->hdcp_mutex);
 	drm_WARN_ON(&dev_priv->drm,
 		    hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED);
-	hdcp->content_type = content_type;
-
-	if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
-		hdcp->cpu_transcoder = pipe_config->mst_master_transcoder;
-		hdcp->stream_transcoder = pipe_config->cpu_transcoder;
-	} else {
-		hdcp->cpu_transcoder = pipe_config->cpu_transcoder;
-		hdcp->stream_transcoder = INVALID_TRANSCODER;
-	}
 
-	if (DISPLAY_VER(dev_priv) >= 12)
-		dig_port->hdcp_port_data.fw_tc = intel_get_mei_fw_tc(hdcp->cpu_transcoder);
+	ret = _intel_hdcp_setup(connector, pipe_config, content_type);
+	if (ret)
+		goto out;
 
 	/*
 	 * Considering that HDCP2.2 is more secure than HDCP1.4, If the setup
@@ -2355,6 +2372,7 @@ int intel_hdcp_enable(struct intel_connector *connector,
 					true);
 	}
 
+out:
 	mutex_unlock(&dig_port->hdcp_mutex);
 	mutex_unlock(&hdcp->mutex);
 	return ret;
-- 
Sean Paul, Software Engineer, Google / Chromium OS


WARNING: multiple messages have this Message-ID (diff)
From: Sean Paul <sean@poorly.run>
To: dri-devel@lists.freedesktop.org, jani.nikula@intel.com,
	intel-gfx@lists.freedesktop.org, freedreno@lists.freedesktop.org,
	rodrigo.vivi@intel.com
Cc: David Airlie <airlied@linux.ie>,
	markyacoub@chromium.org, swboyd@chromium.org,
	Sean Paul <seanpaul@chromium.org>,
	abhinavk@codeaurora.org, bjorn.andersson@linaro.org
Subject: [Intel-gfx] [PATCH v5 05/10] drm/i915/hdcp: Consolidate HDCP setup/state cache
Date: Mon, 11 Apr 2022 20:47:34 +0000	[thread overview]
Message-ID: <20220411204741.1074308-6-sean@poorly.run> (raw)
In-Reply-To: <20220411204741.1074308-1-sean@poorly.run>

From: Sean Paul <seanpaul@chromium.org>

Stick all of the setup for HDCP into a dedicated function. No functional
change, but this will facilitate moving HDCP logic into helpers.

Acked-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210913175747.47456-6-sean@poorly.run #v1
Link: https://patchwork.freedesktop.org/patch/msgid/20210915203834.1439-6-sean@poorly.run #v2
Link: https://patchwork.freedesktop.org/patch/msgid/20211001151145.55916-6-sean@poorly.run #v3
Link: https://patchwork.freedesktop.org/patch/msgid/20211105030434.2828845-6-sean@poorly.run #v4

Changes in v2:
-None
Changes in v3:
-None
Changes in v4:
-None
Changes in v5:
-None
---
 drivers/gpu/drm/i915/display/intel_hdcp.c | 52 +++++++++++++++--------
 1 file changed, 35 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
index 861c550b5bd6..6bb5a3971ed9 100644
--- a/drivers/gpu/drm/i915/display/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
@@ -2167,6 +2167,37 @@ static enum mei_fw_tc intel_get_mei_fw_tc(enum transcoder cpu_transcoder)
 	}
 }
 
+static int
+_intel_hdcp_setup(struct intel_connector *connector,
+		  const struct intel_crtc_state *pipe_config, u8 content_type)
+{
+	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+	struct intel_digital_port *dig_port = intel_attached_dig_port(connector);
+	struct intel_hdcp *hdcp = &connector->hdcp;
+	int ret = 0;
+
+	if (!connector->encoder) {
+		drm_err(&dev_priv->drm, "[%s:%d] encoder is not initialized\n",
+			connector->base.name, connector->base.base.id);
+		return -ENODEV;
+	}
+
+	hdcp->content_type = content_type;
+
+	if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
+		hdcp->cpu_transcoder = pipe_config->mst_master_transcoder;
+		hdcp->stream_transcoder = pipe_config->cpu_transcoder;
+	} else {
+		hdcp->cpu_transcoder = pipe_config->cpu_transcoder;
+		hdcp->stream_transcoder = INVALID_TRANSCODER;
+	}
+
+	if (DISPLAY_VER(dev_priv) >= 12)
+		dig_port->hdcp_port_data.fw_tc = intel_get_mei_fw_tc(hdcp->cpu_transcoder);
+
+	return ret;
+}
+
 static int initialize_hdcp_port_data(struct intel_connector *connector,
 				     struct intel_digital_port *dig_port,
 				     const struct intel_hdcp_shim *shim)
@@ -2306,28 +2337,14 @@ int intel_hdcp_enable(struct intel_connector *connector,
 	if (!hdcp->shim)
 		return -ENOENT;
 
-	if (!connector->encoder) {
-		drm_err(&dev_priv->drm, "[%s:%d] encoder is not initialized\n",
-			connector->base.name, connector->base.base.id);
-		return -ENODEV;
-	}
-
 	mutex_lock(&hdcp->mutex);
 	mutex_lock(&dig_port->hdcp_mutex);
 	drm_WARN_ON(&dev_priv->drm,
 		    hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED);
-	hdcp->content_type = content_type;
-
-	if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
-		hdcp->cpu_transcoder = pipe_config->mst_master_transcoder;
-		hdcp->stream_transcoder = pipe_config->cpu_transcoder;
-	} else {
-		hdcp->cpu_transcoder = pipe_config->cpu_transcoder;
-		hdcp->stream_transcoder = INVALID_TRANSCODER;
-	}
 
-	if (DISPLAY_VER(dev_priv) >= 12)
-		dig_port->hdcp_port_data.fw_tc = intel_get_mei_fw_tc(hdcp->cpu_transcoder);
+	ret = _intel_hdcp_setup(connector, pipe_config, content_type);
+	if (ret)
+		goto out;
 
 	/*
 	 * Considering that HDCP2.2 is more secure than HDCP1.4, If the setup
@@ -2355,6 +2372,7 @@ int intel_hdcp_enable(struct intel_connector *connector,
 					true);
 	}
 
+out:
 	mutex_unlock(&dig_port->hdcp_mutex);
 	mutex_unlock(&hdcp->mutex);
 	return ret;
-- 
Sean Paul, Software Engineer, Google / Chromium OS


  parent reply	other threads:[~2022-04-11 20:48 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-11 20:47 [PATCH v5 00/10] drm/hdcp: Pull HDCP auth/exchange/check into helpers Sean Paul
2022-04-11 20:47 ` [Intel-gfx] " Sean Paul
2022-04-11 20:47 ` [PATCH v5 01/10] drm/hdcp: Add drm_hdcp_atomic_check() Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-12 13:15   ` Rodrigo Vivi
2022-04-12 13:15     ` [Intel-gfx] " Rodrigo Vivi
2022-04-11 20:47 ` [PATCH v5 02/10] drm/hdcp: Avoid changing crtc state in hdcp atomic check Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-12 13:20   ` Rodrigo Vivi
2022-04-12 13:20     ` [Intel-gfx] " Rodrigo Vivi
2022-04-11 20:47 ` [PATCH v5 03/10] drm/hdcp: Update property value on content type and user changes Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-12 13:25   ` Rodrigo Vivi
2022-04-12 13:25     ` [Intel-gfx] " Rodrigo Vivi
2022-04-14 15:58     ` Sean Paul
2022-04-14 15:58       ` Sean Paul
2022-04-14 21:44       ` Rodrigo Vivi
2022-04-14 21:44         ` [Intel-gfx] " Rodrigo Vivi
2022-04-11 20:47 ` [PATCH v5 04/10] drm/hdcp: Expand HDCP helper library for enable/disable/check Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-12  1:52   ` kernel test robot
2022-04-12  1:52     ` kernel test robot
2022-04-11 20:47 ` Sean Paul [this message]
2022-04-11 20:47   ` [Intel-gfx] [PATCH v5 05/10] drm/i915/hdcp: Consolidate HDCP setup/state cache Sean Paul
2022-04-12 13:37   ` Rodrigo Vivi
2022-04-12 13:37     ` [Intel-gfx] " Rodrigo Vivi
2022-04-11 20:47 ` [PATCH v5 06/10] drm/i915/hdcp: Retain hdcp_capable return codes Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-12 13:36   ` Rodrigo Vivi
2022-04-12 13:36     ` [Intel-gfx] " Rodrigo Vivi
2022-04-11 20:47 ` [PATCH v5 07/10] drm/i915/hdcp: Use HDCP helpers for i915 Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-11 20:47 ` [PATCH v5 08/10] dt-bindings: msm/dp: Add bindings for HDCP registers Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-11 20:47   ` Sean Paul
2022-04-11 20:47 ` [PATCH v5 09/10] arm64: dts: qcom: sc7180: Add support for HDCP in dp-controller Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-11 20:47   ` Sean Paul
2022-04-20  3:10   ` Bjorn Andersson
2022-04-20  3:10     ` [Intel-gfx] " Bjorn Andersson
2022-04-20  3:10     ` Bjorn Andersson
2022-04-11 20:47 ` [PATCH v5 10/10] drm/msm: Implement HDCP 1.x using the new drm HDCP helpers Sean Paul
2022-04-11 20:47   ` [Intel-gfx] " Sean Paul
2022-04-11 20:47   ` Sean Paul
2022-04-12  0:30   ` kernel test robot
2022-04-12  0:30     ` [Intel-gfx] " kernel test robot
2022-05-11 18:40   ` Dmitry Baryshkov
2022-05-11 18:40     ` Dmitry Baryshkov
2022-04-12 13:41 ` [PATCH v5 00/10] drm/hdcp: Pull HDCP auth/exchange/check into helpers Rodrigo Vivi
2022-04-12 13:41   ` [Intel-gfx] " Rodrigo Vivi
2022-04-14 16:00   ` Sean Paul
2022-04-14 16:00     ` [Intel-gfx] " Sean Paul
2022-06-15 12:53 ` [Freedreno] " Dmitry Baryshkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220411204741.1074308-6-sean@poorly.run \
    --to=sean@poorly.run \
    --cc=abhinavk@codeaurora.org \
    --cc=airlied@linux.ie \
    --cc=bjorn.andersson@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=markyacoub@chromium.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=seanpaul@chromium.org \
    --cc=swboyd@chromium.org \
    --cc=tvrtko.ursulin@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.