Message ID | 1400757650-28636-1-git-send-email-vandana.kannan@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, May 22, 2014 at 04:50:48PM +0530, Vandana Kannan 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@intel.com> > Cc: dri-devel@lists.freedesktop.org > --- > 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" }, > +}; This seems like it should be either an HDMI specific property, since it uses values defined by HDMI/CEA. Alternatively we could introduce some new generic enumeration and translate that to the HDMI/CEA equivalent in the AVI infoframe helpers. Doing so would allow us to add aspect ratios different from what HDMI or CEA define. > /* > * 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; I don't think you need the temporary aspect_ratio variable here. Can't you directly assign the new property to .aspect_ratio_property? Thierry
On Thu, May 22, 2014 at 04:50:48PM +0530, Vandana Kannan 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@intel.com> > Cc: dri-devel@lists.freedesktop.org Documentation update is missing. Also for such patch series I recommend to post the entire patch series to dri-devel and intel-gfx. Otherwise people on dri-devel don't see how the new code is used and so can't really review it properly. -Daniel > --- > 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); > > -- > 1.9.3 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On May-22-2014 5:08 PM, Thierry Reding wrote: > On Thu, May 22, 2014 at 04:50:48PM +0530, Vandana Kannan 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@intel.com> >> Cc: dri-devel@lists.freedesktop.org >> --- >> 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" }, >> +}; > > This seems like it should be either an HDMI specific property, since it > uses values defined by HDMI/CEA. Alternatively we could introduce some > new generic enumeration and translate that to the HDMI/CEA equivalent in > the AVI infoframe helpers. > > Doing so would allow us to add aspect ratios different from what HDMI or > CEA define. > >> /* >> * 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; > > I don't think you need the temporary aspect_ratio variable here. Can't > you directly assign the new property to .aspect_ratio_property? > > Thierry > Thanks for your inputs. I will make the following changes and resend the patch.. - Make the enum generic and translate that to the HDMI/CEA equivalent for AVI IF. - Remove the temporary aspect_ratio variable. Thanks, Vandana
On May-22-2014 5:46 PM, Daniel Vetter wrote: > On Thu, May 22, 2014 at 04:50:48PM +0530, Vandana Kannan 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@intel.com> >> Cc: dri-devel@lists.freedesktop.org > > Documentation update is missing. Also for such patch series I recommend to > post the entire patch series to dri-devel and intel-gfx. Otherwise people > on dri-devel don't see how the new code is used and so can't really review > it properly. > -Daniel > Thanks for your inputs. I will send the Documentation change along with the rest of the patches (when I resend them). Resent patch 3 adding dri-devel.. Thanks, Vandana >> --- >> 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); >> >> -- >> 1.9.3 >> >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/intel-gfx >
On May-23-2014 4:18 PM, Vandana Kannan wrote: > On May-22-2014 5:46 PM, Daniel Vetter wrote: >> On Thu, May 22, 2014 at 04:50:48PM +0530, Vandana Kannan 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@intel.com> >>> Cc: dri-devel@lists.freedesktop.org >> >> Documentation update is missing. Also for such patch series I recommend to >> post the entire patch series to dri-devel and intel-gfx. Otherwise people >> on dri-devel don't see how the new code is used and so can't really review >> it properly. >> -Daniel >> > Thanks for your inputs. > I will send the Documentation change along with the rest of the patches > (when I resend them). > Resent patch 3 adding dri-devel.. > > Thanks, > Vandana Hi Daniel, For the Documentation update, should HTML table format be used in drm.tmpl or is there some other method? -Vandana >>> --- >>> 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); >>> >>> -- >>> 1.9.3 >>> >>> _______________________________________________ >>> Intel-gfx mailing list >>> Intel-gfx@lists.freedesktop.org >>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx >> > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx >
On Mon, May 26, 2014 at 11:00:41AM +0530, Vandana Kannan wrote: > On May-23-2014 4:18 PM, Vandana Kannan wrote: > > On May-22-2014 5:46 PM, Daniel Vetter wrote: > >> On Thu, May 22, 2014 at 04:50:48PM +0530, Vandana Kannan 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@intel.com> > >>> Cc: dri-devel@lists.freedesktop.org > >> > >> Documentation update is missing. Also for such patch series I recommend to > >> post the entire patch series to dri-devel and intel-gfx. Otherwise people > >> on dri-devel don't see how the new code is used and so can't really review > >> it properly. > >> -Daniel > >> > > Thanks for your inputs. > > I will send the Documentation change along with the rest of the patches > > (when I resend them). > > Resent patch 3 adding dri-devel.. > > > > Thanks, > > Vandana > > Hi Daniel, > For the Documentation update, should HTML table format be used in > drm.tmpl or is there some other method? Currently we only have the html table. -Daniel > -Vandana > >>> --- > >>> 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); > >>> > >>> -- > >>> 1.9.3 > >>> > >>> _______________________________________________ > >>> Intel-gfx mailing list > >>> Intel-gfx@lists.freedesktop.org > >>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx > >> > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > >
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@intel.com> 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@intel.com> > Cc: dri-devel@lists.freedesktop.org > --- > 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); >
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);
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@intel.com> Cc: dri-devel@lists.freedesktop.org --- drivers/gpu/drm/drm_crtc.c | 31 +++++++++++++++++++++++++++++++ include/drm/drm_crtc.h | 2 ++ 2 files changed, 33 insertions(+)