Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9bc3c02 authored by Sascha Hauer's avatar Sascha Hauer Committed by Dave Airlie
Browse files

drm: add convenience function to create an range property



Creating a range property is a common pattern, so create
a convenience function for this and use it where appropriate.

Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 4a67d391
Loading
Loading
Loading
Loading
+29 −40
Original line number Original line Diff line number Diff line
@@ -742,28 +742,16 @@ int drm_mode_create_tv_properties(struct drm_device *dev, int num_modes,
	 * Other, TV specific properties: margins & TV modes.
	 * Other, TV specific properties: margins & TV modes.
	 */
	 */
	dev->mode_config.tv_left_margin_property =
	dev->mode_config.tv_left_margin_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "left margin", 0, 100);
				    "left margin", 2);
	dev->mode_config.tv_left_margin_property->values[0] = 0;
	dev->mode_config.tv_left_margin_property->values[1] = 100;


	dev->mode_config.tv_right_margin_property =
	dev->mode_config.tv_right_margin_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "right margin", 0, 100);
				    "right margin", 2);
	dev->mode_config.tv_right_margin_property->values[0] = 0;
	dev->mode_config.tv_right_margin_property->values[1] = 100;


	dev->mode_config.tv_top_margin_property =
	dev->mode_config.tv_top_margin_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "top margin", 0, 100);
				    "top margin", 2);
	dev->mode_config.tv_top_margin_property->values[0] = 0;
	dev->mode_config.tv_top_margin_property->values[1] = 100;


	dev->mode_config.tv_bottom_margin_property =
	dev->mode_config.tv_bottom_margin_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "bottom margin", 0, 100);
				    "bottom margin", 2);
	dev->mode_config.tv_bottom_margin_property->values[0] = 0;
	dev->mode_config.tv_bottom_margin_property->values[1] = 100;


	dev->mode_config.tv_mode_property =
	dev->mode_config.tv_mode_property =
		drm_property_create(dev, DRM_MODE_PROP_ENUM,
		drm_property_create(dev, DRM_MODE_PROP_ENUM,
@@ -773,40 +761,22 @@ int drm_mode_create_tv_properties(struct drm_device *dev, int num_modes,
				      i, modes[i]);
				      i, modes[i]);


	dev->mode_config.tv_brightness_property =
	dev->mode_config.tv_brightness_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "brightness", 0, 100);
				    "brightness", 2);
	dev->mode_config.tv_brightness_property->values[0] = 0;
	dev->mode_config.tv_brightness_property->values[1] = 100;


	dev->mode_config.tv_contrast_property =
	dev->mode_config.tv_contrast_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "contrast", 0, 100);
				    "contrast", 2);
	dev->mode_config.tv_contrast_property->values[0] = 0;
	dev->mode_config.tv_contrast_property->values[1] = 100;


	dev->mode_config.tv_flicker_reduction_property =
	dev->mode_config.tv_flicker_reduction_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "flicker reduction", 0, 100);
				    "flicker reduction", 2);
	dev->mode_config.tv_flicker_reduction_property->values[0] = 0;
	dev->mode_config.tv_flicker_reduction_property->values[1] = 100;


	dev->mode_config.tv_overscan_property =
	dev->mode_config.tv_overscan_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "overscan", 0, 100);
				    "overscan", 2);
	dev->mode_config.tv_overscan_property->values[0] = 0;
	dev->mode_config.tv_overscan_property->values[1] = 100;


	dev->mode_config.tv_saturation_property =
	dev->mode_config.tv_saturation_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "saturation", 0, 100);
				    "saturation", 2);
	dev->mode_config.tv_saturation_property->values[0] = 0;
	dev->mode_config.tv_saturation_property->values[1] = 100;


	dev->mode_config.tv_hue_property =
	dev->mode_config.tv_hue_property =
		drm_property_create(dev, DRM_MODE_PROP_RANGE,
		drm_property_create_range(dev, 0, "hue", 0, 100);
				    "hue", 2);
	dev->mode_config.tv_hue_property->values[0] = 0;
	dev->mode_config.tv_hue_property->values[1] = 100;


	return 0;
	return 0;
}
}
@@ -2621,6 +2591,25 @@ struct drm_property *drm_property_create_enum(struct drm_device *dev, int flags,
}
}
EXPORT_SYMBOL(drm_property_create_enum);
EXPORT_SYMBOL(drm_property_create_enum);


