Daniel, looks like this series has some r-bs; iirc this fixed some Asus HDMI monitors too (and who knows how many TVs). Jesse On Thu, 22 May 2014 16:50:48 +0530 Vandana Kannan <vandana.kannan@xxxxxxxxx> wrote: > Added a property to enable user space to set aspect ratio. > This patch contains declaration of the property and code to create the > property. > > Signed-off-by: Vandana Kannan <vandana.kannan@xxxxxxxxx> > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > --- > drivers/gpu/drm/drm_crtc.c | 31 +++++++++++++++++++++++++++++++ > include/drm/drm_crtc.h | 2 ++ > 2 files changed, 33 insertions(+) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 37a3e07..84d359e 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -139,6 +139,12 @@ static const struct drm_prop_enum_list drm_scaling_mode_enum_list[] = > { DRM_MODE_SCALE_ASPECT, "Full aspect" }, > }; > > +static const struct drm_prop_enum_list drm_aspect_ratio_enum_list[] = { > + { HDMI_PICTURE_ASPECT_NONE, "Automatic" }, > + { HDMI_PICTURE_ASPECT_4_3, "4:3" }, > + { HDMI_PICTURE_ASPECT_16_9, "16:9" }, > +}; > + > /* > * Non-global properties, but "required" for certain connectors. > */ > @@ -1344,6 +1350,31 @@ int drm_mode_create_scaling_mode_property(struct drm_device *dev) > EXPORT_SYMBOL(drm_mode_create_scaling_mode_property); > > /** > + * drm_mode_create_aspect_ratio_property - create aspect ratio property > + * @dev: DRM device > + * > + * Called by a driver the first time it's needed, must be attached to desired > + * connectors. > + */ > +int drm_mode_create_aspect_ratio_property(struct drm_device *dev) > +{ > + struct drm_property *aspect_ratio; > + > + if (dev->mode_config.aspect_ratio_property) > + return 0; > + > + aspect_ratio = > + drm_property_create_enum(dev, 0, "aspect ratio", > + drm_aspect_ratio_enum_list, > + ARRAY_SIZE(drm_aspect_ratio_enum_list)); > + > + dev->mode_config.aspect_ratio_property = aspect_ratio; > + > + return 0; > +} > +EXPORT_SYMBOL(drm_mode_create_aspect_ratio_property); > + > +/** > * drm_mode_create_dirty_property - create dirty property > * @dev: DRM device > * > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 5c1c31c..1149617 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -801,6 +801,7 @@ struct drm_mode_config { > > /* Optional properties */ > struct drm_property *scaling_mode_property; > + struct drm_property *aspect_ratio_property; > struct drm_property *dirty_info_property; > > /* dumb ioctl parameters */ > @@ -971,6 +972,7 @@ extern int drm_mode_create_dvi_i_properties(struct drm_device *dev); > extern int drm_mode_create_tv_properties(struct drm_device *dev, int num_formats, > char *formats[]); > extern int drm_mode_create_scaling_mode_property(struct drm_device *dev); > +extern int drm_mode_create_aspect_ratio_property(struct drm_device *dev); > extern int drm_mode_create_dirty_info_property(struct drm_device *dev); > extern const char *drm_get_encoder_name(const struct drm_encoder *encoder); > -- Jesse Barnes, Intel Open Source Technology Center _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel