diff options
author | Ramalingam C <ramalingam.c@intel.com> | 2018-10-23 14:52:29 +0530 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2018-10-24 09:33:51 +0200 |
commit | bdc93fe0eb82f3646dbe34f6cea0cfcf5a1516ff (patch) | |
tree | 4b7f83c626aea1248d15e237206bac178df8d469 /drivers/gpu/drm/i915/intel_hdcp.c | |
parent | 342ac601df6420070221b977cf0d38f91cdc1e8a (diff) | |
download | linux-stable-bdc93fe0eb82f3646dbe34f6cea0cfcf5a1516ff.tar.gz linux-stable-bdc93fe0eb82f3646dbe34f6cea0cfcf5a1516ff.tar.bz2 linux-stable-bdc93fe0eb82f3646dbe34f6cea0cfcf5a1516ff.zip |
drm/i915/debugfs: hdcp capability of a sink
Add a debugfs entry for providing the hdcp capabilities of the sink
connected to the HDCP capable connectors.
v2:
Squashed the sink's hdcp capability into this patch. [Daniel]
Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/1540286550-20399-4-git-send-email-ramalingam.c@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hdcp.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_hdcp.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdcp.c b/drivers/gpu/drm/i915/intel_hdcp.c index 20908ff018e6..283b45636668 100644 --- a/drivers/gpu/drm/i915/intel_hdcp.c +++ b/drivers/gpu/drm/i915/intel_hdcp.c @@ -51,6 +51,27 @@ int intel_hdcp_read_valid_bksv(struct intel_digital_port *intel_dig_port, return 0; } +/* Is HDCP1.4 capable on Platform and Sink */ +bool intel_hdcp_capable(struct intel_connector *connector) +{ + struct intel_digital_port *intel_dig_port = conn_to_dig_port(connector); + const struct intel_hdcp_shim *shim = connector->hdcp_shim; + bool capable = false; + u8 bksv[5]; + + if (!shim) + return capable; + + if (shim->hdcp_capable) { + shim->hdcp_capable(intel_dig_port, &capable); + } else { + if (!intel_hdcp_read_valid_bksv(intel_dig_port, shim, bksv)) + capable = true; + } + + return capable; +} + static int intel_hdcp_poll_ksv_fifo(struct intel_digital_port *intel_dig_port, const struct intel_hdcp_shim *shim) { @@ -632,12 +653,6 @@ static int intel_hdcp_auth(struct intel_digital_port *intel_dig_port, return 0; } -static -struct intel_digital_port *conn_to_dig_port(struct intel_connector *connector) -{ - return enc_to_dig_port(&intel_attached_encoder(&connector->base)->base); -} - static int _intel_hdcp_disable(struct intel_connector *connector) { struct drm_i915_private *dev_priv = connector->base.dev->dev_private; |