struct drm_property *drm_property_create_range(struct drm_device *dev, int flags,
					 const char *name,
					 uint64_t min, uint64_t max)
{
	struct drm_property *property;

	flags |= DRM_MODE_PROP_RANGE;

	property = drm_property_create(dev, flags, name, 2);
	if (!property)
		return NULL;

	property->values[0] = min;
	property->values[1] = max;

	return property;
}
EXPORT_SYMBOL(drm_property_create_range);

int drm_property_add_enum(struct drm_property *property, int index,
int drm_property_add_enum(struct drm_property *property, int index,
			  uint64_t value, const char *name)
			  uint64_t value, const char *name)
{
{
+1 −4
Original line number Original line Diff line number Diff line
@@ -725,10 +725,7 @@ static int psb_create_backlight_property(struct drm_device *dev)
	if (dev_priv->backlight_property)
	if (dev_priv->backlight_property)
		return 0;
		return 0;


	backlight = drm_property_create(dev, DRM_MODE_PROP_RANGE,
	backlight = drm_property_create_range(dev, 0, "backlight", 0, 100);
							"backlight", 2);
	backlight->values[0] = 0;
	backlight->values[1] = 100;


	dev_priv->backlight_property = backlight;
	dev_priv->backlight_property = backlight;


+6 −22
Original line number Original line Diff line number Diff line
@@ -2312,10 +2312,8 @@ static bool psb_intel_sdvo_tv_create_property(struct psb_intel_sdvo *psb_intel_s
		psb_intel_sdvo_connector->max_##name = data_value[0]; \
		psb_intel_sdvo_connector->max_##name = data_value[0]; \
		psb_intel_sdvo_connector->cur_##name = response; \
		psb_intel_sdvo_connector->cur_##name = response; \
		psb_intel_sdvo_connector->name = \
		psb_intel_sdvo_connector->name = \
			drm_property_create(dev, DRM_MODE_PROP_RANGE, #name, 2); \
			drm_property_create_range(dev, 0, #name, 0, data_value[0]); \
		if (!psb_intel_sdvo_connector->name) return false; \
		if (!psb_intel_sdvo_connector->name) return false; \
		psb_intel_sdvo_connector->name->values[0] = 0; \
		psb_intel_sdvo_connector->name->values[1] = data_value[0]; \
		drm_connector_attach_property(connector, \
		drm_connector_attach_property(connector, \
					      psb_intel_sdvo_connector->name, \
					      psb_intel_sdvo_connector->name, \
					      psb_intel_sdvo_connector->cur_##name); \
					      psb_intel_sdvo_connector->cur_##name); \
@@ -2349,25 +2347,19 @@ psb_intel_sdvo_create_enhance_property_tv(struct psb_intel_sdvo *psb_intel_sdvo,
		psb_intel_sdvo_connector->left_margin = data_value[0] - response;
		psb_intel_sdvo_connector->left_margin = data_value[0] - response;
		psb_intel_sdvo_connector->right_margin = psb_intel_sdvo_connector->left_margin;
		psb_intel_sdvo_connector->right_margin = psb_intel_sdvo_connector->left_margin;
		psb_intel_sdvo_connector->left =
		psb_intel_sdvo_connector->left =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]);
					    "left_margin", 2);
		if (!psb_intel_sdvo_connector->left)
		if (!psb_intel_sdvo_connector->left)
			return false;
			return false;


		psb_intel_sdvo_connector->left->values[0] = 0;
		psb_intel_sdvo_connector->left->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      psb_intel_sdvo_connector->left,
					      psb_intel_sdvo_connector->left,
					      psb_intel_sdvo_connector->left_margin);
					      psb_intel_sdvo_connector->left_margin);


		psb_intel_sdvo_connector->right =
		psb_intel_sdvo_connector->right =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]);
					    "right_margin", 2);
		if (!psb_intel_sdvo_connector->right)
		if (!psb_intel_sdvo_connector->right)
			return false;
			return false;


		psb_intel_sdvo_connector->right->values[0] = 0;
		psb_intel_sdvo_connector->right->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      psb_intel_sdvo_connector->right,
					      psb_intel_sdvo_connector->right,
					      psb_intel_sdvo_connector->right_margin);
					      psb_intel_sdvo_connector->right_margin);
@@ -2391,25 +2383,19 @@ psb_intel_sdvo_create_enhance_property_tv(struct psb_intel_sdvo *psb_intel_sdvo,
		psb_intel_sdvo_connector->top_margin = data_value[0] - response;
		psb_intel_sdvo_connector->top_margin = data_value[0] - response;
		psb_intel_sdvo_connector->bottom_margin = psb_intel_sdvo_connector->top_margin;
		psb_intel_sdvo_connector->bottom_margin = psb_intel_sdvo_connector->top_margin;
		psb_intel_sdvo_connector->top =
		psb_intel_sdvo_connector->top =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0, "top_margin", 0, data_value[0]);
					    "top_margin", 2);
		if (!psb_intel_sdvo_connector->top)
		if (!psb_intel_sdvo_connector->top)
			return false;
			return false;


		psb_intel_sdvo_connector->top->values[0] = 0;
		psb_intel_sdvo_connector->top->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      psb_intel_sdvo_connector->top,
					      psb_intel_sdvo_connector->top,
					      psb_intel_sdvo_connector->top_margin);
					      psb_intel_sdvo_connector->top_margin);


		psb_intel_sdvo_connector->bottom =
		psb_intel_sdvo_connector->bottom =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0, "bottom_margin", 0, data_value[0]);
					    "bottom_margin", 2);
		if (!psb_intel_sdvo_connector->bottom)
		if (!psb_intel_sdvo_connector->bottom)
			return false;
			return false;


		psb_intel_sdvo_connector->bottom->values[0] = 0;
		psb_intel_sdvo_connector->bottom->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      psb_intel_sdvo_connector->bottom,
					      psb_intel_sdvo_connector->bottom,
					      psb_intel_sdvo_connector->bottom_margin);
					      psb_intel_sdvo_connector->bottom_margin);
@@ -2438,12 +2424,10 @@ psb_intel_sdvo_create_enhance_property_tv(struct psb_intel_sdvo *psb_intel_sdvo,
		psb_intel_sdvo_connector->max_dot_crawl = 1;
		psb_intel_sdvo_connector->max_dot_crawl = 1;
		psb_intel_sdvo_connector->cur_dot_crawl = response & 0x1;
		psb_intel_sdvo_connector->cur_dot_crawl = response & 0x1;
		psb_intel_sdvo_connector->dot_crawl =
		psb_intel_sdvo_connector->dot_crawl =
			drm_property_create(dev, DRM_MODE_PROP_RANGE, "dot_crawl", 2);
			drm_property_create_range(dev, 0, "dot_crawl", 0, 1);
		if (!psb_intel_sdvo_connector->dot_crawl)
		if (!psb_intel_sdvo_connector->dot_crawl)
			return false;
			return false;


		psb_intel_sdvo_connector->dot_crawl->values[0] = 0;
		psb_intel_sdvo_connector->dot_crawl->values[1] = 1;
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      psb_intel_sdvo_connector->dot_crawl,
					      psb_intel_sdvo_connector->dot_crawl,
					      psb_intel_sdvo_connector->cur_dot_crawl);
					      psb_intel_sdvo_connector->cur_dot_crawl);
+1 −4
Original line number Original line Diff line number Diff line
@@ -252,10 +252,7 @@ static int ch7006_encoder_create_resources(struct drm_encoder *encoder,


	drm_mode_create_tv_properties(dev, NUM_TV_NORMS, ch7006_tv_norm_names);
	drm_mode_create_tv_properties(dev, NUM_TV_NORMS, ch7006_tv_norm_names);


	priv->scale_property = drm_property_create(dev, DRM_MODE_PROP_RANGE,
	priv->scale_property = drm_property_create_range(dev, 0, "scale", 0, 2);
						   "scale", 2);
	priv->scale_property->values[0] = 0;
	priv->scale_property->values[1] = 2;


	drm_connector_attach_property(connector, conf->tv_select_subconnector_property,
	drm_connector_attach_property(connector, conf->tv_select_subconnector_property,
				      priv->select_subconnector);
				      priv->select_subconnector);
+8 −22
Original line number Original line Diff line number Diff line
@@ -2277,10 +2277,8 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
		intel_sdvo_connector->max_##name = data_value[0]; \
		intel_sdvo_connector->max_##name = data_value[0]; \
		intel_sdvo_connector->cur_##name = response; \
		intel_sdvo_connector->cur_##name = response; \
		intel_sdvo_connector->name = \
		intel_sdvo_connector->name = \
			drm_property_create(dev, DRM_MODE_PROP_RANGE, #name, 2); \
			drm_property_create_range(dev, 0, #name, 0, data_value[0]); \
		if (!intel_sdvo_connector->name) return false; \
		if (!intel_sdvo_connector->name) return false; \
		intel_sdvo_connector->name->values[0] = 0; \
		intel_sdvo_connector->name->values[1] = data_value[0]; \
		drm_connector_attach_property(connector, \
		drm_connector_attach_property(connector, \
					      intel_sdvo_connector->name, \
					      intel_sdvo_connector->name, \
					      intel_sdvo_connector->cur_##name); \
					      intel_sdvo_connector->cur_##name); \
@@ -2314,25 +2312,19 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
		intel_sdvo_connector->left_margin = data_value[0] - response;
		intel_sdvo_connector->left_margin = data_value[0] - response;
		intel_sdvo_connector->right_margin = intel_sdvo_connector->left_margin;
		intel_sdvo_connector->right_margin = intel_sdvo_connector->left_margin;
		intel_sdvo_connector->left =
		intel_sdvo_connector->left =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]);
					    "left_margin", 2);
		if (!intel_sdvo_connector->left)
		if (!intel_sdvo_connector->left)
			return false;
			return false;


		intel_sdvo_connector->left->values[0] = 0;
		intel_sdvo_connector->left->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      intel_sdvo_connector->left,
					      intel_sdvo_connector->left,
					      intel_sdvo_connector->left_margin);
					      intel_sdvo_connector->left_margin);


		intel_sdvo_connector->right =
		intel_sdvo_connector->right =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]);
					    "right_margin", 2);
		if (!intel_sdvo_connector->right)
		if (!intel_sdvo_connector->right)
			return false;
			return false;


		intel_sdvo_connector->right->values[0] = 0;
		intel_sdvo_connector->right->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      intel_sdvo_connector->right,
					      intel_sdvo_connector->right,
					      intel_sdvo_connector->right_margin);
					      intel_sdvo_connector->right_margin);
@@ -2356,25 +2348,21 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
		intel_sdvo_connector->top_margin = data_value[0] - response;
		intel_sdvo_connector->top_margin = data_value[0] - response;
		intel_sdvo_connector->bottom_margin = intel_sdvo_connector->top_margin;
		intel_sdvo_connector->bottom_margin = intel_sdvo_connector->top_margin;
		intel_sdvo_connector->top =
		intel_sdvo_connector->top =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0,
					    "top_margin", 2);
					    "top_margin", 0, data_value[0]);
		if (!intel_sdvo_connector->top)
		if (!intel_sdvo_connector->top)
			return false;
			return false;


		intel_sdvo_connector->top->values[0] = 0;
		intel_sdvo_connector->top->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      intel_sdvo_connector->top,
					      intel_sdvo_connector->top,
					      intel_sdvo_connector->top_margin);
					      intel_sdvo_connector->top_margin);


		intel_sdvo_connector->bottom =
		intel_sdvo_connector->bottom =
			drm_property_create(dev, DRM_MODE_PROP_RANGE,
			drm_property_create_range(dev, 0,
					    "bottom_margin", 2);
					    "bottom_margin", 0, data_value[0]);
		if (!intel_sdvo_connector->bottom)
		if (!intel_sdvo_connector->bottom)
			return false;
			return false;


		intel_sdvo_connector->bottom->values[0] = 0;
		intel_sdvo_connector->bottom->values[1] = data_value[0];
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      intel_sdvo_connector->bottom,
					      intel_sdvo_connector->bottom,
					      intel_sdvo_connector->bottom_margin);
					      intel_sdvo_connector->bottom_margin);
@@ -2403,12 +2391,10 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo,
		intel_sdvo_connector->max_dot_crawl = 1;
		intel_sdvo_connector->max_dot_crawl = 1;
		intel_sdvo_connector->cur_dot_crawl = response & 0x1;
		intel_sdvo_connector->cur_dot_crawl = response & 0x1;
		intel_sdvo_connector->dot_crawl =
		intel_sdvo_connector->dot_crawl =
			drm_property_create(dev, DRM_MODE_PROP_RANGE, "dot_crawl", 2);
			drm_property_create_range(dev, 0, "dot_crawl", 0, 1);
		if (!intel_sdvo_connector->dot_crawl)
		if (!intel_sdvo_connector->dot_crawl)
			return false;
			return false;


		intel_sdvo_connector->dot_crawl->values[0] = 0;
		intel_sdvo_connector->dot_crawl->values[1] = 1;
		drm_connector_attach_property(connector,
		drm_connector_attach_property(connector,
					      intel_sdvo_connector->dot_crawl,
					      intel_sdvo_connector->dot_crawl,
					      intel_sdvo_connector->cur_dot_crawl);
					      intel_sdvo_connector->cur_dot_crawl);
Loading