Lines Matching refs:property

95 	struct drm_property *property = NULL;  in drm_property_create()  local
104 property = kzalloc(sizeof(struct drm_property), GFP_KERNEL); in drm_property_create()
105 if (!property) in drm_property_create()
108 property->dev = dev; in drm_property_create()
111 property->values = kcalloc(num_values, sizeof(uint64_t), in drm_property_create()
113 if (!property->values) in drm_property_create()
117 ret = drm_mode_object_add(dev, &property->base, DRM_MODE_OBJECT_PROPERTY); in drm_property_create()
121 property->flags = flags; in drm_property_create()
122 property->num_values = num_values; in drm_property_create()
123 INIT_LIST_HEAD(&property->enum_list); in drm_property_create()
125 strncpy(property->name, name, DRM_PROP_NAME_LEN); in drm_property_create()
126 property->name[DRM_PROP_NAME_LEN-1] = '\0'; in drm_property_create()
128 list_add_tail(&property->head, &dev->mode_config.property_list); in drm_property_create()
130 return property; in drm_property_create()
132 kfree(property->values); in drm_property_create()
133 kfree(property); in drm_property_create()
162 struct drm_property *property; in drm_property_create_enum() local
167 property = drm_property_create(dev, flags, name, num_values); in drm_property_create_enum()
168 if (!property) in drm_property_create_enum()
172 ret = drm_property_add_enum(property, in drm_property_create_enum()
176 drm_property_destroy(dev, property); in drm_property_create_enum()
181 return property; in drm_property_create_enum()
211 struct drm_property *property; in drm_property_create_bitmask() local
217 property = drm_property_create(dev, flags, name, num_values); in drm_property_create_bitmask()
218 if (!property) in drm_property_create_bitmask()
224 ret = drm_property_add_enum(property, in drm_property_create_bitmask()
228 drm_property_destroy(dev, property); in drm_property_create_bitmask()
233 return property; in drm_property_create_bitmask()
241 struct drm_property *property; in property_create_range() local
243 property = drm_property_create(dev, flags, name, 2); in property_create_range()
244 if (!property) in property_create_range()
247 property->values[0] = min; in property_create_range()
248 property->values[1] = max; in property_create_range()
250 return property; in property_create_range()
331 struct drm_property *property; in drm_property_create_object() local
338 property = drm_property_create(dev, flags, name, 1); in drm_property_create_object()
339 if (!property) in drm_property_create_object()
342 property->values[0] = type; in drm_property_create_object()
344 return property; in drm_property_create_object()
385 int drm_property_add_enum(struct drm_property *property, in drm_property_add_enum() argument
394 if (WARN_ON(!drm_property_type_is(property, DRM_MODE_PROP_ENUM) && in drm_property_add_enum()
395 !drm_property_type_is(property, DRM_MODE_PROP_BITMASK))) in drm_property_add_enum()
402 if (WARN_ON(drm_property_type_is(property, DRM_MODE_PROP_BITMASK) && in drm_property_add_enum()
406 list_for_each_entry(prop_enum, &property->enum_list, head) { in drm_property_add_enum()
412 if (WARN_ON(index >= property->num_values)) in drm_property_add_enum()
423 property->values[index] = value; in drm_property_add_enum()
424 list_add_tail(&prop_enum->head, &property->enum_list); in drm_property_add_enum()
437 void drm_property_destroy(struct drm_device *dev, struct drm_property *property) in drm_property_destroy() argument
441 list_for_each_entry_safe(prop_enum, pt, &property->enum_list, head) { in drm_property_destroy()
446 if (property->num_values) in drm_property_destroy()
447 kfree(property->values); in drm_property_destroy()
448 drm_mode_object_unregister(dev, &property->base); in drm_property_destroy()
449 list_del(&property->head); in drm_property_destroy()
450 kfree(property); in drm_property_destroy()
458 struct drm_property *property; in drm_mode_getproperty_ioctl() local
469 property = drm_property_find(dev, file_priv, out_resp->prop_id); in drm_mode_getproperty_ioctl()
470 if (!property) in drm_mode_getproperty_ioctl()
473 strncpy(out_resp->name, property->name, DRM_PROP_NAME_LEN); in drm_mode_getproperty_ioctl()
475 out_resp->flags = property->flags; in drm_mode_getproperty_ioctl()
477 value_count = property->num_values; in drm_mode_getproperty_ioctl()
482 put_user(property->values[i], values_ptr + i)) { in drm_mode_getproperty_ioctl()
491 if (drm_property_type_is(property, DRM_MODE_PROP_ENUM) || in drm_mode_getproperty_ioctl()
492 drm_property_type_is(property, DRM_MODE_PROP_BITMASK)) { in drm_mode_getproperty_ioctl()
493 list_for_each_entry(prop_enum, &property->enum_list, head) { in drm_mode_getproperty_ioctl()
518 if (drm_property_type_is(property, DRM_MODE_PROP_BLOB)) in drm_mode_getproperty_ioctl()
872 bool drm_property_change_valid_get(struct drm_property *property, in drm_property_change_valid_get() argument
877 if (property->flags & DRM_MODE_PROP_IMMUTABLE) in drm_property_change_valid_get()
882 if (drm_property_type_is(property, DRM_MODE_PROP_RANGE)) { in drm_property_change_valid_get()
883 if (value < property->values[0] || value > property->values[1]) in drm_property_change_valid_get()
886 } else if (drm_property_type_is(property, DRM_MODE_PROP_SIGNED_RANGE)) { in drm_property_change_valid_get()
889 if (svalue < U642I64(property->values[0]) || in drm_property_change_valid_get()
890 svalue > U642I64(property->values[1])) in drm_property_change_valid_get()
893 } else if (drm_property_type_is(property, DRM_MODE_PROP_BITMASK)) { in drm_property_change_valid_get()
896 for (i = 0; i < property->num_values; i++) in drm_property_change_valid_get()
897 valid_mask |= (1ULL << property->values[i]); in drm_property_change_valid_get()
899 } else if (drm_property_type_is(property, DRM_MODE_PROP_BLOB)) { in drm_property_change_valid_get()
905 blob = drm_property_lookup_blob(property->dev, value); in drm_property_change_valid_get()
912 } else if (drm_property_type_is(property, DRM_MODE_PROP_OBJECT)) { in drm_property_change_valid_get()
917 *ref = __drm_mode_object_find(property->dev, NULL, value, in drm_property_change_valid_get()
918 property->values[0]); in drm_property_change_valid_get()
922 for (i = 0; i < property->num_values; i++) in drm_property_change_valid_get()
923 if (property->values[i] == value) in drm_property_change_valid_get()
928 void drm_property_change_valid_put(struct drm_property *property, in drm_property_change_valid_put() argument
934 if (drm_property_type_is(property, DRM_MODE_PROP_OBJECT)) { in drm_property_change_valid_put()
936 } else if (drm_property_type_is(property, DRM_MODE_PROP_BLOB)) in drm_property_change_valid_put()