|
@@ -367,6 +367,9 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
|
|
|
union hdmi_infoframe frame;
|
|
|
int ret;
|
|
|
|
|
|
+ /* Set user selected PAR to incoming mode's member */
|
|
|
+ adjusted_mode->picture_aspect_ratio = intel_hdmi->aspect_ratio;
|
|
|
+
|
|
|
ret = drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
|
|
|
adjusted_mode);
|
|
|
if (ret < 0) {
|
|
@@ -1124,6 +1127,23 @@ intel_hdmi_set_property(struct drm_connector *connector,
|
|
|
goto done;
|
|
|
}
|
|
|
|
|
|
+ if (property == connector->dev->mode_config.aspect_ratio_property) {
|
|
|
+ switch (val) {
|
|
|
+ case DRM_MODE_PICTURE_ASPECT_NONE:
|
|
|
+ intel_hdmi->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
|
|
|
+ break;
|
|
|
+ case DRM_MODE_PICTURE_ASPECT_4_3:
|
|
|
+ intel_hdmi->aspect_ratio = HDMI_PICTURE_ASPECT_4_3;
|
|
|
+ break;
|
|
|
+ case DRM_MODE_PICTURE_ASPECT_16_9:
|
|
|
+ intel_hdmi->aspect_ratio = HDMI_PICTURE_ASPECT_16_9;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+ goto done;
|
|
|
+ }
|
|
|
+
|
|
|
return -EINVAL;
|
|
|
|
|
|
done:
|
|
@@ -1479,12 +1499,23 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
|
|
|
.destroy = intel_encoder_destroy,
|
|
|
};
|
|
|
|
|
|
+static void
|
|
|
+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);
|
|
|
+}
|
|
|
+
|
|
|
static void
|
|
|
intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
|
|
|
{
|
|
|
intel_attach_force_audio_property(connector);
|
|
|
intel_attach_broadcast_rgb_property(connector);
|
|
|
intel_hdmi->color_range_auto = true;
|
|
|
+ intel_attach_aspect_ratio_property(connector);
|
|
|
+ intel_hdmi->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
|
|
|
}
|
|
|
|
|
|
void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
|