Re: [PATCH v10 38/40] drm/i915: Fix KBL HDCP2.2 encrypt status signalling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Feb 04, 2019 at 09:02:35PM +0530, C, Ramalingam wrote:
> daniel,
> 
> Could you please review this patch too.? Already Updated this as per your
> previous review comment.

Oops, missed this one somehow. Looks much cleaner now imo.

Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx>
> 
> --Ram
> 
> On 1/31/2019 12:29 PM, Ramalingam C wrote:
> > Implement the required WA sequence for KBL to fix the
> > incorrect positioning of the window of oppurtunity and enc_en
> > signalling.
> > 
> > v2:
> >    WA is moved into the toggle_signalling [Daniel]
> > 
> > Signed-off-by: Ramalingam C <ramalingam.c@xxxxxxxxx>
> > ---
> >   drivers/gpu/drm/i915/intel_hdmi.c | 42 +++++++++++++++++++++++++++++++++++++++
> >   1 file changed, 42 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> > index 2c4bf6d0c39f..ae20288f7bbf 100644
> > --- a/drivers/gpu/drm/i915/intel_hdmi.c
> > +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> > @@ -1083,10 +1083,44 @@ int intel_hdmi_hdcp_read_v_prime_part(struct intel_digital_port *intel_dig_port,
> >   	return ret;
> >   }
> > +static int kbl_repositioning_enc_en_signal(struct intel_connector *connector)
> > +{
> > +	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> > +	struct intel_digital_port *intel_dig_port = conn_to_dig_port(connector);
> > +	struct drm_crtc *crtc = connector->base.state->crtc;
> > +	struct intel_crtc *intel_crtc = container_of(crtc,
> > +						     struct intel_crtc, base);
> > +	u32 scanline;
> > +	int ret;
> > +
> > +	for (;;) {
> > +		scanline = I915_READ(PIPEDSL(intel_crtc->pipe));
> > +		if (scanline > 100 && scanline < 200)
> > +			break;
> > +		usleep_range(25, 50);
> > +	}
> > +
> > +	ret = intel_ddi_toggle_hdcp_signalling(&intel_dig_port->base, false);
> > +	if (ret) {
> > +		DRM_ERROR("Disable HDCP signalling failed (%d)\n", ret);
> > +		return ret;
> > +	}
> > +	ret = intel_ddi_toggle_hdcp_signalling(&intel_dig_port->base, true);
> > +	if (ret) {
> > +		DRM_ERROR("Enable HDCP signalling failed (%d)\n", ret);
> > +		return ret;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> >   static
> >   int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
> >   				      bool enable)
> >   {
> > +	struct intel_hdmi *hdmi = &intel_dig_port->hdmi;
> > +	struct intel_connector *connector = hdmi->attached_connector;
> > +	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
> >   	int ret;
> >   	if (!enable)
> > @@ -1098,6 +1132,14 @@ int intel_hdmi_hdcp_toggle_signalling(struct intel_digital_port *intel_dig_port,
> >   			  enable ? "Enable" : "Disable", ret);
> >   		return ret;
> >   	}
> > +
> > +	/*
> > +	 * WA: To fix incorrect positioning of the window of
> > +	 * opportunity and enc_en signalling in KABYLAKE.
> > +	 */
> > +	if (IS_KABYLAKE(dev_priv) && enable)
> > +		return kbl_repositioning_enc_en_signal(connector);
> > +
> >   	return 0;
> >   }
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux