diff mbox

[1/3] drm/crtc: Add property for aspect ratio

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

Commit Message

vandana.kannan@intel.com April 7, 2014, 10:03 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.

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(+)

Comments

vandana.kannan@intel.com April 21, 2014, 4:25 a.m. UTC | #1
On Apr-07-2014 3:24 PM, Vandana Kannan wrote:
> On Apr-07-2014 3:33 PM, 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.
>>
>> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
>> Cc: dri-devel@lists.freedesktop.org
>> ---
> This patch series is being submitted as discussed in
> http://lists.freedesktop.org/archives/dri-devel/2014-April/056593.html
> 
> -Vandana

Please help review this patch series to enable user space to set aspect
ratio for AVI infoframe.

http://lists.freedesktop.org/archives/intel-gfx/2014-April/043226.html
http://lists.freedesktop.org/archives/intel-gfx/2014-April/043228.html
http://lists.freedesktop.org/archives/intel-gfx/2014-April/043227.html

-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 d8b7099..6cd34ad 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.
>>   */
>> @@ -1334,6 +1340,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 c061bb3..99bb6ed 100644
>> --- a/include/drm/drm_crtc.h
>> +++ b/include/drm/drm_crtc.h
>> @@ -797,6 +797,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 */
>> @@ -966,6 +967,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);
>>  
>>
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index d8b7099..6cd34ad 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.
  */
@@ -1334,6 +1340,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 c061bb3..99bb6ed 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -797,6 +797,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 */
@@ -966,6 +967,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);