Lines Matching refs:obj
40 int __drm_mode_object_add(struct drm_device *dev, struct drm_mode_object *obj, in __drm_mode_object_add() argument
49 ret = idr_alloc(&dev->mode_config.object_idr, register_obj ? obj : NULL, in __drm_mode_object_add()
56 obj->id = ret; in __drm_mode_object_add()
57 obj->type = obj_type; in __drm_mode_object_add()
59 obj->free_cb = obj_free_cb; in __drm_mode_object_add()
60 kref_init(&obj->refcount); in __drm_mode_object_add()
81 struct drm_mode_object *obj, uint32_t obj_type) in drm_mode_object_add() argument
83 return __drm_mode_object_add(dev, obj, obj_type, true, NULL); in drm_mode_object_add()
87 struct drm_mode_object *obj) in drm_mode_object_register() argument
90 idr_replace(&dev->mode_config.object_idr, obj, obj->id); in drm_mode_object_register()
141 struct drm_mode_object *obj = NULL; in __drm_mode_object_find() local
144 obj = idr_find(&dev->mode_config.object_idr, id); in __drm_mode_object_find()
145 if (obj && type != DRM_MODE_OBJECT_ANY && obj->type != type) in __drm_mode_object_find()
146 obj = NULL; in __drm_mode_object_find()
147 if (obj && obj->id != id) in __drm_mode_object_find()
148 obj = NULL; in __drm_mode_object_find()
151 if (obj && drm_mode_object_lease_required(obj->type) && in __drm_mode_object_find()
152 !_drm_lease_held(file_priv, obj->id)) { in __drm_mode_object_find()
154 obj = NULL; in __drm_mode_object_find()
158 if (obj && obj->free_cb) { in __drm_mode_object_find()
159 if (!kref_get_unless_zero(&obj->refcount)) in __drm_mode_object_find()
160 obj = NULL; in __drm_mode_object_find()
164 return obj; in __drm_mode_object_find()
182 struct drm_mode_object *obj = NULL; in drm_mode_object_find() local
184 obj = __drm_mode_object_find(dev, file_priv, id, type); in drm_mode_object_find()
185 return obj; in drm_mode_object_find()
197 void drm_mode_object_put(struct drm_mode_object *obj) in drm_mode_object_put() argument
199 if (obj->free_cb) { in drm_mode_object_put()
200 DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount)); in drm_mode_object_put()
201 kref_put(&obj->refcount, obj->free_cb); in drm_mode_object_put()
214 void drm_mode_object_get(struct drm_mode_object *obj) in drm_mode_object_get() argument
216 if (obj->free_cb) { in drm_mode_object_get()
217 DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount)); in drm_mode_object_get()
218 kref_get(&obj->refcount); in drm_mode_object_get()
236 void drm_object_attach_property(struct drm_mode_object *obj, in drm_object_attach_property() argument
240 int count = obj->properties->count; in drm_object_attach_property()
244 if (obj->type == DRM_MODE_OBJECT_CONNECTOR) { in drm_object_attach_property()
245 struct drm_connector *connector = obj_to_connector(obj); in drm_object_attach_property()
257 obj->type); in drm_object_attach_property()
261 obj->properties->properties[count] = property; in drm_object_attach_property()
262 obj->properties->values[count] = init_val; in drm_object_attach_property()
263 obj->properties->count++; in drm_object_attach_property()
286 int drm_object_property_set_value(struct drm_mode_object *obj, in drm_object_property_set_value() argument
294 for (i = 0; i < obj->properties->count; i++) { in drm_object_property_set_value()
295 if (obj->properties->properties[i] == property) { in drm_object_property_set_value()
296 obj->properties->values[i] = val; in drm_object_property_set_value()
305 static int __drm_object_property_get_prop_value(struct drm_mode_object *obj, in __drm_object_property_get_prop_value() argument
311 for (i = 0; i < obj->properties->count; i++) { in __drm_object_property_get_prop_value()
312 if (obj->properties->properties[i] == property) { in __drm_object_property_get_prop_value()
313 *val = obj->properties->values[i]; in __drm_object_property_get_prop_value()
321 static int __drm_object_property_get_value(struct drm_mode_object *obj, in __drm_object_property_get_value() argument
327 if (obj->type == DRM_MODE_OBJECT_CONNECTOR) { in __drm_object_property_get_value()
328 struct drm_connector *connector = obj_to_connector(obj); in __drm_object_property_get_value()
349 return drm_atomic_get_property(obj, property, val); in __drm_object_property_get_value()
351 return __drm_object_property_get_prop_value(obj, property, val); in __drm_object_property_get_value()
371 int drm_object_property_get_value(struct drm_mode_object *obj, in drm_object_property_get_value() argument
376 return __drm_object_property_get_value(obj, property, val); in drm_object_property_get_value()
396 int drm_object_property_get_default_value(struct drm_mode_object *obj, in drm_object_property_get_default_value() argument
402 return __drm_object_property_get_prop_value(obj, property, val); in drm_object_property_get_default_value()
407 int drm_mode_object_get_properties(struct drm_mode_object *obj, bool atomic, in drm_mode_object_get_properties() argument
414 for (i = 0, count = 0; i < obj->properties->count; i++) { in drm_mode_object_get_properties()
415 struct drm_property *prop = obj->properties->properties[i]; in drm_mode_object_get_properties()
422 ret = __drm_object_property_get_value(obj, prop, &val); in drm_mode_object_get_properties()
459 struct drm_mode_object *obj; in drm_mode_obj_get_properties_ioctl() local
468 obj = drm_mode_object_find(dev, file_priv, arg->obj_id, arg->obj_type); in drm_mode_obj_get_properties_ioctl()
469 if (!obj) { in drm_mode_obj_get_properties_ioctl()
473 if (!obj->properties) { in drm_mode_obj_get_properties_ioctl()
478 ret = drm_mode_object_get_properties(obj, file_priv->atomic, in drm_mode_obj_get_properties_ioctl()
484 drm_mode_object_put(obj); in drm_mode_obj_get_properties_ioctl()
490 struct drm_property *drm_mode_obj_find_prop_id(struct drm_mode_object *obj, in drm_mode_obj_find_prop_id() argument
495 for (i = 0; i < obj->properties->count; i++) in drm_mode_obj_find_prop_id()
496 if (obj->properties->properties[i]->base.id == prop_id) in drm_mode_obj_find_prop_id()
497 return obj->properties->properties[i]; in drm_mode_obj_find_prop_id()
503 static int set_property_legacy(struct drm_mode_object *obj, in set_property_legacy() argument
516 switch (obj->type) { in set_property_legacy()
518 ret = drm_connector_set_obj_prop(obj, prop, prop_value); in set_property_legacy()
521 ret = drm_mode_crtc_set_obj_prop(obj, prop, prop_value); in set_property_legacy()
524 ret = drm_mode_plane_set_obj_prop(obj_to_plane(obj), in set_property_legacy()
534 static int set_property_atomic(struct drm_mode_object *obj, in set_property_atomic() argument
553 if (obj->type != DRM_MODE_OBJECT_CONNECTOR) { in set_property_atomic()
559 obj_to_connector(obj), in set_property_atomic()
562 } else if (obj->type == DRM_MODE_OBJECT_CONNECTOR && in set_property_atomic()
563 prop == (obj_to_connector(obj))->backlight_property) { in set_property_atomic()
564 struct drm_connector *connector = obj_to_connector(obj); in set_property_atomic()
571 ret = drm_atomic_set_property(state, file_priv, obj, prop, prop_value, false); in set_property_atomic()