diff mbox

[v4,1/4] drm/crtc: Add property for aspect ratio

Message ID 1402463808-31446-1-git-send-email-vandana.kannan@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

vandana.kannan@intel.com June 11, 2014, 5:16 a.m. UTC
Added a property to enable user space to set aspect ratio.
This patch contains declaration of the property and code to create the
property.

v2: Thierry's review comments.
	- Made aspect ratio enum generic instead of HDMI/CEA specfic
	- Removed usage of temporary aspect_ratio variable

v3: Thierry's review comments.
	- Fixed indentation

v4: Thierry's review comments.
	- Return ENOMEM when property creation fails

Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
---
 drivers/gpu/drm/drm_crtc.c  | 33 +++++++++++++++++++++++++++++++++
 include/drm/drm_crtc.h      |  2 ++
 include/uapi/drm/drm_mode.h |  5 +++++
 3 files changed, 40 insertions(+)

Comments

vandana.kannan@intel.com July 1, 2014, 5:01 a.m. UTC | #1
Hi Thierry/Daniel,

Please help review this patch series on aspect ratio and let me know
your inputs..

1. http://lists.freedesktop.org/archives/dri-devel/2014-June/061576.html
- All review comments (from Thierry) addressed.
2. http://lists.freedesktop.org/archives/dri-devel/2014-June/061217.html
- R-b from Thierry
3. http://lists.freedesktop.org/archives/dri-devel/2014-June/061577.html
4. http://lists.freedesktop.org/archives/dri-devel/2014-June/061592.html
- R-b from Sagar

Thanks,
Vandana

