All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Sean Paul <sean@poorly.run>
Cc: David Airlie <airlied@linux.ie>,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	ramalingm.c@intel.com, Sean Paul <seanpaul@chromium.org>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>
Subject: Re: [PATCH 05/11] drm/i915: Change toggle_signalling() argument to connector
Date: Thu, 5 Dec 2019 21:48:55 +0200	[thread overview]
Message-ID: <20191205194855.GM1208@intel.com> (raw)
In-Reply-To: <20191203173638.94919-6-sean@poorly.run>

On Tue, Dec 03, 2019 at 12:36:28PM -0500, Sean Paul wrote:
> From: Sean Paul <seanpaul@chromium.org>
> 
> HDCP over MST requires us to toggle ddi signalling. Since we'll want to
> toggle signalling on the pipe associated with the fake encoder as
> opposed to the digital port's base, we need to get it from connector.

I think what you want is the cpu_transcoder, which we've already stuffed
into the hdcp thing when we enabled hdcp.

> 
> This patch converts all existing callers and implementations to use
> connector instead of digital port.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>
> ---
>  drivers/gpu/drm/i915/display/intel_display_types.h |  2 +-
>  drivers/gpu/drm/i915/display/intel_dp.c            |  2 +-
>  drivers/gpu/drm/i915/display/intel_hdcp.c          | 10 ++++------
>  drivers/gpu/drm/i915/display/intel_hdmi.c          |  8 ++++----
>  4 files changed, 10 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 4341bd66a418..bbd44772b9b0 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -300,7 +300,7 @@ struct intel_hdcp_shim {
>  				 int i, u32 *part);
>  
>  	/* Enables HDCP signalling on the port */
> -	int (*toggle_signalling)(struct intel_digital_port *intel_dig_port,
> +	int (*toggle_signalling)(struct intel_connector *connector,
>  				 bool enable);
>  
>  	/* Ensures the link is still protected */
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 7a407c651fb2..e26fb26b1909 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -6038,7 +6038,7 @@ int intel_dp_hdcp_read_v_prime_part(struct intel_digital_port *intel_dig_port,
>  }
>  
>  static
> -int intel_dp_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
> +int intel_dp_hdcp_toggle_signalling(struct intel_connector *connector,
>  				    bool enable)
>  {
>  	/* Not used for single stream DisplayPort setups */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 8325bf9501e4..0966a8ec47d2 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -693,7 +693,7 @@ static int intel_hdcp_auth(struct intel_connector *connector)
>  			   intel_hdcp_get_repeater_ctl(dev_priv, cpu_transcoder,
>  						       port));
>  
> -	ret = shim->toggle_signalling(intel_dig_port, true);
> +	ret = shim->toggle_signalling(connector, true);
>  	if (ret)
>  		return ret;
>  
> @@ -787,7 +787,7 @@ static int _intel_hdcp_disable(struct intel_connector *connector)
>  		return -ETIMEDOUT;
>  	}
>  
> -	ret = hdcp->shim->toggle_signalling(intel_dig_port, false);
> +	ret = hdcp->shim->toggle_signalling(connector, false);
>  	if (ret) {
>  		DRM_ERROR("Failed to disable HDCP signalling\n");
>  		return ret;
> @@ -1537,7 +1537,6 @@ static int hdcp2_authenticate_sink(struct intel_connector *connector)
>  
>  static int hdcp2_enable_encryption(struct intel_connector *connector)
>  {
> -	struct intel_digital_port *intel_dig_port = conn_to_dig_port(connector);
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
>  	struct intel_hdcp *hdcp = &connector->hdcp;
>  	enum port port = connector->encoder->port;
> @@ -1547,7 +1546,7 @@ static int hdcp2_enable_encryption(struct intel_connector *connector)
>  	WARN_ON(I915_READ(HDCP2_STATUS(dev_priv, cpu_transcoder, port)) &
>  		LINK_ENCRYPTION_STATUS);
>  	if (hdcp->shim->toggle_signalling) {
> -		ret = hdcp->shim->toggle_signalling(intel_dig_port, true);
> +		ret = hdcp->shim->toggle_signalling(connector, true);
>  		if (ret) {
>  			DRM_ERROR("Failed to enable HDCP signalling. %d\n",
>  				  ret);
> @@ -1575,7 +1574,6 @@ static int hdcp2_enable_encryption(struct intel_connector *connector)
>  
>  static int hdcp2_disable_encryption(struct intel_connector *connector)
>  {
> -	struct intel_digital_port *intel_dig_port = conn_to_dig_port(connector);
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
>  	struct intel_hdcp *hdcp = &connector->hdcp;
>  	enum port port = connector->encoder->port;
> @@ -1598,7 +1596,7 @@ static int hdcp2_disable_encryption(struct intel_connector *connector)
>  		DRM_DEBUG_KMS("Disable Encryption Timedout");
>  
>  	if (hdcp->shim->toggle_signalling) {
> -		ret = hdcp->shim->toggle_signalling(intel_dig_port, false);
> +		ret = hdcp->shim->toggle_signalling(connector, false);
>  		if (ret) {
>  			DRM_ERROR("Failed to disable HDCP signalling. %d\n",
>  				  ret);
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index f6f5312205c4..6a1e711c4f7a 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -1475,18 +1475,18 @@ static int kbl_repositioning_enc_en_signal(struct intel_connector *connector)
>  }
>  
>  static
> -int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
> +int intel_hdmi_hdcp_toggle_signalling(struct intel_connector *connector,
>  				      bool enable)
>  {
> -	struct intel_hdmi *hdmi = &intel_dig_port->hdmi;
> -	struct intel_connector *connector = hdmi->attached_connector;
> +	struct intel_encoder *encoder =
> +				intel_attached_encoder(&connector->base);
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
>  	int ret;
>  
>  	if (!enable)
>  		usleep_range(6, 60); /* Bspec says >= 6us */
>  
> -	ret = intel_ddi_toggle_hdcp_signalling(&intel_dig_port->base, enable);
> +	ret = intel_ddi_toggle_hdcp_signalling(encoder, enable);
>  	if (ret) {
>  		DRM_ERROR("%s HDCP signalling failed (%d)\n",
>  			  enable ? "Enable" : "Disable", ret);
> -- 
> Sean Paul, Software Engineer, Google / Chromium OS
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Sean Paul <sean@poorly.run>
Cc: David Airlie <airlied@linux.ie>,
	intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	ramalingm.c@intel.com, Sean Paul <seanpaul@chromium.org>
Subject: Re: [Intel-gfx] [PATCH 05/11] drm/i915: Change toggle_signalling() argument to connector
Date: Thu, 5 Dec 2019 21:48:55 +0200	[thread overview]
Message-ID: <20191205194855.GM1208@intel.com> (raw)
In-Reply-To: <20191203173638.94919-6-sean@poorly.run>

On Tue, Dec 03, 2019 at 12:36:28PM -0500, Sean Paul wrote:
> From: Sean Paul <seanpaul@chromium.org>
> 
> HDCP over MST requires us to toggle ddi signalling. Since we'll want to
> toggle signalling on the pipe associated with the fake encoder as
> opposed to the digital port's base, we need to get it from connector.

I think what you want is the cpu_transcoder, which we've already stuffed
into the hdcp thing when we enabled hdcp.

> 
> This patch converts all existing callers and implementations to use
> connector instead of digital port.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>
> ---
>  drivers/gpu/drm/i915/display/intel_display_types.h |  2 +-
>  drivers/gpu/drm/i915/display/intel_dp.c            |  2 +-
>  drivers/gpu/drm/i915/display/intel_hdcp.c          | 10 ++++------
>  drivers/gpu/drm/i915/display/intel_hdmi.c          |  8 ++++----
>  4 files changed, 10 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 4341bd66a418..bbd44772b9b0 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -300,7 +300,7 @@ struct intel_hdcp_shim {
>  				 int i, u32 *part);
>  
>  	/* Enables HDCP signalling on the port */
> -	int (*toggle_signalling)(struct intel_digital_port *intel_dig_port,
> +	int (*toggle_signalling)(struct intel_connector *connector,
>  				 bool enable);
>  
>  	/* Ensures the link is still protected */
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 7a407c651fb2..e26fb26b1909 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -6038,7 +6038,7 @@ int intel_dp_hdcp_read_v_prime_part(struct intel_digital_port *intel_dig_port,
>  }
>  
>  static
> -int intel_dp_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
> +int intel_dp_hdcp_toggle_signalling(struct intel_connector *connector,
>  				    bool enable)
>  {
>  	/* Not used for single stream DisplayPort setups */
> diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c b/drivers/gpu/drm/i915/display/intel_hdcp.c
> index 8325bf9501e4..0966a8ec47d2 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdcp.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c
> @@ -693,7 +693,7 @@ static int intel_hdcp_auth(struct intel_connector *connector)
>  			   intel_hdcp_get_repeater_ctl(dev_priv, cpu_transcoder,
>  						       port));
>  
> -	ret = shim->toggle_signalling(intel_dig_port, true);
> +	ret = shim->toggle_signalling(connector, true);
>  	if (ret)
>  		return ret;
>  
> @@ -787,7 +787,7 @@ static int _intel_hdcp_disable(struct intel_connector *connector)
>  		return -ETIMEDOUT;
>  	}
>  
> -	ret = hdcp->shim->toggle_signalling(intel_dig_port, false);
> +	ret = hdcp->shim->toggle_signalling(connector, false);
>  	if (ret) {
>  		DRM_ERROR("Failed to disable HDCP signalling\n");
>  		return ret;
> @@ -1537,7 +1537,6 @@ static int hdcp2_authenticate_sink(struct intel_connector *connector)
>  
>  static int hdcp2_enable_encryption(struct intel_connector *connector)
>  {
> -	struct intel_digital_port *intel_dig_port = conn_to_dig_port(connector);
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
>  	struct intel_hdcp *hdcp = &connector->hdcp;
>  	enum port port = connector->encoder->port;
> @@ -1547,7 +1546,7 @@ static int hdcp2_enable_encryption(struct intel_connector *connector)
>  	WARN_ON(I915_READ(HDCP2_STATUS(dev_priv, cpu_transcoder, port)) &
>  		LINK_ENCRYPTION_STATUS);
>  	if (hdcp->shim->toggle_signalling) {
> -		ret = hdcp->shim->toggle_signalling(intel_dig_port, true);
> +		ret = hdcp->shim->toggle_signalling(connector, true);
>  		if (ret) {
>  			DRM_ERROR("Failed to enable HDCP signalling. %d\n",
>  				  ret);
> @@ -1575,7 +1574,6 @@ static int hdcp2_enable_encryption(struct intel_connector *connector)
>  
>  static int hdcp2_disable_encryption(struct intel_connector *connector)
>  {
> -	struct intel_digital_port *intel_dig_port = conn_to_dig_port(connector);
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
>  	struct intel_hdcp *hdcp = &connector->hdcp;
>  	enum port port = connector->encoder->port;
> @@ -1598,7 +1596,7 @@ static int hdcp2_disable_encryption(struct intel_connector *connector)
>  		DRM_DEBUG_KMS("Disable Encryption Timedout");
>  
>  	if (hdcp->shim->toggle_signalling) {
> -		ret = hdcp->shim->toggle_signalling(intel_dig_port, false);
> +		ret = hdcp->shim->toggle_signalling(connector, false);
>  		if (ret) {
>  			DRM_ERROR("Failed to disable HDCP signalling. %d\n",
>  				  ret);
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index f6f5312205c4..6a1e711c4f7a 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -1475,18 +1475,18 @@ static int kbl_repositioning_enc_en_signal(struct intel_connector *connector)
>  }
>  
>  static
> -int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
> +int intel_hdmi_hdcp_toggle_signalling(struct intel_connector *connector,
>  				      bool enable)
>  {
> -	struct intel_hdmi *hdmi = &intel_dig_port->hdmi;
> -	struct intel_connector *connector = hdmi->attached_connector;
> +	struct intel_encoder *encoder =
> +				intel_attached_encoder(&connector->base);
>  	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
>  	int ret;
>  
>  	if (!enable)
>  		usleep_range(6, 60); /* Bspec says >= 6us */
>  
> -	ret = intel_ddi_toggle_hdcp_signalling(&intel_dig_port->base, enable);
> +	ret = intel_ddi_toggle_hdcp_signalling(encoder, enable);
>  	if (ret) {
>  		DRM_ERROR("%s HDCP signalling failed (%d)\n",
>  			  enable ? "Enable" : "Disable", ret);
> -- 
> Sean Paul, Software Engineer, Google / Chromium OS
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2019-12-05 19:49 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-03 17:36 [PATCH 00/11] drm/i915: Add support for HDCP 1.4 over MST connectors Sean Paul
2019-12-03 17:36 ` [Intel-gfx] " Sean Paul
2019-12-03 17:36 ` [PATCH 01/11] drm/i915: Fix sha_text population code Sean Paul
2019-12-03 17:36   ` Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-04  1:05   ` Sasha Levin
2019-12-04  1:05     ` [Intel-gfx] " Sasha Levin
2019-12-03 17:36 ` [PATCH 02/11] drm/i915: Intercept Aksv writes in the aux hooks Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-05 19:32   ` Ville Syrjälä
2019-12-05 19:32     ` Ville Syrjälä
2019-12-03 17:36 ` [PATCH 03/11] drm/i915: Disable HDCP signalling on transcoder disable Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-05 19:33   ` Ville Syrjälä
2019-12-05 19:33     ` Ville Syrjälä
2019-12-06 13:55     ` Sean Paul
2019-12-06 13:55       ` Sean Paul
2019-12-09 15:18       ` Ville Syrjälä
2019-12-09 15:18         ` Ville Syrjälä
2019-12-09 16:13         ` Sean Paul
2019-12-09 16:13           ` Sean Paul
2019-12-10 10:09           ` Daniel Vetter
2019-12-10 10:09             ` Daniel Vetter
2019-12-03 17:36 ` [PATCH 04/11] drm/i915: Don't WARN on HDCP toggle if get_hw_state returns false Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-05 19:39   ` Ville Syrjälä
2019-12-05 19:39     ` [Intel-gfx] " Ville Syrjälä
2019-12-06 13:52     ` Sean Paul
2019-12-06 13:52       ` [Intel-gfx] " Sean Paul
2019-12-09 15:21       ` Ville Syrjälä
2019-12-09 15:21         ` [Intel-gfx] " Ville Syrjälä
2019-12-09 16:16         ` Sean Paul
2019-12-09 16:16           ` [Intel-gfx] " Sean Paul
2019-12-09 17:22           ` Ville Syrjälä
2019-12-09 17:22             ` [Intel-gfx] " Ville Syrjälä
2019-12-03 17:36 ` [PATCH 05/11] drm/i915: Change toggle_signalling() argument to connector Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-05 19:48   ` Ville Syrjälä [this message]
2019-12-05 19:48     ` Ville Syrjälä
2019-12-03 17:36 ` [PATCH 06/11] drm/i915: Factor out hdcp->value assignments Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-03 17:36 ` [PATCH 07/11] drm/i915: Don't fully disable HDCP on a port if multiple pipes are using it Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-03 17:36 ` [PATCH 08/11] drm/i915: Support DP MST in enc_to_dig_port() function Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-03 17:36 ` [PATCH 09/11] drm/i915: Use ddi_update_pipe in intel_dp_mst Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-03 17:36 ` [PATCH 10/11] drm/i915: Expose HDCP shim functions from dp for use by dp_mst Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-03 17:36 ` [PATCH 11/11] drm/i915: Add HDCP 1.4 support for MST connectors Sean Paul
2019-12-03 17:36   ` [Intel-gfx] " Sean Paul
2019-12-03 20:11 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: Add support for HDCP 1.4 over " Patchwork

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=20191205194855.GM1208@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=airlied@linux.ie \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ramalingm.c@intel.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=sean@poorly.run \
    --cc=seanpaul@chromium.org \
    /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.