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