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

Signed-off-by: Sascha Hauer <s.ha...@pengutronix.de>
---
 drivers/gpu/drm/drm_crtc.c                |   69 ++++++++++++-----------------
 drivers/gpu/drm/gma500/framebuffer.c      |    5 +--
 drivers/gpu/drm/gma500/psb_intel_sdvo.c   |   28 +++---------
 drivers/gpu/drm/i2c/ch7006_drv.c          |    5 +--
 drivers/gpu/drm/i915/intel_sdvo.c         |   30 +++---------
 drivers/gpu/drm/nouveau/nouveau_display.c |   10 +---
 drivers/gpu/drm/radeon/radeon_display.c   |   27 +++---------
 include/drm/drm_crtc.h                    |    3 +
 8 files changed, 56 insertions(+), 121 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 3988c62..1ebcedf 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -742,28 +742,16 @@ int drm_mode_create_tv_properties(struct drm_device *dev, 
int num_modes,
         * Other, TV specific properties: margins & TV modes.
         */
        dev->mode_config.tv_left_margin_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "left margin", 2);
-       dev->mode_config.tv_left_margin_property->values[0] = 0;
-       dev->mode_config.tv_left_margin_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "left margin", 0, 100);
 
        dev->mode_config.tv_right_margin_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "right margin", 2);
-       dev->mode_config.tv_right_margin_property->values[0] = 0;
-       dev->mode_config.tv_right_margin_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "right margin", 0, 100);
 
        dev->mode_config.tv_top_margin_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "top margin", 2);
-       dev->mode_config.tv_top_margin_property->values[0] = 0;
-       dev->mode_config.tv_top_margin_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "top margin", 0, 100);
 
        dev->mode_config.tv_bottom_margin_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "bottom margin", 2);
-       dev->mode_config.tv_bottom_margin_property->values[0] = 0;
-       dev->mode_config.tv_bottom_margin_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "bottom margin", 0, 100);
 
        dev->mode_config.tv_mode_property =
                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]);
 
        dev->mode_config.tv_brightness_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "brightness", 2);
-       dev->mode_config.tv_brightness_property->values[0] = 0;
-       dev->mode_config.tv_brightness_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "brightness", 0, 100);
 
        dev->mode_config.tv_contrast_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "contrast", 2);
-       dev->mode_config.tv_contrast_property->values[0] = 0;
-       dev->mode_config.tv_contrast_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "contrast", 0, 100);
 
        dev->mode_config.tv_flicker_reduction_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "flicker reduction", 2);
-       dev->mode_config.tv_flicker_reduction_property->values[0] = 0;
-       dev->mode_config.tv_flicker_reduction_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "flicker reduction", 0, 100);
 
        dev->mode_config.tv_overscan_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "overscan", 2);
-       dev->mode_config.tv_overscan_property->values[0] = 0;
-       dev->mode_config.tv_overscan_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "overscan", 0, 100);
 
        dev->mode_config.tv_saturation_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "saturation", 2);
-       dev->mode_config.tv_saturation_property->values[0] = 0;
-       dev->mode_config.tv_saturation_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "saturation", 0, 100);
 
        dev->mode_config.tv_hue_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "hue", 2);
-       dev->mode_config.tv_hue_property->values[0] = 0;
-       dev->mode_config.tv_hue_property->values[1] = 100;
+               drm_property_range_create(dev, 0, "hue", 0, 100);
 
        return 0;
 }
@@ -2621,6 +2591,25 @@ struct drm_property *drm_property_enum_create(struct 
drm_device *dev, int flags,
 }
 EXPORT_SYMBOL(drm_property_enum_create);
 
+struct drm_property *drm_property_range_create(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_range_create);
+
 int drm_property_add_enum(struct drm_property *property, int index,
                          uint64_t value, const char *name)
 {
diff --git a/drivers/gpu/drm/gma500/framebuffer.c 
b/drivers/gpu/drm/gma500/framebuffer.c
index c7eadaf..f359620 100644
--- a/drivers/gpu/drm/gma500/framebuffer.c
+++ b/drivers/gpu/drm/gma500/framebuffer.c
@@ -723,10 +723,7 @@ static int psb_create_backlight_property(struct drm_device 
*dev)
        if (dev_priv->backlight_property)
                return 0;
 
-       backlight = drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                                       "backlight", 2);
-       backlight->values[0] = 0;
-       backlight->values[1] = 100;
+       backlight = drm_property_range_create(dev, 0, "backlight", 0, 100);
 
        dev_priv->backlight_property = backlight;
 
diff --git a/drivers/gpu/drm/gma500/psb_intel_sdvo.c 
b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
index 88b4297..63a11dc 100644
--- a/drivers/gpu/drm/gma500/psb_intel_sdvo.c
+++ b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
@@ -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->cur_##name = response; \
                psb_intel_sdvo_connector->name = \
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE, #name, 
2); \
+                       drm_property_range_create(dev, 0, #name, 0, 
data_value[0]); \
                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, \
                                              psb_intel_sdvo_connector->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->right_margin = 
psb_intel_sdvo_connector->left_margin;
                psb_intel_sdvo_connector->left =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "left_margin", 2);
+                       drm_property_range_create(dev, 0, "left_margin", 0, 
data_value[0]);
                if (!psb_intel_sdvo_connector->left)
                        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,
                                              psb_intel_sdvo_connector->left,
                                              
psb_intel_sdvo_connector->left_margin);
 
                psb_intel_sdvo_connector->right =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "right_margin", 2);
+                       drm_property_range_create(dev, 0, "right_margin", 0, 
data_value[0]);
                if (!psb_intel_sdvo_connector->right)
                        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,
                                              psb_intel_sdvo_connector->right,
                                              
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->bottom_margin = 
psb_intel_sdvo_connector->top_margin;
                psb_intel_sdvo_connector->top =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "top_margin", 2);
+                       drm_property_range_create(dev, 0, "top_margin", 0, 
data_value[0]);
                if (!psb_intel_sdvo_connector->top)
                        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,
                                              psb_intel_sdvo_connector->top,
                                              
psb_intel_sdvo_connector->top_margin);
 
                psb_intel_sdvo_connector->bottom =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "bottom_margin", 2);
+                       drm_property_range_create(dev, 0, "bottom_margin", 0, 
data_value[0]);
                if (!psb_intel_sdvo_connector->bottom)
                        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,
                                              psb_intel_sdvo_connector->bottom,
                                              
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->cur_dot_crawl = response & 0x1;
                psb_intel_sdvo_connector->dot_crawl =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE, 
"dot_crawl", 2);
+                       drm_property_range_create(dev, 0, "dot_crawl", 0, 1);
                if (!psb_intel_sdvo_connector->dot_crawl)
                        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,
                                              
psb_intel_sdvo_connector->dot_crawl,
                                              
psb_intel_sdvo_connector->cur_dot_crawl);
diff --git a/drivers/gpu/drm/i2c/ch7006_drv.c b/drivers/gpu/drm/i2c/ch7006_drv.c
index 07d55df..aa9be26 100644
--- a/drivers/gpu/drm/i2c/ch7006_drv.c
+++ b/drivers/gpu/drm/i2c/ch7006_drv.c
@@ -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);
 
-       priv->scale_property = drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                                  "scale", 2);
-       priv->scale_property->values[0] = 0;
-       priv->scale_property->values[1] = 2;
+       priv->scale_property = drm_property_range_create(dev, 0, "scale", 0, 2);
 
        drm_connector_attach_property(connector, 
conf->tv_select_subconnector_property,
                                      priv->select_subconnector);
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c 
b/drivers/gpu/drm/i915/intel_sdvo.c
index e334ec3..24d9e62 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -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->cur_##name = response; \
                intel_sdvo_connector->name = \
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE, #name, 
2); \
+                       drm_property_range_create(dev, 0, #name, 0, 
data_value[0]); \
                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, \
                                              intel_sdvo_connector->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->right_margin = 
intel_sdvo_connector->left_margin;
                intel_sdvo_connector->left =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "left_margin", 2);
+                       drm_property_range_create(dev, 0, "left_margin", 0, 
data_value[0]);
                if (!intel_sdvo_connector->left)
                        return false;
 
-               intel_sdvo_connector->left->values[0] = 0;
-               intel_sdvo_connector->left->values[1] = data_value[0];
                drm_connector_attach_property(connector,
                                              intel_sdvo_connector->left,
                                              
intel_sdvo_connector->left_margin);
 
                intel_sdvo_connector->right =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "right_margin", 2);
+                       drm_property_range_create(dev, 0, "right_margin", 0, 
data_value[0]);
                if (!intel_sdvo_connector->right)
                        return false;
 
-               intel_sdvo_connector->right->values[0] = 0;
-               intel_sdvo_connector->right->values[1] = data_value[0];
                drm_connector_attach_property(connector,
                                              intel_sdvo_connector->right,
                                              
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->bottom_margin = 
intel_sdvo_connector->top_margin;
                intel_sdvo_connector->top =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "top_margin", 2);
+                       drm_property_range_create(dev, 0,
+                                           "top_margin", 0, data_value[0]);
                if (!intel_sdvo_connector->top)
                        return false;
 
-               intel_sdvo_connector->top->values[0] = 0;
-               intel_sdvo_connector->top->values[1] = data_value[0];
                drm_connector_attach_property(connector,
                                              intel_sdvo_connector->top,
                                              intel_sdvo_connector->top_margin);
 
                intel_sdvo_connector->bottom =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                           "bottom_margin", 2);
+                       drm_property_range_create(dev, 0,
+                                           "bottom_margin", 0, data_value[0]);
                if (!intel_sdvo_connector->bottom)
                        return false;
 
-               intel_sdvo_connector->bottom->values[0] = 0;
-               intel_sdvo_connector->bottom->values[1] = data_value[0];
                drm_connector_attach_property(connector,
                                              intel_sdvo_connector->bottom,
                                              
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->cur_dot_crawl = response & 0x1;
                intel_sdvo_connector->dot_crawl =
-                       drm_property_create(dev, DRM_MODE_PROP_RANGE, 
"dot_crawl", 2);
+                       drm_property_range_create(dev, 0, "dot_crawl", 0, 1);
                if (!intel_sdvo_connector->dot_crawl)
                        return false;
 
-               intel_sdvo_connector->dot_crawl->values[0] = 0;
-               intel_sdvo_connector->dot_crawl->values[1] = 1;
                drm_connector_attach_property(connector,
                                              intel_sdvo_connector->dot_crawl,
                                              
intel_sdvo_connector->cur_dot_crawl);
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c 
b/drivers/gpu/drm/nouveau/nouveau_display.c
index 45adade..a16d171 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -271,16 +271,10 @@ nouveau_display_create(struct drm_device *dev)
        PROP_ENUM(disp->underscan_property, gen, "underscan", underscan);
 
        disp->underscan_hborder_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "underscan hborder", 2);
-       disp->underscan_hborder_property->values[0] = 0;
-       disp->underscan_hborder_property->values[1] = 128;
+               drm_property_range_create(dev, 0, "underscan hborder", 0, 128);
 
        disp->underscan_vborder_property =
-               drm_property_create(dev, DRM_MODE_PROP_RANGE,
-                                   "underscan vborder", 2);
-       disp->underscan_vborder_property->values[0] = 0;
-       disp->underscan_vborder_property->values[1] = 128;
+               drm_property_range_create(dev, 0, "underscan vborder", 0, 128);
 
        dev->mode_config.funcs = (void *)&nouveau_mode_config_funcs;
        dev->mode_config.fb_base = pci_resource_start(dev->pdev, 1);
diff --git a/drivers/gpu/drm/radeon/radeon_display.c 
b/drivers/gpu/drm/radeon/radeon_display.c
index eba3529..fd59af9 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -1152,14 +1152,9 @@ static int radeon_modeset_create_props(struct 
radeon_device *rdev)
 
        if (rdev->is_atom_bios) {
                rdev->mode_info.coherent_mode_property =
-                       drm_property_create(rdev->ddev,
-                                           DRM_MODE_PROP_RANGE,
-                                           "coherent", 2);
+                       drm_property_range_create(rdev->ddev, 0 , "coherent", 
0, 1);
                if (!rdev->mode_info.coherent_mode_property)
                        return -ENOMEM;
-
-               rdev->mode_info.coherent_mode_property->values[0] = 0;
-               rdev->mode_info.coherent_mode_property->values[1] = 1;
        }
 
        if (!ASIC_IS_AVIVO(rdev)) {
@@ -1171,13 +1166,9 @@ static int radeon_modeset_create_props(struct 
radeon_device *rdev)
        }
 
        rdev->mode_info.load_detect_property =
-               drm_property_create(rdev->ddev,
-                                   DRM_MODE_PROP_RANGE,
-                                   "load detection", 2);
+               drm_property_range_create(rdev->ddev, 0, "load detection", 0, 
1);
        if (!rdev->mode_info.load_detect_property)
                return -ENOMEM;
-       rdev->mode_info.load_detect_property->values[0] = 0;
-       rdev->mode_info.load_detect_property->values[1] = 1;
 
        drm_mode_create_scaling_mode_property(rdev->ddev);
 
@@ -1194,22 +1185,16 @@ static int radeon_modeset_create_props(struct 
radeon_device *rdev)
                                    radeon_underscan_enum_list, sz);
 
        rdev->mode_info.underscan_hborder_property =
-               drm_property_create(rdev->ddev,
-                                       DRM_MODE_PROP_RANGE,
-                                       "underscan hborder", 2);
+               drm_property_range_create(rdev->ddev, 0,
+                                       "underscan hborder", 0, 128);
        if (!rdev->mode_info.underscan_hborder_property)
                return -ENOMEM;
-       rdev->mode_info.underscan_hborder_property->values[0] = 0;
-       rdev->mode_info.underscan_hborder_property->values[1] = 128;
 
        rdev->mode_info.underscan_vborder_property =
-               drm_property_create(rdev->ddev,
-                                       DRM_MODE_PROP_RANGE,
-                                       "underscan vborder", 2);
+               drm_property_range_create(rdev->ddev, 0,
+                                       "underscan vborder", 0, 128);
        if (!rdev->mode_info.underscan_vborder_property)
                return -ENOMEM;
-       rdev->mode_info.underscan_vborder_property->values[0] = 0;
-       rdev->mode_info.underscan_vborder_property->values[1] = 128;
 
        return 0;
 }
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index cdbbb40..c03ad9a 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -912,6 +912,9 @@ extern struct drm_property *drm_property_enum_create(struct 
drm_device *dev, int
                                         const char *name,
                                         const struct drm_prop_enum_list *props,
                                         int num_values);
+struct drm_property *drm_property_range_create(struct drm_device *dev, int 
flags,
+                                        const char *name,
+                                        uint64_t min, uint64_t max);
 extern void drm_property_destroy(struct drm_device *dev, struct drm_property 
*property);
 extern int drm_property_add_enum(struct drm_property *property, int index,
                                 uint64_t value, const char *name);
-- 
1.7.8.3

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to