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))
151 obj = NULL;
153 if (obj && obj->free_cb) {
154 if (!kref_get_unless_zero(&obj->refcount))
155 obj = NULL;
159 return obj;
177 struct drm_mode_object *obj = NULL;
179 obj = __drm_mode_object_find(dev, file_priv, id, type);
180 return obj;
186 * @obj: DRM mode object
192 void drm_mode_object_put(struct drm_mode_object *obj)
194 if (obj->free_cb) {
195 DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
196 kref_put(&obj->refcount, obj->free_cb);
203 * @obj: DRM mode object
209 void drm_mode_object_get(struct drm_mode_object *obj)
211 if (obj->free_cb) {
212 DRM_DEBUG("OBJ ID: %d (%d)\n", obj->id, kref_read(&obj->refcount));
213 kref_get(&obj->refcount);
220 * @obj: drm modeset object
231 void drm_object_attach_property(struct drm_mode_object *obj,
235 int count = obj->properties->count;
239 if (obj->type == DRM_MODE_OBJECT_CONNECTOR) {
240 struct drm_connector *connector = obj_to_connector(obj);
252 obj->type);
256 obj->properties->properties[count] = property;
257 obj->properties->values[count] = init_val;
258 obj->properties->count++;
264 * @obj: drm mode object to set property value for
281 int drm_object_property_set_value(struct drm_mode_object *obj,
289 for (i = 0; i < obj->properties->count; i++) {
290 if (obj->properties->properties[i] == property) {
291 obj->properties->values[i] = val;
300 static int __drm_object_property_get_value(struct drm_mode_object *obj,
307 * their value in obj->properties->values[].. mostly to avoid
312 return drm_atomic_get_property(obj, property, val);
314 for (i = 0; i < obj->properties->count; i++) {
315 if (obj->properties->properties[i] == property) {
316 *val = obj->properties->values[i];
327 * @obj: drm mode object to get property value from
342 int drm_object_property_get_value(struct drm_mode_object *obj,
347 return __drm_object_property_get_value(obj, property, val);
352 int drm_mode_object_get_properties(struct drm_mode_object *obj, bool atomic,
359 for (i = 0, count = 0; i < obj->properties->count; i++) {
360 struct drm_property *prop = obj->properties->properties[i];
367 ret = __drm_object_property_get_value(obj, prop, &val);
404 struct drm_mode_object *obj;
413 obj = drm_mode_object_find(dev, file_priv, arg->obj_id, arg->obj_type);
414 if (!obj) {
418 if (!obj->properties) {
423 ret = drm_mode_object_get_properties(obj, file_priv->atomic,
429 drm_mode_object_put(obj);
435 struct drm_property *drm_mode_obj_find_prop_id(struct drm_mode_object *obj,
440 for (i = 0; i < obj->properties->count; i++)
441 if (obj->properties->properties[i]->base.id == prop_id)
442 return obj->properties->properties[i];
447 static int set_property_legacy(struct drm_mode_object *obj,
460 switch (obj->type) {
462 ret = drm_connector_set_obj_prop(obj, prop, prop_value);
465 ret = drm_mode_crtc_set_obj_prop(obj, prop, prop_value);
468 ret = drm_mode_plane_set_obj_prop(obj_to_plane(obj),
478 static int set_property_atomic(struct drm_mode_object *obj,
497 if (obj->type != DRM_MODE_OBJECT_CONNECTOR) {
503 obj_to_connector(obj),
506 ret = drm_atomic_set_property(state, file_priv, obj, prop, prop_value);