On Jun-11-2014 10:46 AM, Kannan, Vandana 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.
> 
> v2: Thierry's review comments.
> 	- Made aspect ratio enum generic instead of HDMI/CEA specfic
> 	- Removed usage of temporary aspect_ratio variable
> 
> v3: Thierry's review comments.
> 	- Fixed indentation
> 
> v4: Thierry's review comments.
> 	- Return ENOMEM when property creation fails
> 
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> ---
>  drivers/gpu/drm/drm_crtc.c  | 33 +++++++++++++++++++++++++++++++++
>  include/drm/drm_crtc.h      |  2 ++
>  include/uapi/drm/drm_mode.h |  5 +++++
>  3 files changed, 40 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 37a3e07..a745df3 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[] = {
> +	{ DRM_MODE_PICTURE_ASPECT_NONE, "Automatic" },
> +	{ DRM_MODE_PICTURE_ASPECT_4_3, "4:3" },
> +	{ DRM_MODE_PICTURE_ASPECT_16_9, "16:9" },
> +};
> +
>  /*
>   * Non-global properties, but "required" for certain connectors.
>   */
> @@ -1344,6 +1350,33 @@ 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.
> + *
> + * Returns:
> + * Zero on success, errno on failure.
> + */
> +int drm_mode_create_aspect_ratio_property(struct drm_device *dev)
> +{
> +	if (dev->mode_config.aspect_ratio_property)
> +		return 0;
> +
> +	dev->mode_config.aspect_ratio_property =
> +		drm_property_create_enum(dev, 0, "aspect ratio",
> +				drm_aspect_ratio_enum_list,
> +				ARRAY_SIZE(drm_aspect_ratio_enum_list));
> +
> +	if (dev->mode_config.aspect_ratio_property == NULL)
> +		return -ENOMEM;
> +
> +	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/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index f104c26..943b377 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -88,6 +88,11 @@
>  #define DRM_MODE_SCALE_CENTER		2 /* Centered, no scaling */
>  #define DRM_MODE_SCALE_ASPECT		3 /* Full screen, preserve aspect */
>  
> +/* Picture aspect ratio options */
> +#define DRM_MODE_PICTURE_ASPECT_NONE	0
> +#define DRM_MODE_PICTURE_ASPECT_4_3	1
> +#define DRM_MODE_PICTURE_ASPECT_16_9	2
> +
>  /* Dithering mode options */
>  #define DRM_MODE_DITHERING_OFF	0
>  #define DRM_MODE_DITHERING_ON	1
>
Thierry Reding July 14, 2014, 6:51 a.m. UTC | #2
On Wed, Jun 11, 2014 at 10:46:48AM +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.
> 
> v2: Thierry's review comments.
> 	- Made aspect ratio enum generic instead of HDMI/CEA specfic
> 	- Removed usage of temporary aspect_ratio variable
> 
> v3: Thierry's review comments.
> 	- Fixed indentation
> 
> v4: Thierry's review comments.
> 	- Return ENOMEM when property creation fails
> 
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> ---
>  drivers/gpu/drm/drm_crtc.c  | 33 +++++++++++++++++++++++++++++++++
>  include/drm/drm_crtc.h      |  2 ++
>  include/uapi/drm/drm_mode.h |  5 +++++
>  3 files changed, 40 insertions(+)

One nit below...

> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 37a3e07..a745df3 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[] = {
> +	{ DRM_MODE_PICTURE_ASPECT_NONE, "Automatic" },
> +	{ DRM_MODE_PICTURE_ASPECT_4_3, "4:3" },
> +	{ DRM_MODE_PICTURE_ASPECT_16_9, "16:9" },
> +};
> +
>  /*
>   * Non-global properties, but "required" for certain connectors.
>   */
> @@ -1344,6 +1350,33 @@ 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.
> + *
> + * Returns:

According to Documentation/kernel-doc-nano-HOWTO.txt this section should
be named "Return:". But it seems that at least in DRM "Returns:" is used
much more often (89:31), so with or without this addressed:

Reviewed-by: Thierry Reding <treding@nvidia.com>
Daniel Vetter July 15, 2014, 6:48 a.m. UTC | #3
On Mon, Jul 14, 2014 at 08:51:46AM +0200, Thierry Reding wrote:
> On Wed, Jun 11, 2014 at 10:46:48AM +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.
> > 
> > v2: Thierry's review comments.
> > 	- Made aspect ratio enum generic instead of HDMI/CEA specfic
> > 	- Removed usage of temporary aspect_ratio variable
> > 
> > v3: Thierry's review comments.
> > 	- Fixed indentation
> > 
> > v4: Thierry's review comments.
> > 	- Return ENOMEM when property creation fails
> > 
> > Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> > Cc: Thierry Reding <thierry.reding@gmail.com>
> > ---
> >  drivers/gpu/drm/drm_crtc.c  | 33 +++++++++++++++++++++++++++++++++
> >  include/drm/drm_crtc.h      |  2 ++
> >  include/uapi/drm/drm_mode.h |  5 +++++
> >  3 files changed, 40 insertions(+)
> 
> One nit below...
> 
> > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > index 37a3e07..a745df3 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[] = {
> > +	{ DRM_MODE_PICTURE_ASPECT_NONE, "Automatic" },
> > +	{ DRM_MODE_PICTURE_ASPECT_4_3, "4:3" },
> > +	{ DRM_MODE_PICTURE_ASPECT_16_9, "16:9" },
> > +};
> > +
> >  /*
> >   * Non-global properties, but "required" for certain connectors.
> >   */
> > @@ -1344,6 +1350,33 @@ 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.
> > + *
> > + * Returns:
> 
> According to Documentation/kernel-doc-nano-HOWTO.txt this section should
> be named "Return:". But it seems that at least in DRM "Returns:" is used
> much more often (89:31), so with or without this addressed:
> 
> Reviewed-by: Thierry Reding <treding@nvidia.com>

I've pulled all 4 patches. Please double-check that I've picked up the
right ones since the series is a bit spread out.

Thanks, Daniel
vandana.kannan@intel.com July 15, 2014, 3:23 p.m. UTC | #4
On Jul-15-2014 12:18 PM, Daniel Vetter wrote:
[...]

> 
> I've pulled all 4 patches. Please double-check that I've picked up the
> right ones since the series is a bit spread out.
> 
> Thanks, Daniel
> 

Hi Daniel,
I checked the 4 patches in -next-queued. They are the correct version.
Thanks,
Vandana
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 37a3e07..a745df3 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[] = {
+	{ DRM_MODE_PICTURE_ASPECT_NONE, "Automatic" },
+	{ DRM_MODE_PICTURE_ASPECT_4_3, "4:3" },
+	{ DRM_MODE_PICTURE_ASPECT_16_9, "16:9" },
+};
+
 /*
  * Non-global properties, but "required" for certain connectors.
  */
@@ -1344,6 +1350,33 @@  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.
+ *
+ * Returns:
+ * Zero on success, errno on failure.
+ */
+int drm_mode_create_aspect_ratio_property(struct drm_device *dev)
+{
+	if (dev->mode_config.aspect_ratio_property)
+		return 0;
+
+	dev->mode_config.aspect_ratio_property =
+		drm_property_create_enum(dev, 0, "aspect ratio",
+				drm_aspect_ratio_enum_list,
+				ARRAY_SIZE(drm_aspect_ratio_enum_list));
+
+	if (dev->mode_config.aspect_ratio_property == NULL)
+		return -ENOMEM;
+
+	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/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index f104c26..943b377 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -88,6 +88,11 @@ 
 #define DRM_MODE_SCALE_CENTER		2 /* Centered, no scaling */
 #define DRM_MODE_SCALE_ASPECT		3 /* Full screen, preserve aspect */
 
+/* Picture aspect ratio options */
+#define DRM_MODE_PICTURE_ASPECT_NONE	0
+#define DRM_MODE_PICTURE_ASPECT_4_3	1
+#define DRM_MODE_PICTURE_ASPECT_16_9	2
+
 /* Dithering mode options */
 #define DRM_MODE_DITHERING_OFF	0
 #define DRM_MODE_DITHERING_ON	1