[PATCH 19/36] drm/i915: Expose margin properties on ilk+ DP SST
Ville Syrjala
ville.syrjala at linux.intel.com
Wed Dec 18 16:10:36 UTC 2019
From: Ville Syrjälä <ville.syrjala at linux.intel.com>
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 at linux.intel.com>
---
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 02a2c0a8971b..d51f5bf0c3fe 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2302,7 +2302,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,
@@ -2387,18 +2387,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;
@@ -2412,6 +2404,13 @@ intel_dp_compute_config(struct intel_encoder *encoder,
if (intel_dp_hdisplay_bad(dev_priv, adjusted_mode->crtc_hdisplay))
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;
@@ -6645,6 +6644,10 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
connector->dev->mode_config.hdr_output_metadata_property,
0);
+ /*
+ * 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;
@@ -6655,7 +6658,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 5145ff8b962b..1672cbdd9458 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.23.0
More information about the Intel-gfx-trybot
mailing list