Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Dave Airlie <airlied@redhat.com>

authored by

Sascha Hauer and committed by
Dave Airlie
d9bc3c02 4a67d391

+56 -121
+29 -40
drivers/gpu/drm/drm_crtc.c
··· 742 742 * Other, TV specific properties: margins & TV modes. 743 743 */ 744 744 dev->mode_config.tv_left_margin_property = 745 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 746 - "left margin", 2); 747 - dev->mode_config.tv_left_margin_property->values[0] = 0; 748 - dev->mode_config.tv_left_margin_property->values[1] = 100; 745 + drm_property_create_range(dev, 0, "left margin", 0, 100); 749 746 750 747 dev->mode_config.tv_right_margin_property = 751 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 752 - "right margin", 2); 753 - dev->mode_config.tv_right_margin_property->values[0] = 0; 754 - dev->mode_config.tv_right_margin_property->values[1] = 100; 748 + drm_property_create_range(dev, 0, "right margin", 0, 100); 755 749 756 750 dev->mode_config.tv_top_margin_property = 757 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 758 - "top margin", 2); 759 - dev->mode_config.tv_top_margin_property->values[0] = 0; 760 - dev->mode_config.tv_top_margin_property->values[1] = 100; 751 + drm_property_create_range(dev, 0, "top margin", 0, 100); 761 752 762 753 dev->mode_config.tv_bottom_margin_property = 763 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 764 - "bottom margin", 2); 765 - dev->mode_config.tv_bottom_margin_property->values[0] = 0; 766 - dev->mode_config.tv_bottom_margin_property->values[1] = 100; 754 + drm_property_create_range(dev, 0, "bottom margin", 0, 100); 767 755 768 756 dev->mode_config.tv_mode_property = 769 757 drm_property_create(dev, DRM_MODE_PROP_ENUM, ··· 761 773 i, modes[i]); 762 774 763 775 dev->mode_config.tv_brightness_property = 764 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 765 - "brightness", 2); 766 - dev->mode_config.tv_brightness_property->values[0] = 0; 767 - dev->mode_config.tv_brightness_property->values[1] = 100; 776 + drm_property_create_range(dev, 0, "brightness", 0, 100); 768 777 769 778 dev->mode_config.tv_contrast_property = 770 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 771 - "contrast", 2); 772 - dev->mode_config.tv_contrast_property->values[0] = 0; 773 - dev->mode_config.tv_contrast_property->values[1] = 100; 779 + drm_property_create_range(dev, 0, "contrast", 0, 100); 774 780 775 781 dev->mode_config.tv_flicker_reduction_property = 776 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 777 - "flicker reduction", 2); 778 - dev->mode_config.tv_flicker_reduction_property->values[0] = 0; 779 - dev->mode_config.tv_flicker_reduction_property->values[1] = 100; 782 + drm_property_create_range(dev, 0, "flicker reduction", 0, 100); 780 783 781 784 dev->mode_config.tv_overscan_property = 782 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 783 - "overscan", 2); 784 - dev->mode_config.tv_overscan_property->values[0] = 0; 785 - dev->mode_config.tv_overscan_property->values[1] = 100; 785 + drm_property_create_range(dev, 0, "overscan", 0, 100); 786 786 787 787 dev->mode_config.tv_saturation_property = 788 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 789 - "saturation", 2); 790 - dev->mode_config.tv_saturation_property->values[0] = 0; 791 - dev->mode_config.tv_saturation_property->values[1] = 100; 788 + drm_property_create_range(dev, 0, "saturation", 0, 100); 792 789 793 790 dev->mode_config.tv_hue_property = 794 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 795 - "hue", 2); 796 - dev->mode_config.tv_hue_property->values[0] = 0; 797 - dev->mode_config.tv_hue_property->values[1] = 100; 791 + drm_property_create_range(dev, 0, "hue", 0, 100); 798 792 799 793 return 0; 800 794 } ··· 2590 2620 return property; 2591 2621 } 2592 2622 EXPORT_SYMBOL(drm_property_create_enum); 2623 + 2624 + struct drm_property *drm_property_create_range(struct drm_device *dev, int flags, 2625 + const char *name, 2626 + uint64_t min, uint64_t max) 2627 + { 2628 + struct drm_property *property; 2629 + 2630 + flags |= DRM_MODE_PROP_RANGE; 2631 + 2632 + property = drm_property_create(dev, flags, name, 2); 2633 + if (!property) 2634 + return NULL; 2635 + 2636 + property->values[0] = min; 2637 + property->values[1] = max; 2638 + 2639 + return property; 2640 + } 2641 + EXPORT_SYMBOL(drm_property_create_range); 2593 2642 2594 2643 int drm_property_add_enum(struct drm_property *property, int index, 2595 2644 uint64_t value, const char *name)
+1 -4
drivers/gpu/drm/gma500/framebuffer.c
··· 725 725 if (dev_priv->backlight_property) 726 726 return 0; 727 727 728 - backlight = drm_property_create(dev, DRM_MODE_PROP_RANGE, 729 - "backlight", 2); 730 - backlight->values[0] = 0; 731 - backlight->values[1] = 100; 728 + backlight = drm_property_create_range(dev, 0, "backlight", 0, 100); 732 729 733 730 dev_priv->backlight_property = backlight; 734 731
+6 -22
drivers/gpu/drm/gma500/psb_intel_sdvo.c
··· 2312 2312 psb_intel_sdvo_connector->max_##name = data_value[0]; \ 2313 2313 psb_intel_sdvo_connector->cur_##name = response; \ 2314 2314 psb_intel_sdvo_connector->name = \ 2315 - drm_property_create(dev, DRM_MODE_PROP_RANGE, #name, 2); \ 2315 + drm_property_create_range(dev, 0, #name, 0, data_value[0]); \ 2316 2316 if (!psb_intel_sdvo_connector->name) return false; \ 2317 - psb_intel_sdvo_connector->name->values[0] = 0; \ 2318 - psb_intel_sdvo_connector->name->values[1] = data_value[0]; \ 2319 2317 drm_connector_attach_property(connector, \ 2320 2318 psb_intel_sdvo_connector->name, \ 2321 2319 psb_intel_sdvo_connector->cur_##name); \ ··· 2347 2349 psb_intel_sdvo_connector->left_margin = data_value[0] - response; 2348 2350 psb_intel_sdvo_connector->right_margin = psb_intel_sdvo_connector->left_margin; 2349 2351 psb_intel_sdvo_connector->left = 2350 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2351 - "left_margin", 2); 2352 + drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]); 2352 2353 if (!psb_intel_sdvo_connector->left) 2353 2354 return false; 2354 2355 2355 - psb_intel_sdvo_connector->left->values[0] = 0; 2356 - psb_intel_sdvo_connector->left->values[1] = data_value[0]; 2357 2356 drm_connector_attach_property(connector, 2358 2357 psb_intel_sdvo_connector->left, 2359 2358 psb_intel_sdvo_connector->left_margin); 2360 2359 2361 2360 psb_intel_sdvo_connector->right = 2362 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2363 - "right_margin", 2); 2361 + drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]); 2364 2362 if (!psb_intel_sdvo_connector->right) 2365 2363 return false; 2366 2364 2367 - psb_intel_sdvo_connector->right->values[0] = 0; 2368 - psb_intel_sdvo_connector->right->values[1] = data_value[0]; 2369 2365 drm_connector_attach_property(connector, 2370 2366 psb_intel_sdvo_connector->right, 2371 2367 psb_intel_sdvo_connector->right_margin); ··· 2383 2391 psb_intel_sdvo_connector->top_margin = data_value[0] - response; 2384 2392 psb_intel_sdvo_connector->bottom_margin = psb_intel_sdvo_connector->top_margin; 2385 2393 psb_intel_sdvo_connector->top = 2386 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2387 - "top_margin", 2); 2394 + drm_property_create_range(dev, 0, "top_margin", 0, data_value[0]); 2388 2395 if (!psb_intel_sdvo_connector->top) 2389 2396 return false; 2390 2397 2391 - psb_intel_sdvo_connector->top->values[0] = 0; 2392 - psb_intel_sdvo_connector->top->values[1] = data_value[0]; 2393 2398 drm_connector_attach_property(connector, 2394 2399 psb_intel_sdvo_connector->top, 2395 2400 psb_intel_sdvo_connector->top_margin); 2396 2401 2397 2402 psb_intel_sdvo_connector->bottom = 2398 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2399 - "bottom_margin", 2); 2403 + drm_property_create_range(dev, 0, "bottom_margin", 0, data_value[0]); 2400 2404 if (!psb_intel_sdvo_connector->bottom) 2401 2405 return false; 2402 2406 2403 - psb_intel_sdvo_connector->bottom->values[0] = 0; 2404 - psb_intel_sdvo_connector->bottom->values[1] = data_value[0]; 2405 2407 drm_connector_attach_property(connector, 2406 2408 psb_intel_sdvo_connector->bottom, 2407 2409 psb_intel_sdvo_connector->bottom_margin); ··· 2424 2438 psb_intel_sdvo_connector->max_dot_crawl = 1; 2425 2439 psb_intel_sdvo_connector->cur_dot_crawl = response & 0x1; 2426 2440 psb_intel_sdvo_connector->dot_crawl = 2427 - drm_property_create(dev, DRM_MODE_PROP_RANGE, "dot_crawl", 2); 2441 + drm_property_create_range(dev, 0, "dot_crawl", 0, 1); 2428 2442 if (!psb_intel_sdvo_connector->dot_crawl) 2429 2443 return false; 2430 2444 2431 - psb_intel_sdvo_connector->dot_crawl->values[0] = 0; 2432 - psb_intel_sdvo_connector->dot_crawl->values[1] = 1; 2433 2445 drm_connector_attach_property(connector, 2434 2446 psb_intel_sdvo_connector->dot_crawl, 2435 2447 psb_intel_sdvo_connector->cur_dot_crawl);
+1 -4
drivers/gpu/drm/i2c/ch7006_drv.c
··· 252 252 253 253 drm_mode_create_tv_properties(dev, NUM_TV_NORMS, ch7006_tv_norm_names); 254 254 255 - priv->scale_property = drm_property_create(dev, DRM_MODE_PROP_RANGE, 256 - "scale", 2); 257 - priv->scale_property->values[0] = 0; 258 - priv->scale_property->values[1] = 2; 255 + priv->scale_property = drm_property_create_range(dev, 0, "scale", 0, 2); 259 256 260 257 drm_connector_attach_property(connector, conf->tv_select_subconnector_property, 261 258 priv->select_subconnector);
+8 -22
drivers/gpu/drm/i915/intel_sdvo.c
··· 2277 2277 intel_sdvo_connector->max_##name = data_value[0]; \ 2278 2278 intel_sdvo_connector->cur_##name = response; \ 2279 2279 intel_sdvo_connector->name = \ 2280 - drm_property_create(dev, DRM_MODE_PROP_RANGE, #name, 2); \ 2280 + drm_property_create_range(dev, 0, #name, 0, data_value[0]); \ 2281 2281 if (!intel_sdvo_connector->name) return false; \ 2282 - intel_sdvo_connector->name->values[0] = 0; \ 2283 - intel_sdvo_connector->name->values[1] = data_value[0]; \ 2284 2282 drm_connector_attach_property(connector, \ 2285 2283 intel_sdvo_connector->name, \ 2286 2284 intel_sdvo_connector->cur_##name); \ ··· 2312 2314 intel_sdvo_connector->left_margin = data_value[0] - response; 2313 2315 intel_sdvo_connector->right_margin = intel_sdvo_connector->left_margin; 2314 2316 intel_sdvo_connector->left = 2315 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2316 - "left_margin", 2); 2317 + drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]); 2317 2318 if (!intel_sdvo_connector->left) 2318 2319 return false; 2319 2320 2320 - intel_sdvo_connector->left->values[0] = 0; 2321 - intel_sdvo_connector->left->values[1] = data_value[0]; 2322 2321 drm_connector_attach_property(connector, 2323 2322 intel_sdvo_connector->left, 2324 2323 intel_sdvo_connector->left_margin); 2325 2324 2326 2325 intel_sdvo_connector->right = 2327 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2328 - "right_margin", 2); 2326 + drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]); 2329 2327 if (!intel_sdvo_connector->right) 2330 2328 return false; 2331 2329 2332 - intel_sdvo_connector->right->values[0] = 0; 2333 - intel_sdvo_connector->right->values[1] = data_value[0]; 2334 2330 drm_connector_attach_property(connector, 2335 2331 intel_sdvo_connector->right, 2336 2332 intel_sdvo_connector->right_margin); ··· 2348 2356 intel_sdvo_connector->top_margin = data_value[0] - response; 2349 2357 intel_sdvo_connector->bottom_margin = intel_sdvo_connector->top_margin; 2350 2358 intel_sdvo_connector->top = 2351 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2352 - "top_margin", 2); 2359 + drm_property_create_range(dev, 0, 2360 + "top_margin", 0, data_value[0]); 2353 2361 if (!intel_sdvo_connector->top) 2354 2362 return false; 2355 2363 2356 - intel_sdvo_connector->top->values[0] = 0; 2357 - intel_sdvo_connector->top->values[1] = data_value[0]; 2358 2364 drm_connector_attach_property(connector, 2359 2365 intel_sdvo_connector->top, 2360 2366 intel_sdvo_connector->top_margin); 2361 2367 2362 2368 intel_sdvo_connector->bottom = 2363 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 2364 - "bottom_margin", 2); 2369 + drm_property_create_range(dev, 0, 2370 + "bottom_margin", 0, data_value[0]); 2365 2371 if (!intel_sdvo_connector->bottom) 2366 2372 return false; 2367 2373 2368 - intel_sdvo_connector->bottom->values[0] = 0; 2369 - intel_sdvo_connector->bottom->values[1] = data_value[0]; 2370 2374 drm_connector_attach_property(connector, 2371 2375 intel_sdvo_connector->bottom, 2372 2376 intel_sdvo_connector->bottom_margin); ··· 2391 2403 intel_sdvo_connector->max_dot_crawl = 1; 2392 2404 intel_sdvo_connector->cur_dot_crawl = response & 0x1; 2393 2405 intel_sdvo_connector->dot_crawl = 2394 - drm_property_create(dev, DRM_MODE_PROP_RANGE, "dot_crawl", 2); 2406 + drm_property_create_range(dev, 0, "dot_crawl", 0, 1); 2395 2407 if (!intel_sdvo_connector->dot_crawl) 2396 2408 return false; 2397 2409 2398 - intel_sdvo_connector->dot_crawl->values[0] = 0; 2399 - intel_sdvo_connector->dot_crawl->values[1] = 1; 2400 2410 drm_connector_attach_property(connector, 2401 2411 intel_sdvo_connector->dot_crawl, 2402 2412 intel_sdvo_connector->cur_dot_crawl);
+2 -8
drivers/gpu/drm/nouveau/nouveau_display.c
··· 281 281 PROP_ENUM(disp->underscan_property, gen, "underscan", underscan); 282 282 283 283 disp->underscan_hborder_property = 284 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 285 - "underscan hborder", 2); 286 - disp->underscan_hborder_property->values[0] = 0; 287 - disp->underscan_hborder_property->values[1] = 128; 284 + drm_property_create_range(dev, 0, "underscan hborder", 0, 128); 288 285 289 286 disp->underscan_vborder_property = 290 - drm_property_create(dev, DRM_MODE_PROP_RANGE, 291 - "underscan vborder", 2); 292 - disp->underscan_vborder_property->values[0] = 0; 293 - disp->underscan_vborder_property->values[1] = 128; 287 + drm_property_create_range(dev, 0, "underscan vborder", 0, 128); 294 288 295 289 dev->mode_config.funcs = (void *)&nouveau_mode_config_funcs; 296 290 dev->mode_config.fb_base = pci_resource_start(dev->pdev, 1);
+6 -21
drivers/gpu/drm/radeon/radeon_display.c
··· 1152 1152 1153 1153 if (rdev->is_atom_bios) { 1154 1154 rdev->mode_info.coherent_mode_property = 1155 - drm_property_create(rdev->ddev, 1156 - DRM_MODE_PROP_RANGE, 1157 - "coherent", 2); 1155 + drm_property_create_range(rdev->ddev, 0 , "coherent", 0, 1); 1158 1156 if (!rdev->mode_info.coherent_mode_property) 1159 1157 return -ENOMEM; 1160 - 1161 - rdev->mode_info.coherent_mode_property->values[0] = 0; 1162 - rdev->mode_info.coherent_mode_property->values[1] = 1; 1163 1158 } 1164 1159 1165 1160 if (!ASIC_IS_AVIVO(rdev)) { ··· 1166 1171 } 1167 1172 1168 1173 rdev->mode_info.load_detect_property = 1169 - drm_property_create(rdev->ddev, 1170 - DRM_MODE_PROP_RANGE, 1171 - "load detection", 2); 1174 + drm_property_create_range(rdev->ddev, 0, "load detection", 0, 1); 1172 1175 if (!rdev->mode_info.load_detect_property) 1173 1176 return -ENOMEM; 1174 - rdev->mode_info.load_detect_property->values[0] = 0; 1175 - rdev->mode_info.load_detect_property->values[1] = 1; 1176 1177 1177 1178 drm_mode_create_scaling_mode_property(rdev->ddev); 1178 1179 ··· 1185 1194 radeon_underscan_enum_list, sz); 1186 1195 1187 1196 rdev->mode_info.underscan_hborder_property = 1188 - drm_property_create(rdev->ddev, 1189 - DRM_MODE_PROP_RANGE, 1190 - "underscan hborder", 2); 1197 + drm_property_create_range(rdev->ddev, 0, 1198 + "underscan hborder", 0, 128); 1191 1199 if (!rdev->mode_info.underscan_hborder_property) 1192 1200 return -ENOMEM; 1193 - rdev->mode_info.underscan_hborder_property->values[0] = 0; 1194 - rdev->mode_info.underscan_hborder_property->values[1] = 128; 1195 1201 1196 1202 rdev->mode_info.underscan_vborder_property = 1197 - drm_property_create(rdev->ddev, 1198 - DRM_MODE_PROP_RANGE, 1199 - "underscan vborder", 2); 1203 + drm_property_create_range(rdev->ddev, 0, 1204 + "underscan vborder", 0, 128); 1200 1205 if (!rdev->mode_info.underscan_vborder_property) 1201 1206 return -ENOMEM; 1202 - rdev->mode_info.underscan_vborder_property->values[0] = 0; 1203 - rdev->mode_info.underscan_vborder_property->values[1] = 128; 1204 1207 1205 1208 return 0; 1206 1209 }
+3
include/drm/drm_crtc.h
··· 912 912 const char *name, 913 913 const struct drm_prop_enum_list *props, 914 914 int num_values); 915 + struct drm_property *drm_property_create_range(struct drm_device *dev, int flags, 916 + const char *name, 917 + uint64_t min, uint64_t max); 915 918 extern void drm_property_destroy(struct drm_device *dev, struct drm_property *property); 916 919 extern int drm_property_add_enum(struct drm_property *property, int index, 917 920 uint64_t value, const char *name);