From: Ramalingam C <ramalingam.c@intel.com>
To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
daniel.vetter@ffwll.ch, tomas.winkler@intel.com,
uma.shankar@intel.com
Subject: [PATCH v10 05/40] drm/i915: Initialize HDCP2.2
Date: Thu, 31 Jan 2019 12:29:21 +0530 [thread overview]
Message-ID: <1548917996-28081-6-git-send-email-ramalingam.c@intel.com> (raw)
In-Reply-To: <1548917996-28081-1-git-send-email-ramalingam.c@intel.com>
Add the HDCP2.2 initialization to the existing HDCP1.4 stack.
v2:
mei interface handle is protected with mutex. [Chris Wilson]
v3:
Notifiers are used for the mei interface state.
v4:
Poll for mei client device state
Error msg for out of mem [Uma]
Inline req for init function removed [Uma]
v5:
Rebase as Part of reordering.
Component is used for the I915 and MEI_HDCP interface [Daniel]
v6:
HDCP2.2 uses the I915 component master to communicate with mei_hdcp
- [Daniel]
Required HDCP2.2 variables defined [Sean Paul]
v7:
intel_hdcp2.2_init returns void [Uma]
Realigning the codes.
v8:
Avoid using bool structure members.
MEI interface related changes are moved into separate patch.
Commit msg is updated accordingly.
intel_hdcp_exit is defined and used from i915_unload
v9:
Movement of the hdcp_check_link is moved to new patch [Daniel]
intel_hdcp2_exit is removed as mei_comp will be unbind in i915_unload.
v10:
bool is used in struct to make coding simpler. [Daniel]
hdmi hdcp init is placed correctly after encoder attachment.
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/intel_dp.c | 3 ++-
drivers/gpu/drm/i915/intel_drv.h | 15 ++++++++++++++-
drivers/gpu/drm/i915/intel_hdcp.c | 33 ++++++++++++++++++++++++++++++---
drivers/gpu/drm/i915/intel_hdmi.c | 8 ++++----
4 files changed, 50 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 681e88405ada..815ee68efa2f 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -6950,7 +6950,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
intel_dp_add_properties(intel_dp, connector);
if (is_hdcp_supported(dev_priv, port) && !intel_dp_is_edp(intel_dp)) {
- int ret = intel_hdcp_init(intel_connector, &intel_dp_hdcp_shim);
+ int ret = intel_hdcp_init(intel_connector, &intel_dp_hdcp_shim,
+ false);
if (ret)
DRM_DEBUG_KMS("HDCP init failed, skipping.\n");
}
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 90ba5436370e..0ac870feb5e9 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -394,6 +394,17 @@ struct intel_hdcp {
u64 value;
struct delayed_work check_work;
struct work_struct prop_work;
+
+ /* HDCP2.2 related definitions */
+ /* Flag indicates whether this connector supports HDCP2.2 or not. */
+ bool hdcp2_supported;
+
+ /*
+ * Content Stream Type defined by content owner. TYPE0(0x0) content can
+ * flow in the link protected by HDCP2.2 or HDCP1.4, where as TYPE1(0x1)
+ * content can flow only through a link protected by HDCP2.2.
+ */
+ u8 content_type;
};
struct intel_connector {
@@ -2053,12 +2064,14 @@ void intel_hdcp_atomic_check(struct drm_connector *connector,
struct drm_connector_state *old_state,
struct drm_connector_state *new_state);
int intel_hdcp_init(struct intel_connector *connector,
- const struct intel_hdcp_shim *hdcp_shim);
+ const struct intel_hdcp_shim *hdcp_shim,
+ bool hdcp2_supported);
int intel_hdcp_enable(struct intel_connector *connector);
int intel_hdcp_disable(struct intel_connector *connector);
int intel_hdcp_check_link(struct intel_connector *connector);
bool is_hdcp_supported(struct drm_i915_private *dev_priv, enum port port);
bool intel_hdcp_capable(struct intel_connector *connector);
+bool is_hdcp2_supported(struct drm_i915_private *dev_priv);
/* intel_psr.c */
#define CAN_PSR(dev_priv) (HAS_PSR(dev_priv) && dev_priv->psr.sink_support)
diff --git a/drivers/gpu/drm/i915/intel_hdcp.c b/drivers/gpu/drm/i915/intel_hdcp.c
index 8cb85b07cfde..1a85dc46692d 100644
--- a/drivers/gpu/drm/i915/intel_hdcp.c
+++ b/drivers/gpu/drm/i915/intel_hdcp.c
@@ -832,14 +832,37 @@ bool is_hdcp_supported(struct drm_i915_private *dev_priv, enum port port)
return INTEL_GEN(dev_priv) >= 9 && port < PORT_E;
}
+bool is_hdcp2_supported(struct drm_i915_private *dev_priv)
+{
+ if (!IS_ENABLED(CONFIG_INTEL_MEI_HDCP))
+ return false;
+
+ return (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv) ||
+ IS_KABYLAKE(dev_priv));
+}
+
+static void intel_hdcp2_init(struct intel_connector *connector)
+{
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+ struct intel_hdcp *hdcp = &connector->hdcp;
+
+ WARN_ON(!is_hdcp2_supported(dev_priv));
+
+ /* TODO: MEI interface needs to be initialized here */
+ hdcp->hdcp2_supported = true;
+}
+
int intel_hdcp_init(struct intel_connector *connector,
- const struct intel_hdcp_shim *shim)
+ const struct intel_hdcp_shim *shim,
+ bool hdcp2_supported)
{
struct intel_hdcp *hdcp = &connector->hdcp;
int ret;
- ret = drm_connector_attach_content_protection_property(
- &connector->base);
+ if (!shim)
+ return -EINVAL;
+
+ ret = drm_connector_attach_content_protection_property(&connector->base);
if (ret)
return ret;
@@ -847,6 +870,10 @@ int intel_hdcp_init(struct intel_connector *connector,
mutex_init(&hdcp->mutex);
INIT_DELAYED_WORK(&hdcp->check_work, intel_hdcp_check_work);
INIT_WORK(&hdcp->prop_work, intel_hdcp_prop_work);
+
+ if (hdcp2_supported)
+ intel_hdcp2_init(connector);
+
return 0;
}
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 97a98e1bea56..ab376a31cdab 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -2427,16 +2427,16 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
intel_hdmi_add_properties(intel_hdmi, connector);
+ intel_connector_attach_encoder(intel_connector, intel_encoder);
+ intel_hdmi->attached_connector = intel_connector;
+
if (is_hdcp_supported(dev_priv, port)) {
int ret = intel_hdcp_init(intel_connector,
- &intel_hdmi_hdcp_shim);
+ &intel_hdmi_hdcp_shim, false);
if (ret)
DRM_DEBUG_KMS("HDCP init failed, skipping.\n");
}
- intel_connector_attach_encoder(intel_connector, intel_encoder);
- intel_hdmi->attached_connector = intel_connector;
-
/* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written
* 0xd. Failure to do so will result in spurious interrupts being
* generated on the port when a cable is not attached.
--
2.7.4
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-01-31 6:59 UTC|newest]
Thread overview: 116+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-31 6:59 [PATCH v10 00/40] drm/i915: Implement HDCP2.2 Ramalingam C
2019-01-31 6:59 ` [PATCH v10 01/40] components: multiple components for a device Ramalingam C
2019-01-31 7:50 ` Greg Kroah-Hartman
2019-01-31 8:00 ` Daniel Vetter
2019-01-31 8:12 ` Greg Kroah-Hartman
2019-01-31 8:39 ` Daniel Vetter
2019-01-31 14:46 ` [PATCH 1/2] component: Add documentation Daniel Vetter
2019-01-31 14:46 ` [PATCH 2/2] components: multiple components for a device Daniel Vetter
2019-02-04 16:00 ` Daniel Vetter
2019-02-05 10:47 ` [PATCH 1/2] component: Add documentation Rafael J. Wysocki
2019-02-05 16:20 ` Daniel Vetter
2019-02-05 16:21 ` [PATCH] " Daniel Vetter
2019-02-05 16:49 ` Russell King - ARM Linux admin
2019-02-05 18:45 ` Daniel Vetter
2019-02-06 16:45 ` [PATCH 1/3] " Daniel Vetter
2019-02-06 16:45 ` [PATCH 2/3] components: multiple components for a device Daniel Vetter
2019-02-06 22:57 ` Rafael J. Wysocki
2019-02-07 22:35 ` Daniel Vetter
2019-02-07 22:40 ` Daniel Vetter
2019-02-07 22:48 ` Rafael J. Wysocki
2019-02-06 16:45 ` [PATCH 3/3] drm/doc: document recommended component helper usage Daniel Vetter
2019-02-06 16:47 ` [PATCH] component: Add documentation Daniel Vetter
2019-02-06 22:01 ` Rafael J. Wysocki
2019-01-31 6:59 ` [PATCH v10 02/40] i915/snd_hdac: I915 subcomponent for the snd_hdac Ramalingam C
2019-02-04 15:00 ` Daniel Vetter
2019-02-04 15:09 ` Takashi Iwai
2019-01-31 6:59 ` [PATCH v10 03/40] drm/i915: Gathering the HDCP1.4 routines together Ramalingam C
2019-02-04 13:11 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 04/40] drm: header for i915 - MEI_HDCP interface Ramalingam C
2019-02-04 13:24 ` Shankar, Uma
2019-01-31 6:59 ` Ramalingam C [this message]
2019-02-04 13:29 ` [PATCH v10 05/40] drm/i915: Initialize HDCP2.2 Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 06/40] drm/i915: MEI interface definition Ramalingam C
2019-01-31 8:17 ` Daniel Vetter
2019-01-31 13:39 ` C, Ramalingam
2019-01-31 6:59 ` [PATCH v10 07/40] drm/i915: hdcp1.4 CP_IRQ handling and SW encryption tracking Ramalingam C
2019-01-31 7:56 ` Daniel Vetter
2019-01-31 13:41 ` C, Ramalingam
2019-02-04 14:09 ` Shankar, Uma
2019-02-04 14:43 ` C, Ramalingam
2019-01-31 6:59 ` [PATCH v10 08/40] drm/i915: Enable and Disable of HDCP2.2 Ramalingam C
2019-02-04 14:17 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 09/40] drm/i915: Implement HDCP2.2 receiver authentication Ramalingam C
2019-02-04 14:20 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 10/40] drm: helper functions for hdcp2 seq_num to from u32 Ramalingam C
2019-02-04 14:20 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 11/40] drm/i915: Implement HDCP2.2 repeater authentication Ramalingam C
2019-02-04 14:21 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 12/40] drm: HDCP2.2 link check period Ramalingam C
2019-02-04 14:24 ` Shankar, Uma
2019-02-04 14:50 ` C, Ramalingam
2019-01-31 6:59 ` [PATCH v10 13/40] drm/i915: Implement HDCP2.2 link integrity check Ramalingam C
2019-02-04 14:28 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 14/40] drm/i915: Handle HDCP2.2 downstream topology change Ramalingam C
2019-02-04 14:31 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 15/40] drm: removing the DP Errata msg and its msg id Ramalingam C
2019-01-31 8:02 ` Daniel Vetter
2019-02-04 14:35 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 16/40] drm/i915: Implement the HDCP2.2 support for DP Ramalingam C
2019-02-04 16:02 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 17/40] drm/i915: Implement the HDCP2.2 support for HDMI Ramalingam C
2019-02-04 16:03 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 18/40] drm/i915: CP_IRQ handling for DP HDCP2.2 msgs Ramalingam C
2019-01-31 8:08 ` Daniel Vetter
2019-01-31 12:50 ` Daniel Vetter
2019-01-31 6:59 ` [PATCH v10 19/40] drm/i915: Add HDCP2.2 support for DP connectors Ramalingam C
2019-02-04 16:08 ` Winkler, Tomas
2019-01-31 6:59 ` [PATCH v10 20/40] drm/i915: Add HDCP2.2 support for HDMI connectors Ramalingam C
2019-02-04 16:04 ` Winkler, Tomas
2019-02-04 16:11 ` C, Ramalingam
2019-01-31 6:59 ` [PATCH v10 21/40] mei: bus: whitelist hdcp client Ramalingam C
2019-01-31 6:59 ` [PATCH v10 22/40] mei: bus: export to_mei_cl_device for mei client device drivers Ramalingam C
2019-01-31 6:59 ` [PATCH v10 23/40] misc/mei/hdcp: Client driver for HDCP application Ramalingam C
2019-02-05 12:33 ` Winkler, Tomas
2019-01-31 6:59 ` [PATCH v10 24/40] misc/mei/hdcp: Define ME FW interface for HDCP2.2 Ramalingam C
2019-02-04 16:07 ` Shankar, Uma
2019-02-05 13:01 ` Winkler, Tomas
2019-01-31 6:59 ` [PATCH v10 25/40] misc/mei/hdcp: Initiate Wired HDCP2.2 Tx Session Ramalingam C
2019-02-04 16:09 ` Shankar, Uma
2019-02-05 13:09 ` Winkler, Tomas
2019-02-05 14:13 ` C, Ramalingam
2019-02-06 10:27 ` Winkler, Tomas
2019-02-06 21:14 ` C, Ramalingam
2019-01-31 6:59 ` [PATCH v10 26/40] misc/mei/hdcp: Verify Receiver Cert and prepare km Ramalingam C
2019-02-04 16:10 ` Shankar, Uma
2019-02-06 8:28 ` Winkler, Tomas
2019-01-31 6:59 ` [PATCH v10 27/40] misc/mei/hdcp: Verify H_prime Ramalingam C
2019-02-04 16:11 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 28/40] misc/mei/hdcp: Store the HDCP Pairing info Ramalingam C
2019-02-04 16:13 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 29/40] misc/mei/hdcp: Initiate Locality check Ramalingam C
2019-02-04 16:16 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 30/40] misc/mei/hdcp: Verify L_prime Ramalingam C
2019-02-04 16:16 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 31/40] misc/mei/hdcp: Prepare Session Key Ramalingam C
2019-02-04 16:17 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 32/40] misc/mei/hdcp: Repeater topology verification and ack Ramalingam C
2019-02-04 16:17 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 33/40] misc/mei/hdcp: Verify M_prime Ramalingam C
2019-02-04 16:18 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 34/40] misc/mei/hdcp: Enabling the HDCP authentication Ramalingam C
2019-02-04 16:19 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 35/40] misc/mei/hdcp: Closing wired HDCP2.2 Tx Session Ramalingam C
2019-02-04 16:20 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 36/40] misc/mei/hdcp: Component framework for I915 Interface Ramalingam C
2019-01-31 8:23 ` Daniel Vetter
2019-02-04 16:27 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 37/40] drm/i915: Commit CP without modeset Ramalingam C
2019-01-31 8:32 ` Daniel Vetter
2019-02-04 8:39 ` C, Ramalingam
2019-01-31 6:59 ` [PATCH v10 38/40] drm/i915: Fix KBL HDCP2.2 encrypt status signalling Ramalingam C
2019-02-04 15:32 ` C, Ramalingam
2019-02-05 8:54 ` Daniel Vetter
2019-02-04 16:35 ` Shankar, Uma
2019-01-31 6:59 ` [PATCH v10 39/40] FOR_TEST: i915/Kconfig: Select mei_hdcp by I915 Ramalingam C
2019-01-31 6:59 ` [PATCH v10 40/40] FOR_TESTING_ONLY: debugfs: Excluding the LSPCon for HDCP1.4 Ramalingam C
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=1548917996-28081-6-git-send-email-ramalingam.c@intel.com \
--to=ramalingam.c@intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=tomas.winkler@intel.com \
--cc=uma.shankar@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).