From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> As with HDMI let's can expose the margin properties for DP/LSPCON on ilk+. I don't think DP has anything resembling the AVI infoframe bar information so we don't have to worry about that part except with LSPCON. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29723 Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/display/intel_dp.c | 27 ++++++++++++--------- drivers/gpu/drm/i915/display/intel_lspcon.c | 2 ++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 058c34013f58..a00b10f070e0 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -2129,7 +2129,7 @@ intel_dp_ycbcr420_config(struct intel_dp *intel_dp, crtc_state->output_format = INTEL_OUTPUT_FORMAT_YCBCR420; - return intel_pch_panel_fitting(crtc_state, conn_state); + return 0; } bool intel_dp_limited_color_range(const struct intel_crtc_state *crtc_state, @@ -2192,18 +2192,10 @@ intel_dp_compute_config(struct intel_encoder *encoder, else pipe_config->has_audio = intel_conn_state->force_audio == HDMI_AUDIO_ON; - if (intel_dp_is_edp(intel_dp) && intel_connector->panel.fixed_mode) { + if (intel_dp_is_edp(intel_dp) && intel_connector->panel.fixed_mode) intel_fixed_panel_mode(intel_connector->panel.fixed_mode, adjusted_mode); - if (HAS_GMCH(dev_priv)) - ret = intel_gmch_panel_fitting(pipe_config, conn_state); - else - ret = intel_pch_panel_fitting(pipe_config, conn_state); - if (ret) - return ret; - } - if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) return -EINVAL; @@ -2214,6 +2206,13 @@ intel_dp_compute_config(struct intel_encoder *encoder, if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) return -EINVAL; + if (HAS_GMCH(dev_priv) && intel_dp_is_edp(intel_dp)) + ret = intel_gmch_panel_fitting(pipe_config, conn_state); + else if (!HAS_GMCH(dev_priv)) + ret = intel_pch_panel_fitting(pipe_config, conn_state); + if (ret) + return ret; + ret = intel_dp_compute_link_config(encoder, pipe_config, conn_state); if (ret < 0) return ret; @@ -6356,6 +6355,10 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect else if (INTEL_GEN(dev_priv) >= 5) drm_connector_attach_max_bpc_property(connector, 6, 12); + /* + * FIXME: margins and scaling_mode are implemented + * in a mutually exclusive way for the time being. + */ if (intel_dp_is_edp(intel_dp)) { u32 allowed_scalers; @@ -6366,7 +6369,9 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect drm_connector_attach_scaling_mode_property(connector, allowed_scalers); connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT; - + } else if (!HAS_GMCH(dev_priv)) { + drm_mode_create_tv_margin_properties(&dev_priv->drm); + drm_connector_attach_tv_margin_properties(connector); } } diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c b/drivers/gpu/drm/i915/display/intel_lspcon.c index f8f1308643a9..664977157081 100644 --- a/drivers/gpu/drm/i915/display/intel_lspcon.c +++ b/drivers/gpu/drm/i915/display/intel_lspcon.c @@ -508,6 +508,8 @@ void lspcon_set_infoframes(struct intel_encoder *encoder, HDMI_QUANTIZATION_RANGE_LIMITED : HDMI_QUANTIZATION_RANGE_FULL); + drm_hdmi_avi_infoframe_bars(&frame.avi, conn_state); + ret = hdmi_infoframe_pack(&frame, buf, sizeof(buf)); if (ret < 0) { DRM_ERROR("Failed to pack AVI IF\n"); -- 2.21.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx