提交 d9bc3c02 编写于 作者: S Sascha Hauer 提交者: Dave Airlie

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: NSascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 4a67d391
...@@ -742,28 +742,16 @@ int drm_mode_create_tv_properties(struct drm_device *dev, int num_modes, ...@@ -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, ...@@ -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, ...@@ -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)
{ {
......
...@@ -725,10 +725,7 @@ static int psb_create_backlight_property(struct drm_device *dev) ...@@ -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;
......
...@@ -2312,10 +2312,8 @@ static bool psb_intel_sdvo_tv_create_property(struct psb_intel_sdvo *psb_intel_s ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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);
......
...@@ -252,10 +252,7 @@ static int ch7006_encoder_create_resources(struct drm_encoder *encoder, ...@@ -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);
......
...@@ -2277,10 +2277,8 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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);
......
...@@ -281,16 +281,10 @@ nouveau_display_create(struct drm_device *dev) ...@@ -281,16 +281,10 @@ nouveau_display_create(struct drm_device *dev)
PROP_ENUM(disp->underscan_property, gen, "underscan", underscan); PROP_ENUM(disp->underscan_property, gen, "underscan", underscan);
disp->underscan_hborder_property = disp->underscan_hborder_property =
drm_property_create(dev, DRM_MODE_PROP_RANGE, drm_property_create_range(dev, 0, "underscan hborder", 0, 128);
"underscan hborder", 2);
disp->underscan_hborder_property->values[0] = 0;
disp->underscan_hborder_property->values[1] = 128;
disp->underscan_vborder_property = disp->underscan_vborder_property =
drm_property_create(dev, DRM_MODE_PROP_RANGE, drm_property_create_range(dev, 0, "underscan vborder", 0, 128);
"underscan vborder", 2);
disp->underscan_vborder_property->values[0] = 0;
disp->underscan_vborder_property->values[1] = 128;
dev->mode_config.funcs = (void *)&nouveau_mode_config_funcs; dev->mode_config.funcs = (void *)&nouveau_mode_config_funcs;
dev->mode_config.fb_base = pci_resource_start(dev->pdev, 1); dev->mode_config.fb_base = pci_resource_start(dev->pdev, 1);
......
...@@ -1152,14 +1152,9 @@ static int radeon_modeset_create_props(struct radeon_device *rdev) ...@@ -1152,14 +1152,9 @@ static int radeon_modeset_create_props(struct radeon_device *rdev)
if (rdev->is_atom_bios) { if (rdev->is_atom_bios) {
rdev->mode_info.coherent_mode_property = rdev->mode_info.coherent_mode_property =
drm_property_create(rdev->ddev, drm_property_create_range(rdev->ddev, 0 , "coherent", 0, 1);
DRM_MODE_PROP_RANGE,
"coherent", 2);
if (!rdev->mode_info.coherent_mode_property) if (!rdev->mode_info.coherent_mode_property)
return -ENOMEM; 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)) { if (!ASIC_IS_AVIVO(rdev)) {
...@@ -1171,13 +1166,9 @@ static int radeon_modeset_create_props(struct radeon_device *rdev) ...@@ -1171,13 +1166,9 @@ static int radeon_modeset_create_props(struct radeon_device *rdev)
} }
rdev->mode_info.load_detect_property = rdev->mode_info.load_detect_property =
drm_property_create(rdev->ddev, drm_property_create_range(rdev->ddev, 0, "load detection", 0, 1);
DRM_MODE_PROP_RANGE,
"load detection", 2);
if (!rdev->mode_info.load_detect_property) if (!rdev->mode_info.load_detect_property)
return -ENOMEM; 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); drm_mode_create_scaling_mode_property(rdev->ddev);
...@@ -1194,22 +1185,16 @@ static int radeon_modeset_create_props(struct radeon_device *rdev) ...@@ -1194,22 +1185,16 @@ static int radeon_modeset_create_props(struct radeon_device *rdev)
radeon_underscan_enum_list, sz); radeon_underscan_enum_list, sz);
rdev->mode_info.underscan_hborder_property = rdev->mode_info.underscan_hborder_property =
drm_property_create(rdev->ddev, drm_property_create_range(rdev->ddev, 0,
DRM_MODE_PROP_RANGE, "underscan hborder", 0, 128);
"underscan hborder", 2);
if (!rdev->mode_info.underscan_hborder_property) if (!rdev->mode_info.underscan_hborder_property)
return -ENOMEM; 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 = rdev->mode_info.underscan_vborder_property =
drm_property_create(rdev->ddev, drm_property_create_range(rdev->ddev, 0,
DRM_MODE_PROP_RANGE, "underscan vborder", 0, 128);
"underscan vborder", 2);
if (!rdev->mode_info.underscan_vborder_property) if (!rdev->mode_info.underscan_vborder_property)
return -ENOMEM; return -ENOMEM;
rdev->mode_info.underscan_vborder_property->values[0] = 0;
rdev->mode_info.underscan_vborder_property->values[1] = 128;
return 0; return 0;
} }
......
...@@ -912,6 +912,9 @@ extern struct drm_property *drm_property_create_enum(struct drm_device *dev, int ...@@ -912,6 +912,9 @@ extern struct drm_property *drm_property_create_enum(struct drm_device *dev, int
const char *name, const char *name,
const struct drm_prop_enum_list *props, const struct drm_prop_enum_list *props,
int num_values); int num_values);
struct drm_property *drm_property_create_range(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 void drm_property_destroy(struct drm_device *dev, struct drm_property *property);
extern int drm_property_add_enum(struct drm_property *property, int index, extern int drm_property_add_enum(struct drm_property *property, int index,
uint64_t value, const char *name); uint64_t value, const char *name);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册