This is required to for i915 to convert connector properties to atomic. Changes since v1: - Add docbook info. (danvet) - Change picture_aspect_ratio to enum hdmi_picture_aspect. Changes since v2: - For i915 put the properties in connector_state, to prevent regressions where the property doesn't match the real state. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx Acked-by: Dave Airlie <airlied@xxxxxxxxxx> Link: http://patchwork.freedesktop.org/patch/msgid/1492074937-4774-1-git-send-email-maarten.lankhorst@xxxxxxxxxxxxxxx Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> #v2 [mlankhorst: Change ASPECT_* to ASPECT_\*, based on danvet's suggestion] --- drivers/gpu/drm/drm_atomic.c | 8 ++++++++ drivers/gpu/drm/i915/intel_dp.c | 2 ++ drivers/gpu/drm/i915/intel_dsi.c | 2 ++ drivers/gpu/drm/i915/intel_hdmi.c | 1 + drivers/gpu/drm/i915/intel_lvds.c | 2 ++ drivers/gpu/drm/i915/intel_modes.c | 4 +++- drivers/gpu/drm/i915/intel_sdvo.c | 1 + include/drm/drm_connector.h | 16 ++++++++++++++++ 8 files changed, 35 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c index 30229ab719c0..25ea6f797a54 100644 --- a/drivers/gpu/drm/drm_atomic.c +++ b/drivers/gpu/drm/drm_atomic.c @@ -1123,6 +1123,10 @@ int drm_atomic_connector_set_property(struct drm_connector *connector, */ if (state->link_status != DRM_LINK_STATUS_GOOD) state->link_status = val; + } else if (property == config->aspect_ratio_property) { + state->picture_aspect_ratio = val; + } else if (property == config->scaling_mode_property) { + state->scaling_mode = val; } else if (connector->funcs->atomic_set_property) { return connector->funcs->atomic_set_property(connector, state, property, val); @@ -1199,6 +1203,10 @@ drm_atomic_connector_get_property(struct drm_connector *connector, *val = state->tv.hue; } else if (property == config->link_status_property) { *val = state->link_status; + } else if (property == config->aspect_ratio_property) { + *val = state->picture_aspect_ratio; + } else if (property == config->scaling_mode_property) { + *val = state->scaling_mode; } else if (connector->funcs->atomic_get_property) { return connector->funcs->atomic_get_property(connector, state, property, val); diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 08834f74d396..6686ac98c4ee 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -4902,6 +4902,7 @@ intel_dp_set_property(struct drm_connector *connector, return 0; } intel_connector->panel.fitting_mode = val; + connector->state->scaling_mode = val; goto done; } @@ -5192,6 +5193,7 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect connector->dev->mode_config.scaling_mode_property, DRM_MODE_SCALE_ASPECT); intel_connector->panel.fitting_mode = DRM_MODE_SCALE_ASPECT; + connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT; } } diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index 3ffe8b1f1d48..35adbcc2e3f3 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c @@ -1616,6 +1616,7 @@ static int intel_dsi_set_property(struct drm_connector *connector, return 0; intel_connector->panel.fitting_mode = val; + connector->state->scaling_mode = val; } crtc = connector->state->crtc; @@ -1682,6 +1683,7 @@ static void intel_dsi_add_properties(struct intel_connector *connector) dev->mode_config.scaling_mode_property, DRM_MODE_SCALE_ASPECT); connector->panel.fitting_mode = DRM_MODE_SCALE_ASPECT; + connector->base.state->scaling_mode = DRM_MODE_SCALE_ASPECT; } } diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 6efc3cb8c471..2b1e806319b9 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1662,6 +1662,7 @@ intel_hdmi_set_property(struct drm_connector *connector, default: return -EINVAL; } + connector->state->picture_aspect_ratio = val; goto done; } diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 8b942ef2b3ec..5d9c1de0702b 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c @@ -618,6 +618,7 @@ static int intel_lvds_set_property(struct drm_connector *connector, return 0; } intel_connector->panel.fitting_mode = value; + connector->state->scaling_mode = value; crtc = intel_attached_encoder(connector)->base.crtc; if (crtc && crtc->state->enable) { @@ -1087,6 +1088,7 @@ void intel_lvds_init(struct drm_i915_private *dev_priv) drm_object_attach_property(&connector->base, dev->mode_config.scaling_mode_property, DRM_MODE_SCALE_ASPECT); + connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT; intel_connector->panel.fitting_mode = DRM_MODE_SCALE_ASPECT; intel_lvds_pps_get_hw_state(dev_priv, &lvds_encoder->init_pps); diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c index 951e834dd274..f7f62eaf2140 100644 --- a/drivers/gpu/drm/i915/intel_modes.c +++ b/drivers/gpu/drm/i915/intel_modes.c @@ -132,5 +132,7 @@ intel_attach_aspect_ratio_property(struct drm_connector *connector) if (!drm_mode_create_aspect_ratio_property(connector->dev)) drm_object_attach_property(&connector->base, connector->dev->mode_config.aspect_ratio_property, - DRM_MODE_PICTURE_ASPECT_NONE); + 0); + + connector->state->picture_aspect_ratio = DRM_MODE_PICTURE_ASPECT_NONE; } diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 816a6f5a3fd9..411d68341820 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@ -2080,6 +2080,7 @@ intel_sdvo_set_property(struct drm_connector *connector, default: return -EINVAL; } + connector->state->picture_aspect_ratio = val; goto done; } diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 4eeda120e46d..934143720e5a 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -25,6 +25,7 @@ #include <linux/list.h> #include <linux/ctype.h> +#include <linux/hdmi.h> #include <drm/drm_mode_object.h> #include <uapi/drm/drm_mode.h> @@ -326,6 +327,21 @@ struct drm_connector_state { struct drm_atomic_state *state; struct drm_tv_connector_state tv; + + /** + * @picture_aspect_ratio: Connector property to control the + * HDMI infoframe aspect ratio setting. + * + * The DRM_MODE_PICTURE_ASPECT_\* values much match the + * values for &enum hdmi_picture_aspect + */ + enum hdmi_picture_aspect picture_aspect_ratio; + + /** + * @scaling_mode: Connector property to control the + * upscaling, mostly used for built-in panels. + */ + unsigned int scaling_mode; }; /** -- 2.7.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx