Lines Matching defs:obj

39 int __drm_mode_object_add(struct drm_device *dev, struct drm_mode_object *obj,
48 ret = idr_alloc(&dev->mode_config.object_idr, register_obj ? obj : NULL,
55 obj->id = ret;
56 obj->type = obj_type;
58 obj->free_cb = obj_free_cb;
59 kref_init(&obj->refcount);
70 * @obj: object pointer, used to generate unique ID
80 struct drm_mode_object *obj, uint32_t obj_type)
82 return __drm_mode_object_add(dev, obj, obj_type, true, NULL);
86 struct drm_mode_object *obj)
89 idr_replace(&dev->mode_config.object_idr, obj, obj->id);
140 struct drm_mode_object *obj = NULL;
143 obj = idr_find(&dev->mode_config.object_idr, id);
144 if (obj && type != DRM_MODE_OBJECT_ANY && obj->type != type)
145 obj = NULL;
146 if (obj && obj->id != id)
147 obj = NULL;
149 if (obj && drm_mode_object_lease_required(obj->type) &&
150 !_drm_lease_held(file_priv, obj->id)) {
152 obj = NULL;
155 if (obj && obj->free_cb) {
156 if (!kref_get_unless_zero(&obj->refcount))
157 obj = NULL;
161 return obj;
179 struct drm_mode_object *obj = NULL;
181 obj = __drm_mode_object_find(dev, file_priv, id, type);
182 return obj;
188 * @obj: DRM mode object
194 void drm_mode_object_put(struct drm_mode_object *obj)
196 if (obj->free_cb) {
197 DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
198 kref_put(&obj->refcount, obj->free_cb);
205 * @obj: DRM mode object
211 void drm_mode_object_get(struct drm_mode_object *obj)
213 if (obj->free_cb) {
214 DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
215 kref_get(&obj->refcount);
222 * @obj: drm modeset object
233 void drm_object_attach_property(struct drm_mode_object *obj,
237 int count = obj->properties->count;
241 if (obj->type == DRM_MODE_OBJECT_CONNECTOR) {
242 struct drm_connector *connector = obj_to_connector(obj);
254 obj->type);
258 obj->properties->properties[count] = property;
259 obj->properties->values[count] = init_val;
260 obj->properties->count++;
266 * @obj: drm mode object to set property value for
283 int drm_object_property_set_value(struct drm_mode_object *obj,
291 for (i = 0; i < obj->properties->count; i++) {
292 if (obj->properties->properties[i] == property) {
293 obj->properties->values[i] = val;
302 static int __drm_object_property_get_prop_value(struct drm_mode_object *obj,
308 for (i = 0; i < obj->properties->count; i++) {
309 if (obj->properties->properties[i] == property) {
310 *val = obj->properties->values[i];
318 static int __drm_object_property_get_value(struct drm_mode_object *obj,
324 * their value in obj->properties->values[].. mostly to avoid
329 return drm_atomic_get_property(obj, property, val);
331 return __drm_object_property_get_prop_value(obj, property, val);
336 * @obj: drm mode object to get property value from
351 int drm_object_property_get_value(struct drm_mode_object *obj,
356 return __drm_object_property_get_value(obj, property, val);
363 * @obj: drm mode object to get property value from
376 int drm_object_property_get_default_value(struct drm_mode_object *obj,
382 return __drm_object_property_get_prop_value(obj, property, val);
387 int drm_mode_object_get_properties(struct drm_mode_object *obj, bool atomic,
394 for (i = 0, count = 0; i < obj->properties->count; i++) {
395 struct drm_property *prop = obj->properties->properties[i];
402 ret = __drm_object_property_get_value(obj, prop, &val);
439 struct drm_mode_object *obj;
448 obj = drm_mode_object_find(dev, file_priv, arg->obj_id, arg->obj_type);
449 if (!obj) {
453 if (!obj->properties) {
458 ret = drm_mode_object_get_properties(obj, file_priv->atomic,
464 drm_mode_object_put(obj);
470 struct drm_property *drm_mode_obj_find_prop_id(struct drm_mode_object *obj,
475 for (i = 0; i < obj->properties->count; i++)
476 if (obj->properties->properties[i]->base.id == prop_id)
477 return obj->properties->properties[i];
482 static int set_property_legacy(struct drm_mode_object *obj,
495 switch (obj->type) {
497 ret = drm_connector_set_obj_prop(obj, prop, prop_value);
500 ret = drm_mode_crtc_set_obj_prop(obj, prop, prop_value);
503 ret = drm_mode_plane_set_obj_prop(obj_to_plane(obj),
513 static int set_property_atomic(struct drm_mode_object *obj,
532 if (obj->type != DRM_MODE_OBJECT_CONNECTOR) {
538 obj_to_connector(obj),
541 ret = drm_atomic_set_property(state, file_priv, obj, prop, prop_value, false);